package net.dev123.yibo.service.listener; import net.dev123.yibo.AccountsActivity; import net.dev123.yibo.R; import net.dev123.yibo.common.CompatibilityUtil; import net.dev123.yibo.common.Constants; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.view.Display; import android.view.GestureDetector.OnGestureListener; import android.view.MotionEvent; import android.view.WindowManager; public class HomePageOnGestureListener implements OnGestureListener { //mdpi下的比例计算; private static final float FACTOR_PORTRAIT; private static final float FACTOR_LANDSCAPE; //水平滑动的参数 private static int SLIDE_MIN_DISTANCE_X; private static int SLIDE_MAX_DISTANCE_Y; private static int DISPLAY_WINDOW_WIDTH; private static int DISPLAY_WINDOW_HEIGHT; static { FACTOR_PORTRAIT = 120f / 320; FACTOR_LANDSCAPE = FACTOR_PORTRAIT; } private Context context; //private int orientation; public HomePageOnGestureListener(Context context) { this.context = context; initEnv(context); } private void initEnv(Context context) { // 获得屏幕大小 WindowManager windowManager = ((Activity)context).getWindowManager(); Display display = windowManager.getDefaultDisplay(); DISPLAY_WINDOW_WIDTH = display.getWidth(); DISPLAY_WINDOW_HEIGHT = display.getHeight(); SLIDE_MIN_DISTANCE_X = (int)(DISPLAY_WINDOW_WIDTH * FACTOR_PORTRAIT); SLIDE_MAX_DISTANCE_Y = (int)(DISPLAY_WINDOW_HEIGHT * FACTOR_LANDSCAPE); SLIDE_MAX_DISTANCE_Y = 120; //orientation = context.getResources().getConfiguration().orientation; } @Override public boolean onDown(MotionEvent e) { return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { float x1 = (e1 != null ? e1.getX() : 0); float x2 = (e2 != null ? e2.getX() : 0); float y1 = (e1 != null ? e1.getY() : 0); float y2 = (e2 != null ? e2.getY() : 0); float distanceX = x1 - x2; float distanceY = y1 - y2; //切换帐号,符合条件 if ( distanceX < 0 && //slide to right Math.abs(distanceX) > SLIDE_MIN_DISTANCE_X && Math.abs(distanceY) < SLIDE_MAX_DISTANCE_Y ) { Intent intent = new Intent(); intent.setClass(context, AccountsActivity.class); ((Activity)context).startActivityForResult(intent, Constants.REQUEST_CODE_ACCOUNTS); CompatibilityUtil.overridePendingTransition( (Activity)context, R.anim.slide_in_left, android.R.anim.fade_out ); return true; } return false; } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onSingleTapUp(MotionEvent e) { return false; } }