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