android学习之划屏方向判定

来源:互联网 发布:james blunt 知乎 声音 编辑:程序博客网 时间:2024/04/30 02:48

       划屏就是屏幕的点击操作,要用到setOnTouchListener()来监听。其思路为获取按下的坐标和抬起的坐标之差,当X的坐标绝对值大于Y的坐标绝对值时,判定划屏为左右划屏,反之为上下划屏。为了判定是否为划屏,坐标差要有一定的距离,这里设置距离为“5”。当X的差大于5时判定为右划,小于-5时判定为左划,这个好理解。当我在判定Y时,其结果正好相反。原来我用上学时学习的象限来判定,象限中的Y轴越往下数值越小,而在手机开发中Y轴越往下数值越大。下面给个源代码:

public class MainActivity extends ActionBarActivity {LinearLayout ll;TextView tv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.swipe_test);ll = (LinearLayout)findViewById(R.id.linear);tv = (TextView)findViewById(R.id.text);ll.setOnTouchListener(new View.OnTouchListener() {private float startX,startY,offsetX,offsetY;@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:startX = event.getX();startY = event.getY();break;case MotionEvent.ACTION_UP:offsetX = event.getX() - startX;offsetY = event.getY() - startY;if(Math.abs(offsetX) > Math.abs(offsetY)){if(offsetX < -5){tv.setText("左");}else if(offsetX > 5){tv.setText("右");}}else{if(offsetY < -5){tv.setText("上");}else if(offsetY > 5){tv.setText("下");}}break;}return true;}});}}


 

 

0 0