• Android----paint触摸轨迹监听


    paint触摸轨迹监听,主要是三种而已,ACTION_DOWN,ACTION_MOVE,ACTION_UP

    public boolean onTouchEvent(MotionEvent event){
       int action = event.getAction();
       float x = event.getX();
       float y = event.getY();
       switch(action){
       case MotionEvent.ACTION_DOWN:
        mPath.moveTo(x, y);
        break;
       case MotionEvent.ACTION_MOVE:
        mPath.quadTo(mPosX, mPosY, x, y);
        break;
       case MotionEvent.ACTION_UP:
        //mPath.reset();
        break;
       }
       //记录当前触摸点得当前得坐标
       mPosX = x;
       mPosY = y;
    return true;
    }

    但是触摸绘制轨迹有两种效果,一种是手指移动完毕,轨迹出现,那么设置在ACTION_UP中:在ACTION_UP中绘制cacheCanvas.drawPath(path, paint);

    public boolean onTouchEvent(MotionEvent event) {
            // TODO Auto-generated method stub
            float x = event.getX();
            float y = event.getY();
    
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN : {
                    cur_x = x;
                    cur_y = y;
                    path.moveTo(cur_x, cur_y);
                    isMoving = true;
                    break;
                }
    
                case MotionEvent.ACTION_MOVE : {
                    if (!isMoving)
                        break;
    
                    // 二次曲线方式绘制
                    path.quadTo(cur_x, cur_y, x, y);
            //        cacheCanvas.drawPath(path, paint);
                    // 下面这个方法貌似跟上面一样
                    // path.lineTo(x, y);
                    cur_x = x;
                    cur_y = y;
                    break;
                }
    
                case MotionEvent.ACTION_UP : {
                    // 鼠标弹起保存最后状态
                    cacheCanvas.drawPath(path, paint);
                    path.reset();
                    isMoving = false;
                    break;
                }
            }

    第二种是触摸的时候显示绘制轨迹,那么就在ACTION_MOVE中设置:cacheCanvas.drawPath(path, paint);

    public boolean onTouchEvent(MotionEvent event) {
            // TODO Auto-generated method stub
            float x = event.getX();
            float y = event.getY();
    
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN : {
                    cur_x = x;
                    cur_y = y;
                    path.moveTo(cur_x, cur_y);
                    isMoving = true;
                    break;
                }
    
                case MotionEvent.ACTION_MOVE : {
                    if (!isMoving)
                        break;
    
                    // 二次曲线方式绘制
                    path.quadTo(cur_x, cur_y, x, y);
                    cacheCanvas.drawPath(path, paint);
                    // 下面这个方法貌似跟上面一样
                    // path.lineTo(x, y);
                    cur_x = x;
                    cur_y = y;
                    break;
                }
    
                case MotionEvent.ACTION_UP : {
                    // 鼠标弹起保存最后状态
            //        cacheCanvas.drawPath(path, paint);
                    path.reset();
                    isMoving = false;
                    break;
                }
            }
  • 相关阅读:
    视图和同义词的区别
    【MooTools】自定义滚动条小插件
    有理想的程序员必须知道的15件事
    革新:.NET 2.0的自定义配置文件体系初探
    我的2006年学习计划
    为ASP.NET 2.0配置数据源
    通用异常处理框架
    泛型的序列化问题
    实战SVN For Apache2(二)
    LightningFramework系列(一、初步总架构图)
  • 原文地址:https://www.cnblogs.com/Anita9002/p/4341307.html
Copyright © 2020-2023  润新知