Android 左右滑动切换页面或Activity的效果实现
2011-06-29 15:17
976 查看
对于Android桌面可以用手势左右滑动进行切换。或者大家用过iReader的一定被其丰富的手势折服吧。现在看看自己的多个Activy之间如何切换呢
1、需要继承OnGestureListener和OnDoubleTapListener,如下:
Java代码
public
class
ViewSnsActivity
extends
Activity
implements
OnTouchListener, OnGestureListener
2、在添加mGestureDetector的定义,并在
ViewSnsActivity的onCreate函数中加入其页面布局的setOnTouchListener事件
Java代码
GestureDetector mGestureDetector;
Java代码
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
);
}
3、重载onFling函数
Java代码
public
boolean
onFling(MotionEvent e1, MotionEvent e2,
float
velocityX,
float
velocityY) {
if
(e1.getX()-e2.getX() > snsConstant.getFlingMinDistance()
&& Math.abs(velocityX) > snsConstant.getFlingMinVelocity()) {
// 切换Activity
// Intent intent = new Intent(ViewSnsActivity.this, UpdateStatusActivity.class);
// startActivity(intent);
Toast.makeText(this
,
"向左手势"
, Toast.LENGTH_SHORT).show();
} else
if
(e2.getX()-e1.getX() > snsConstant.getFlingMinDistance()
&& Math.abs(velocityX) > snsConstant.getFlingMinVelocity()) {
// 切换Activity
// Intent intent = new Intent(ViewSnsActivity.this, UpdateStatusActivity.class);
// startActivity(intent);
Toast.makeText(this
,
"向右手势"
, Toast.LENGTH_SHORT).show();
}
return
false
;
}
其中SnsConstant如下:
Java代码
public
class
SnsConstant {
private
static
final
int
FLING_MIN_DISTANCE =
50
;
private
static
final
int
FLING_MIN_VELOCITY =
0
;
public
static
int
getFlingMinDistance() {
return
FLING_MIN_DISTANCE;
}
public
static
int
getFlingMinVelocity() {
return
FLING_MIN_VELOCITY;
}
}
4、重载onTouch函数
Java代码
public
boolean
onTouch(View v, MotionEvent event) {
return
mGestureDetector.onTouchEvent(event);
}
1、需要继承OnGestureListener和OnDoubleTapListener,如下:
Java代码
public
class
ViewSnsActivity
extends
Activity
implements
OnTouchListener, OnGestureListener
public class ViewSnsActivity extends Activity implements OnTouchListener, OnGestureListener
2、在添加mGestureDetector的定义,并在
ViewSnsActivity的onCreate函数中加入其页面布局的setOnTouchListener事件
Java代码
GestureDetector mGestureDetector;
GestureDetector mGestureDetector;
Java代码
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
);
}
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); }
3、重载onFling函数
Java代码
public
boolean
onFling(MotionEvent e1, MotionEvent e2,
float
velocityX,
float
velocityY) {
if
(e1.getX()-e2.getX() > snsConstant.getFlingMinDistance()
&& Math.abs(velocityX) > snsConstant.getFlingMinVelocity()) {
// 切换Activity
// Intent intent = new Intent(ViewSnsActivity.this, UpdateStatusActivity.class);
// startActivity(intent);
Toast.makeText(this
,
"向左手势"
, Toast.LENGTH_SHORT).show();
} else
if
(e2.getX()-e1.getX() > snsConstant.getFlingMinDistance()
&& Math.abs(velocityX) > snsConstant.getFlingMinVelocity()) {
// 切换Activity
// Intent intent = new Intent(ViewSnsActivity.this, UpdateStatusActivity.class);
// startActivity(intent);
Toast.makeText(this
,
"向右手势"
, Toast.LENGTH_SHORT).show();
}
return
false
;
}
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (e1.getX()-e2.getX() > snsConstant.getFlingMinDistance() && Math.abs(velocityX) > snsConstant.getFlingMinVelocity()) { // 切换Activity // Intent intent = new Intent(ViewSnsActivity.this, UpdateStatusActivity.class); // startActivity(intent); Toast.makeText(this, "向左手势", Toast.LENGTH_SHORT).show(); } else if (e2.getX()-e1.getX() > snsConstant.getFlingMinDistance() && Math.abs(velocityX) > snsConstant.getFlingMinVelocity()) { // 切换Activity // Intent intent = new Intent(ViewSnsActivity.this, UpdateStatusActivity.class); // startActivity(intent); Toast.makeText(this, "向右手势", Toast.LENGTH_SHORT).show(); } return false; }
其中SnsConstant如下:
Java代码
public
class
SnsConstant {
private
static
final
int
FLING_MIN_DISTANCE =
50
;
private
static
final
int
FLING_MIN_VELOCITY =
0
;
public
static
int
getFlingMinDistance() {
return
FLING_MIN_DISTANCE;
}
public
static
int
getFlingMinVelocity() {
return
FLING_MIN_VELOCITY;
}
}
public class SnsConstant { private static final int FLING_MIN_DISTANCE = 50; private static final int FLING_MIN_VELOCITY = 0; public static int getFlingMinDistance() { return FLING_MIN_DISTANCE; } public static int getFlingMinVelocity() { return FLING_MIN_VELOCITY; } }
4、重载onTouch函数
Java代码
public
boolean
onTouch(View v, MotionEvent event) {
return
mGestureDetector.onTouchEvent(event);
}
public boolean onTouch(View v, MotionEvent event) { return mGestureDetector.onTouchEvent(event); }
相关文章推荐
- Android 左右滑动切换页面或Activity的效果实现
- Android 利用ViewPager实现底部圆点导航左右滑动效果以及Fragment页面切换
- Android 手势识别 (左右滑动)实现 页面 切换
- Android 实现多页界面左右滑动切换效果之入门+进阶 (ViewPager+PagerAdapter)
- Android的Activity屏幕切换动画(ExitAnim)-左右滑动切换(直播退出效果)
- Android-使用ViewGroup实现左右滑动切换界面以及界面裂开的效果
- Android中实现整个视图切换的左右滑动效果
- Android左右滑动控件实现开关的切换效果
- Android 手势识别 (左右滑动)实现 页面 切换
- 手势检测实现相册的左右滑动(并加上移动与旋转的特效) 首先,activity_main.xml里,使用ViewFlipper组件(可使用动画控制多个组件之间的切换效果) <?xml version="
- Android 手势识别 (左右滑动)实现 页面 切换
- Android编程实现ViewPager多页面滑动切换及动画效果的方法
- android 两个activity实现切换时的滑动效果实现
- Android酱油笔记之左右滑屏切换Activity效果实现
- android使用ViewPager实现底部菜单栏和左右滑动效果,加载多个Activity
- android-使用ViewGroup实现左右滑动切换界面的效果
- android开发的问题(一)左右滑动屏幕实现activity的切换
- Android 实现多页界面左右滑动切换效果之进阶
- 基于Vue实现页面切换左右滑动效果
- Android中用ViewPager实现多页面滑动切换及动画效果的实例