天天看點

Android 手勢滑動傳回到上一頁

手勢滑動在現在android裝置螢幕越來越大的今天應用也越來越重要,其實像qq設定部分很多界面都有滑動傳回上一頁的操作。

這個頁面可以作為一個父類頁面,裡面還包含了4.4以上系統通知欄顔色改變的代碼

下面分享下我項目中這部分的操作

public class BaseActivity extends Activity implements OnGestureListener {

private SystemBarTintManager mTintManager;//android 4.4以上改變通知欄顔色

private int color;

private GestureDetector mGustureDetector;

private MyGestureDetector mydetector;

private GestureDetector gt = new GestureDetector(this);

private int MINLEN=100;//滑動手勢觸發的最小距離

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_layout);

color = getResources().getColor(R.color.color_startcode_bg);

mTintManager = new SystemBarTintManager(this);

mTintManager.setStatusBarTintEnabled(true);

mTintManager.setNavigationBarTintEnabled(true);

applySelectedColor();

MINLEN=getWindowManager().getDefaultDisplay().getWidth()/3;

mydetector = new MyGestureDetector();

mGustureDetector = new GestureDetector(this, mydetector);

}

class MyGestureDetector extends SimpleOnGestureListener {

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,

float velocityY) {

// TODO Auto-generated method stub

float x1 = e1.getX();

float x2 = e2.getX();

float xx = x1 - x2 > 0 ? x1 - x2 : x2 - x1;

LogTools.LogWe("----onFling----:"+xx);

if (x1 < x2 && xx > MINLEN) {

finish();

overridePendingTransition(R.anim.out_to_right, R.anim.in_from_left);

}

return super.onFling(e1, e2, velocityX, velocityY);

}

}

@Override

public boolean dispatchTouchEvent(MotionEvent ev) {

// TODO Auto-generated method stub

mGustureDetector.onTouchEvent(ev);

return super.dispatchTouchEvent(ev);

}

@Override

public boolean onTouchEvent(MotionEvent event) {

return gt.onTouchEvent(event);

}

private void applySelectedColor() {

mTintManager.setTintColor(color);

}

@Override

protected void onRestoreInstanceState(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onRestoreInstanceState(savedInstanceState);

applySelectedColor();

}

@Override

public void onResume() {

// TODO Auto-generated method stub

super.onResume();

}

@Override

protected void onStop() {

// TODO Auto-generated method stub

super.onStop();

}

@Override

public boolean onDown(MotionEvent arg0) {

// TODO Auto-generated method stub

return false;

}

@Override

public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2,

float arg3) {

// TODO Auto-generated method stub

return false;

}

@Override

public void onLongPress(MotionEvent arg0) {

// TODO Auto-generated method stub

}

@Override

public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,

float arg3) {

// TODO Auto-generated method stub

return false;

}

@Override

public void onShowPress(MotionEvent arg0) {

// TODO Auto-generated method stub

}

@Override

public boolean onSingleTapUp(MotionEvent arg0) {

// TODO Auto-generated method stub

return false;

}

}

繼續閱讀