2013年8月28日

(筆記)android onTouchEvent 事件

在網路上找的範例,以下有稍微修改,因為原來源文添加了一些非必要的東西搞得太複雜 首先加入全域變數
float upX, upY, downX, downY;
以下是修正過的範本
 public boolean onTouchEvent(MotionEvent event) {
   
        float X = event.getX(); // 觸控的 X 軸位置
        float Y = event.getY(); // 觸控的 Y 軸位置
 
        switch (event.getAction()) { // 判斷觸控的動作
 
        case MotionEvent.ACTION_DOWN: // 按下
            downX = event.getX();
            downY = event.getY();
            Log.d("onTouchEvent-ACTION_DOWN","DOWN");
 
            return true;
        case MotionEvent.ACTION_MOVE: // 拖曳
 
            return true;
        case MotionEvent.ACTION_UP: // 放開
            Log.d("onTouchEvent-ACTION_UP","UP");
            upX = event.getX();
            upY = event.getY();
            float x=Math.abs(upX-downX);
            float y=Math.abs(upY-downY);
            double z=Math.sqrt(x*x+y*y);
            int jiaodu=Math.round((float)(Math.asin(y/z)/Math.PI*180));//角度
             
            if (upY < downY && jiaodu>45) {//上
                Log.d("onTouchEvent-ACTION_UP","角度:"+jiaodu+", 動作:上");
            }else if(upY > downY && jiaodu>45) {//下
                Log.d("onTouchEvent-ACTION_UP","角度:"+jiaodu+", 動作:下");
            }else if(upX < downX && jiaodu<=45) {//左
                Log.d("onTouchEvent-ACTION_UP","角度:"+jiaodu+", 動作:左");
            }else if(upX > downX && jiaodu<=45) {//右
                Log.d("onTouchEvent-ACTION_UP","角度:"+jiaodu+", 動作:右");
            }
            return true;
        }
 
        return super.onTouchEvent(event);
    }

沒有留言:

張貼留言