当前位置:首页 » 安卓系统 » android画线

android画线

发布时间: 2022-03-05 03:02:24

1. android实现一个简单的画布,可以用手指画线条。

public class DrawView extends View {
Context mycontext;
int toasttime = 1000*60;
boolean enabletoast = true;
//之前的坐标
float preX;
float preY;
//路径
private Path path;
//画笔
public Paint paint = null;
//默认画布大小
public static int VIEW_WIDTH = 500;
public static int VIEW_HEIGHT = 600;
//
Bitmap cacheBitmap = null;
//
Canvas cacheCanvas = null;

public DrawView(Context context, AttributeSet set) {
super(context, set);
mycontext = context;
cacheBitmap = Bitmap.createBitmap(VIEW_WIDTH, VIEW_HEIGHT,
Config.ARGB_8888);
cacheCanvas = new Canvas();

path = new Path();
cacheCanvas.setBitmap(cacheBitmap);

paint = new Paint(Paint.DITHER_FLAG);
paint.setColor(Color.WHITE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(1);
paint.setAntiAlias(true);
paint.setDither(true);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();

switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(x, y);
preX = x;
preY = y;
break;
case MotionEvent.ACTION_MOVE:
path.quadTo(preX, preY, x, y);
preX = x;
preY = y;
break;
case MotionEvent.ACTION_UP:
cacheCanvas.drawPath(path, paint);
path.reset();
if(enabletoast == false){

}
break;
}
invalidate();
return true;
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint bmpPaint = new Paint();
canvas.drawBitmap(cacheBitmap, 0, 0, bmpPaint);
canvas.drawPath(path, paint);
}

}

2. android 使用canvas画线,如何保证快速画出圆滑的曲线

[mw_shl_code=java,true] RectF rect = new RectF(0, 0, radii, radii); // 圆形弧度需要的区域(左上角的x,y坐标 ,及右下角x,y坐标) Paint paint = new Paint(); paint.setColor(r.getColor(R.color.bg_color_1)); canvas.drawCircle(radii/2, radii/2, radii/2, paint);[/mw_shl_code]

3. android 如何画一条线


public class MainActivity extends Activity {
private ImageView iv;
private Bitmap baseBitmap;
private Canvas canvas;
private Paint paint;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.iv = (ImageView) this.findViewById(R.id.iv);
// 创建一张空白图片
baseBitmap = Bitmap.createBitmap(480, 640, Bitmap.Config.ARGB_8888);
// 创建一张画布
canvas = new Canvas(baseBitmap);
// 画布背景为灰色
canvas.drawColor(Color.GRAY);
// 创建画笔
paint = new Paint();
// 画笔颜色为红色
paint.setColor(Color.RED);
// 宽度5个像素
paint.setStrokeWidth(5);
// 先将灰色背景画上
canvas.drawBitmap(baseBitmap, new Matrix(), paint);
iv.setImageBitmap(baseBitmap);

iv.setOnTouchListener(new OnTouchListener() {
int startX;
int startY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// 获取手按下时的坐标
startX = (int) event.getX();
startY = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
// 获取手移动后的坐标
int stopX = (int) event.getX();
int stopY = (int) event.getY();
// 在开始和结束坐标间画一条线
canvas.drawLine(startX, startY, stopX, stopY, paint);
// 实时更新开始坐标
startX = (int) event.getX();
startY = (int) event.getY();
iv.setImageBitmap(baseBitmap);
break;
}
return true;
}
});
}
public void save(View view) {
try {
File file = new File(Environment.getExternalStorageDirectory(),
System.currentTimeMillis() + ".jpg");
OutputStream stream = new FileOutputStream(file);
baseBitmap.compress(CompressFormat.JPEG, 100, stream);
stream.close();
// 模拟一个广播,通知系统sdcard被挂载
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
intent.setData(Uri.fromFile(Environment
.getExternalStorageDirectory()));
sendBroadcast(intent);
Toast.makeText(this, "保存图片成功", 0).show();
} catch (Exception e) {
Toast.makeText(this, "保存图片失败", 0).show();
e.printStackTrace();
}
}
}


