失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android画画板剖析

Android画画板剖析

时间:2021-08-21 03:08:59

相关推荐

Android画画板剖析

public class MainActivity extends AppCompatActivity {private ImageView iv;private Bitmap bitmap, backGroud; //画纸和背景图private Canvas canvas; //画布private Paint paint;//画笔@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);iv = (ImageView) findViewById(R.id.iv);iv.setImageResource(R.drawable.bg);//拿到背景图backGroud = BitmapFactory.decodeResource(getResources(), R.drawable.bg);//拿到和背景图一样大小的画纸,获取到的backGroud是一个不可变位图,Canvas创建需要一个可变位图bitmap = Bitmap.createBitmap(300, 750, backGroud.getConfig());//Canvas相当于一个画板,bitmap为画布,这段代码将bitmap作为画布放在画板上,//开始画时,画布会随之变化,也就是说bitmap会变成随之画而改变,在这里创建的Canvas和画布的大小一样canvas = new Canvas(bitmap);//拿到画笔paint = new Paint();paint.setColor(Color.RED);//设置画笔颜色为黑色// paint.setStyle(Paint.Style.FILL);//设置画笔为空心paint.setStrokeWidth(5);//添加处理规则Matrix matrix = new Matrix();//照着背景图画canvas.drawBitmap(backGroud, matrix, paint);iv.setOnTouchListener(new View.OnTouchListener() {float startX;float startY;@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {//获取按下时的坐标case MotionEvent.ACTION_DOWN:startX = event.getX();startY = event.getY();break;//获取移动时的坐标case MotionEvent.ACTION_MOVE://Canvas的宽高与iv的宽高相同且Canvas的绘图坐标系是以左上角为原点,所以iv点击处距离//iv左上角的距离即为我们要画的距离,直接在两点画线,画完之后,将改变后的画布bitmap//设置为iv的背景显示float stopX = event.getX();float stopY = event.getY();// 在开始和结束坐标间画一条线canvas.drawLine(startX, startY, stopX, stopY, paint);//实时更新坐标(通过不断画线)startX = event.getX();startY = event.getY();iv.setImageBitmap(bitmap);break;case MotionEvent.ACTION_UP:break;default:break;}return true;}});}}

如果觉得《Android画画板剖析》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。