自定义简易画板

运行效果图



新建一个自定义画笔控件,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>
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饕餮幻想家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值