zoukankan      html  css  js  c++  java
  • 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;
                }
            }
  • 相关阅读:
    Python的with语句(文件打开方式)
    python代码异常范围检查方法(非常实用)
    python一标准异常总结大全(非常全)
    python里pickle模块
    pyhon文件操作典型代码实现(非常经典!)
    codeblocks中cocos2dx项目添加新的.cpp和.h文件后编译运行的方法
    ubuntu安装cocos2dx
    学习资料整理
    Spring学习笔记--在SpEL中筛选集合
    Spring学习笔记--Spring表达式语言SpEL
  • 原文地址:https://www.cnblogs.com/Anita9002/p/4341307.html
Copyright © 2011-2022 走看看