文档章节

安卓手机触摸画线

dailei1021
 dailei1021
发布于 2015/10/21 11:42
字数 253
阅读 292
收藏 2

1.  定义 MyPaintView 组件

public class MyPaintView extends View {
    private List<Point> allPoint = new ArrayList<Point>();
    public MyPaintView(Context context, AttributeSet attrs) {
        super(context, attrs);
        super.setBackgroundColor(Color.WHITE);
        super.setOnTouchListener(new OnTouchListenerImp());
    }

    private class OnTouchListenerImp implements OnTouchListener {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            //Point类记录当前的X和Y坐标
            Point p = new Point((int)event.getX(),(int)event.getY());
            if(event.getAction() == MotionEvent.ACTION_DOWN) {  //判断抬起
                allPoint = new ArrayList<Point>();  //开始新的记录
                allPoint.add(p);   //记录坐标点
            } else if(event.getAction() == MotionEvent.ACTION_UP) {
                allPoint.add(p);   //记录坐标点
                MyPaintView.this.postInvalidate();  //重绘
            }
                return true;
        }
    }

    @Override
    protected void onDraw(Canvas canvas) {  //进行绘图
        Paint p = new Paint();
        p.setColor(Color.RED);   //设置颜色
        if(allPoint.size()>1) {
            Iterator<Point> iter = allPoint.iterator();
            Point first = null;
            Point last = null;
            while(iter.hasNext()) {    //迭代输出
                if(first == null) {
                    first = (Point) iter.next();
                } else {
                    if(last != null) {
                        first = last;       //修改起始点
                    }
                    last = (Point) iter.next();   //结束点
                    canvas.drawLine(first.x,first.y,last.x,last.y,p);
                }
            }
        }

        super.onDraw(canvas);
    }
}

2.  在activity_main.xml 中要注意,MyPaintView是自定义的,要加入完整的包名

<com.example.administrator.ontouchtest.MyPaintView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/paintView"/>

3.  编写MainActivity

public class MainActivity extends AppCompatActivity {
        private TextView info = null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
}


© 著作权归作者所有

共有 人打赏支持
上一篇: 提示框
下一篇: 密码显示
dailei1021
粉丝 3
博文 64
码字总数 23660
作品 0
深圳
程序员
私信 提问
android Configuration系统设置

Configuration类是专门用来描述手机设备上的配置信息。这些配置信息包括用户特定的配置项,也包括系统的动态设备配置。 程序中可调用Activity的如下方法来获取Configuration对象 //获取系统的...

张林思密达
2015/08/19
0
0
Android Monkey测试

Android Monkey测试 Android中的monkey是对app做界面压力测试的一款工具,它可以向模拟器或者真机发送一系列随机的用户操作事件、或者系统事件。 概述 Monkey是android sdk自带的一款命令行工...

youthflies
2013/12/06
0
0
如何在触摸模式(Touch Mode)下高亮显示ListView选中行

这应该是大部分Android开发者在使用ListView时会碰到问题,在解决这个问题前,需要先了解什么叫触摸模式。 触摸模式(Touch Mode),在Android SDK的官方文档中有详细解释(http://developer.a...

Dean83
2012/06/19
0
0
fastclick.js --- 解决移动端点击事件300ms延时

Fast Click 是一个简单、易用的库,专为消除移动端浏览器从物理触摸到触发点击事件之间的300ms延时。 为什么会存在延迟呢? 从你触摸按钮到触发点击事件,移动端浏览器会等待接近300ms,原因...

frwupeng517
06/26
0
0
AndroidThings之基础二 设计理念

转载自:https://blog.csdn.net/tangxiaoyin/article/details/75273491 (PS:目前AndroidThings已经走向消费级别,发布正式版本1.0版,开发板推荐树莓派3B+) 前言 2012 年 6 月,由 IoT-GSI(...

qq_28831197
05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

小白带你认识netty(三)之NioEventLoop的线程(或者reactor线程)启动(一)

在第一章中,我们看关于NioEventLoopGroup的初始化,我们知道了NioEventLoopGroup对象中有一组EventLoop数组,并且数组中的每个EventLoop对象都对应一个线程FastThreadLocalThread,那么这个...

天空小小
今天
3
0
PHP动态扩展Redis模块

查看已有模块 [root@test-a ~]# /usr/local/php/bin/php -m[PHP Modules]bz2Core...zlib[Zend Modules] 下载包,解压,生成configure文件 [root@test-a ~]# cd /usr/local/src/[ro......

野雪球
今天
3
0
在Ignite中使用线性回归算法

在本系列前面的文章中,简单介绍了一下Ignite的机器学习网格,下面会趁热打铁,结合一些示例,深入介绍Ignite支持的一些机器学习算法。 如果要找合适的数据集,会发现可用的有很多,但是对于...

李玉珏
今天
5
0
Mybatis应用学习——简单使用示例

1. 传统JDBC程序中存在的问题 1. 一个简单的JDBC程序示例: public class JDBCDemo {public static void main(String[] args) {Connection con=null;PreparedStatement statemen...

江左煤郎
今天
4
0
使用JavaScript编写iOS应用业务逻辑

JSAUIKitCocoa使你可以使用JavaScript编写对性能要求不高但可能变动性很大的iOS应用的业务逻辑部分,View组件、需要多线程支持的Model等则直接使用原生对象。 编写方式与React Native相似,但...

neal01
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部