記錄 上下、左右滑動切換activity+動畫效果。怕腦殼很差用 特記錄 關鍵代碼以下: java
public class StartActivity extends Activity implements OnTouchListener,OnGestureListener{ private GestureDetector mGestureDetector; private int verticalMinDistance = 20; private int minVelocity = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //去除標題 this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_start); mGestureDetector = new GestureDetector((OnGestureListener)this); //給佈局文件添加事件 LinearLayout viewSnsLayout = (LinearLayout)findViewById(R.id.linear); viewSnsLayout.setOnTouchListener(this); viewSnsLayout.setLongClickable(true); } public void intentMainActivity(){ new Thread(new Runnable() { @Override public void run() { try { //沉睡3秒跳轉至主頁面 Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } //執行意圖 跳轉 Intent intent = new Intent(StartActivity.this,MainActivity.class); startActivity(intent); //結束當前Activiry finish(); } }).start(); } /* *屏幕監聽器 */ public boolean onTouch(View v, MotionEvent event) { return mGestureDetector.onTouchEvent(event); } /* * 手勢監聽器 * e1 The first down motion event that started the fling.手勢起點的移動事件 * e2 The move motion event that triggered the current onFling.當前手勢點的移動事件 * velocityX The velocity of this fling measured in pixels per second along the x axis.每秒x軸方向移動的像素 * velocityY The velocity of this fling measured in pixels per second along the y axis.每秒y軸方向移動的像素 */ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (e1.getX() - e2.getX() > verticalMinDistance && Math.abs(velocityX) > minVelocity) { Intent intent = new Intent(StartActivity.this,MainActivity.class); startActivity(intent); overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left); //添加動畫效果 } if (e2.getX() - e1.getX() > verticalMinDistance && Math.abs(velocityX) > minVelocity) { // Toast.makeText(this, "向右手勢", Toast.LENGTH_SHORT).show(); } if (Math.abs(e2.getY()-e1.getY())>50) { Intent intent = new Intent(StartActivity.this,MainActivity.class); startActivity(intent); overridePendingTransition(R.anim.in_from_down, R.anim.out_to_up); } if (e2.getY()-e1.getY()>50) { // Toast.makeText(getApplicationContext(), "向下滑動", Toast.LENGTH_LONG).show(); } return false; } @Override public boolean onDown(MotionEvent arg0) {return false;} @Override public void onLongPress(MotionEvent arg0) {} @Override public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,float arg3) {return false;} @Override public void onShowPress(MotionEvent arg0) {} @Override public boolean onSingleTapUp(MotionEvent arg0) {return false;} }
右進坐出 動畫 android
<?xml version="1.0" encoding="utf-8"?> <!--從屏幕右邊進入 --> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="100%p" android:interpolator="@android:anim/accelerate_interpolator" android:toXDelta="0%p" />
<?xml version="1.0" encoding="utf-8"?> <!--從屏幕左邊退出 --> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="0%p" android:interpolator="@android:anim/accelerate_interpolator" android:toXDelta="-100%p" />
下進 上出 ide
<?xml version="1.0" encoding="utf-8"?> <!--從屏幕下邊進入 --> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:fromYDelta="100%p" android:toYDelta="0%p" android:interpolator="@android:anim/accelerate_interpolator" />
<?xml version="1.0" encoding="utf-8"?> <!--從屏幕上邊退出 --> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromYDelta="0%p" android:toYDelta="-100%p" android:duration="1000"> </translate>