4. Android进行萤幕上图画 点和点之间画线

Android画笔里里是可以设置断断续续的风格的,可是你的代码里没有设置,估计就是你模拟器的问题了

5. android如何画一条动态直线

android画一条动态直线实现思路:

一个主view类(一个自定义view),在主view类中定义了统一的paint、bitmap、canvas,以及子类中需要用到的3个点downPoint,movePoint,upPoint。

其他子类(画直线的view、画矩形的view····)都是继承这个主view类。

在每次选择形状的时候:

1、实例化一个view类;

2、将view类加入到当前activity;

画每一种形状都是在自己的view上进行,新加进来的view覆盖前面的view。

每个子类中都有方法onTouchEvent()执行自己的操作;

具体实现代码;

public boolean onTouchEvent(MotionEventevent) {

switch(event.getAction()){

caseMotionEvent.ACTION_DOWN:

caseMotionEvent.ACTION_MOVE:

caseMotionEvent.ACTION_UP:

}

return true;

}

6. 有没有办法在android的layout中画出来一条线

可以利用TextView来实现,如果要水平线将textView的高设置为1设置背景颜色,竖线将宽设为1。如下代码:

<TextView
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#ffffff"
/>

7. Android中Path类的lineTo方法和quadTo方法画线的区别

  1. Path--->quadTo(float x1, float y1, float x2, float y2):

  2. 该方法的实现是当画弧线时会形成平滑的曲线,该曲线又称为"贝塞尔曲线"(Bezier curve),其中,x1,y1为控制点的坐标值,x2,y2为终点的坐标值;

  3. 贝塞尔曲线的形成,就比如把一条橡皮筋拉直,橡皮筋的头尾部对应起点和终点,然后从拉直的橡皮筋中选择任意一点(除头尾对应的点外)扯动橡皮筋形成的弯曲形状,而那个扯动橡皮筋的点就是控制点。

  4. 2. Path--->lineTo(float x, float y) :

  5. 该方法实现的仅仅是两点连成一线的绘制线路,这样,当用这个方法绘制曲线时,缺陷就出来了。对比前面quadTo方法lineTo方法绘制的曲线不能形成平滑的弯曲,会出现明显的两点形成一线的突痕。

8. android 中如何画一条动态的画一条直线.(即从A到慢慢运动到B点的轨迹,走过后轨迹是一条线)

首先找到这条直线的所有点,然后开启一个线程循环获取点,用Handle发送消息去画线
@Override
public void run() {
try {
for(int i = 0 ; i < myPointList.size(); i++)
{
MyPoint myPoint = myPointList1.get(i);
Message message = Message.obtain();
message.what = 2;
message.obj = myPoint;
mHandler.sendMessage(message);
Thread.sleep(100);
}
} catch (Exception e) {
e.printStackTrace();
}
}

9. android怎么画竖线

宽度设置1dp,高度看UI情况,这是最简单的,还有就是通过canvas画。

10. android已知两点坐标怎么画直线

在android的体系中,画图用的是Canvas和Paint来实现的,你可以调用里面的方法来画任何你想要的图形。

热点内容
c语言二码表 发布:2025-02-13 00:37:46 浏览:235
免费加密文件 发布:2025-02-13 00:35:00 浏览:176
菲亚特菲翔怎么区别配置 发布:2025-02-13 00:21:19 浏览:985
服务器好坏重点看什么 发布:2025-02-13 00:19:47 浏览:587
php把数据插入数据库 发布:2025-02-13 00:09:48 浏览:369
eclipse查看jar包源码 发布:2025-02-12 23:59:35 浏览:973
电脑主机服务器维修 发布:2025-02-12 23:59:26 浏览:302
sqlserver标识 发布:2025-02-12 23:51:33 浏览:463
安卓怎么玩地牢猎人 发布:2025-02-12 23:50:25 浏览:944
思乡脚本 发布:2025-02-12 23:43:32 浏览:440