运行效果图
新建一个自定义画笔控件,MyView.java:
package com.bzu.My;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View;
public class MyView extends View {
private int mLastX,mLastY;//上次触屏的位置
private int mCurrX,mCurrY;//当前触屏位置
private Bitmap mBitmap;//保存每次绘画的结果
private Paint mPaint;//绘画的笔
//参数1:当前布局,参数2:画笔的粗细
public MyView(Context context,int number) {
//初始化画笔
super(context);
mPaint=new Paint();
mPaint.setStrokeMiter(number);//设置的粗细
}
//当前View显示的时候自动回调方法
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
//得到当前View的宽度和高度
int width=getWidth();
int height=getHeight();
//如果bimap为空的话就初始化bitmap
if(mBitmap==null){
mBitmap=Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);
}
//将之前的bitmap的结果画到当前的页面上
Canvas tmpCanvas=new Canvas(mBitmap);
//在当前页面上画线
tmpCanvas.drawLine(mLastX, mLastY, mCurrX, mCurrY, mPaint);
//再把Bitmap画到canvas上
canvas.drawBitmap(mBitmap, 0, 0,mPaint);
}
//当用户触摸此View时自动回调
public boolean onTouchEvent(MotionEvent event){
mLastX=mCurrX;//记录当前坐标
mLastY=mCurrY;
mCurrX=(int) event.getX();//获取当前单击的位置
mCurrY=(int) event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://按下
mLastX=mCurrX;
mLastY=mCurrY;
break;
default:
break;
}
invalidate();//重新绘制view
return true;
}
}
调用自定义画笔控件:
import com.bzu.My.MyView;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class Show_1Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_1);
setTitle("简易画板");
<strong><span style="font-size:18px;">MyView myview=new MyView(Show_1Activity.this,10);//定义自定义的View 对象
setContentView(myview);</span></strong>
}
}