Android 触屏画图
来源:互联网 发布:微博个性域名怎么隐藏 编辑:程序博客网 时间:2024/06/10 04:01
Android系统中触屏画图中主要需要解决以下问题:
1. 画图的视图,在哪上面画?
2. 怎么画?
3. 画的位置?
Android官方文档描述画图需要自定义视图(Custom View),通过重载OnDraw解决画的内容,OnMeasure处理画图的布局位置。自定义视图后,加入main.xml文件布局中,但加入布局需要在自定义视图中实现带有两个参数的构造函数(Context context,AttributeSet attrs),如自定义视图类DrawView,实现方式如下:
public DrawView(Context context,AttributeSet attrs) {super(context,attrs);//初始化对象}OnMeasure方法主要用于视图对象的大小(宽和高),在重载此方法时,必须通过调用setMeasuredDimension(int,int)来存储测量后的宽和高,否则会产生IlleagalStateException异常。
protected void onMeasure(int measuredWidth, int measuredHeight) {//计算View对象的宽和高//调用setMeasureDimension生效setMeasuredDimension(width|MeasureSpec.EXACTLY, height|MeasureSpec.EXACTLY);}
OnDraw方法在每次调用Invalidate方法后对视图进行重画,画的内容则通过此方法来实现,而画图有两个基本元素:
1. Canvas: 画布,画图的内容,画什么?
2. Paint: 如何画?
例如:Canvas画出一条线段,Paint定义线段的颜色,宽度。
画图的内容则是通过OnDraw方法实现。public void onDraw(Canvas canvas) {//画一张图片:将一张图片放在此视图中canvas.drawBitmap(mBmp, 0, 0,paint);//画出记录的点for (Point point : points) {point.draw(canvas, paint);}}画图的位置通过OnMeasure方法实现后,但由于是触屏画图则需要记录触点的位置,此过程通过实现OnTouchListener接口来捕捉该触屏事件,通过记录ACTION_MOVE和ACTION_DOWN事件中的坐标,最后在OnDraw函数中利用坐标画图一条直线,整个画图过程就完成了。
public boolean onTouch(View view, MotionEvent event) {if(event.getAction() == MotionEvent.ACTION_MOVE) {point = new FriendlyPoint(event.getX(), event.getY(), new_col, points.get(points.size() - 1), wid_mode);} else if (event.getAction() == MotionEvent.ACTION_DOWN) {point = new Point(event.getX(), event.getY(), new_col, wid_mode);} else {return false;}}
0 0
- Android 触屏画图
- android 画图
- android 画图
- android 画图
- Android画图
- Android 画图
- android 画图
- android画图
- Android画图
- Android画图
- iOS 画图 和 android 画图对比
- Android 画图方式
- Android 保存画图
- Android 画图方式
- Android画图学习总结
- Android 画图方式总结
- Android画图之Matrix
- Android画图学习总结
- html css ul li 横向导航
- Struts2 零配置(二)
- udn笔试面试网站
- VMware中linux虚拟机扩展磁盘分区
- 河北师大软件学院第17次作业
- Android 触屏画图
- 渲云客户端之按张计费
- 209.Minimum Size Subarray Sum
- Android性能优化典范
- 用Eclipse建spring mvc项目(图解)
- SSH整合开发的一些总结
- Ubuntu 安装 Sublime Text 3
- android手机 - 关于信号强度的问题
- 渲云客户端之单帧多机