Android 滑动切换页面(记录)
(2012-12-04 16:20:03)
曾经听到一句经典名言“要想挣钱,就要不要脸;要想持续挣钱,就要持续不要脸”,很现实的一句话,公司中的一个女同事貌似把这一句话运用到了极致。只是好奇,那样活着,心累吗?值得吗?
左右滑动切换Activity的原理:监控触屏事件和手势事件。在触屏事件处理函数中调用手势事件处理函数,表示用户触屏后是否有手势操作,如果有则进行手势事件处理。
分四步完成:
继承OnGestureListener(手势监控器)和OnDoubleTapListener(触屏监听器)
publicclass ViewSnsActivity extends Activity implementsOnTouchListener,OnGestureListener{}
添加mGestureDetector的定义,并在ViewSnsActivity的onCreate函数中加入其页面布局的setOnTouchListener事件。
GestureDetector mGestureDetector;//手势监听对象
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.view_sns_activity);
mGestureDetector= new GestureDetector((OnGestureListener)this);
LinearLayout viewSnsLayout=(LinearLayout)findViewById(R.id.viewSnsLayout);
viewSnsLayout.setOnTouchListener(this);
viewSnsLayout.setLongClickable(true);
}
重载onFling函数
private int verticalMinDistance=20;
private int minVelocity=0;
public boolean onFling(MotionEvent e1,MontionEvent e2,float velocityX, floatvelocityY){
if(e1.getX()-e2.getX()>verticalMinDistance &&Math.abs(velocityX)>minVelocity)
//向量的水平长度必须大于verticalMinDistance,并且水平方向速度大于minVelocity
{
//切换Activity
//Intent intent=new Intent(ViewSnsActivity.this,UpdateStatusActivity.class);
//startActivity(intent);
Toast.makeText(this,"向左手势",Toast.LENGTH_SHORT).show();
}
else if(e2.getX()-e1.getX()>verticalMinDistance && Math.abs(velocityX)>minVelocity)
{
//切换Activity
Toast.makeText(this,"向右手势",Toast.LENGTH_SHORT).show();
}
}
其中,e1:手势起点的移动事件;e2:当前手势点的移动;velocityX:每秒x轴方向移动的像素;velocityY:每秒y轴方向移动的像素
重载onTouch函数
调用手势的处理函数
public boolean onTouch(View v, MotionEvent event){
return mGestureDetector.onTouchEvent(event);