手机卫士学习17-屏幕滑动切换,抽取到父类
2015-01-17 15:58
246 查看
屏幕滑动切换,抽取到父类
需求:
在设置向导A,B,C,D界面中,左右滑动可以界面相互切换。
1 定义一个手势识别器
2 实例化一个手势识别器
3 使用这个手势识别器
---------------------------------------------------
1 定义一个手势识别器
2 实例化一个手势识别器
3 使用这个手势识别器
四个界面都需要实现左右滑动切换界面的效果,所以有两种办法:
1 每一个界面都完成上面三步。
2 将手势识别器三步抽取到一个自定义的Activity,四个界面分别都继承这个Activity
第一种不说了,下面来说第二种方法:
封装手势识别器,并添加2个抽象方法,为左划界面跳转和右划界面跳转。
然后在界面继承这个Activity复写左划右划方法,方法里实现页面跳转Intent
具体源码参考:
http://yunpan.cn/cyppdh2fpRcVb (提取码:5edc)
需求:
在设置向导A,B,C,D界面中,左右滑动可以界面相互切换。
1 定义一个手势识别器
2 实例化一个手势识别器
3 使用这个手势识别器
---------------------------------------------------
1 定义一个手势识别器
//1.定义一个手势识别器 private GestureDetector detector;
2 实例化一个手势识别器
//2.实例化手势识别器 detector = new GestureDetector(this, new SimpleOnGestureListener(){ @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // TODO Auto-generated method stub //屏蔽划得很慢的情况 if(Math.abs(velocityX)<200){ Toast.makeText(getApplicationContext(), "划得太慢了", Toast.LENGTH_SHORT).show(); return true; } //屏蔽斜划的情况 if(Math.abs(e2.getRawY()-e1.getRawY())>100){ Toast.makeText(getApplicationContext(), "不能斜着划", Toast.LENGTH_SHORT).show(); return true; } //从左往右划,显示上一个界面 if(e2.getRawX()-e1.getRawX()>200){ System.out.println("从左往右划,显示上一个界面"); showPre(); return true; } //从右往左划,显示下一个界面 if(e1.getRawX()-e2.getRawX() >200){ System.out.println("从右往左划,显示下一个界面"); showNext(); return true; } return super.onFling(e1, e2, velocityX, velocityY); } });
3 使用这个手势识别器
/** * 3.使用手势识别器 */ @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub detector.onTouchEvent(event); return super.onTouchEvent(event); }------------------------------------------------------------------------------
四个界面都需要实现左右滑动切换界面的效果,所以有两种办法:
1 每一个界面都完成上面三步。
2 将手势识别器三步抽取到一个自定义的Activity,四个界面分别都继承这个Activity
第一种不说了,下面来说第二种方法:
封装手势识别器,并添加2个抽象方法,为左划界面跳转和右划界面跳转。
package com.itheima.mobilesafe;
import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.widget.Toast;
public abstract class BaseSetupActivity extends Activity {
//1.定义一个手势识别器
private GestureDetector detector;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//2.实例化手势识别器 detector = new GestureDetector(this, new SimpleOnGestureListener(){ @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // TODO Auto-generated method stub //屏蔽划得很慢的情况 if(Math.abs(velocityX)<200){ Toast.makeText(getApplicationContext(), "划得太慢了", Toast.LENGTH_SHORT).show(); return true; } //屏蔽斜划的情况 if(Math.abs(e2.getRawY()-e1.getRawY())>100){ Toast.makeText(getApplicationContext(), "不能斜着划", Toast.LENGTH_SHORT).show(); return true; } //从左往右划,显示上一个界面 if(e2.getRawX()-e1.getRawX()>200){ System.out.println("从左往右划,显示上一个界面"); showPre(); return true; } //从右往左划,显示下一个界面 if(e1.getRawX()-e2.getRawX() >200){ System.out.println("从右往左划,显示下一个界面"); showNext(); return true; } return super.onFling(e1, e2, velocityX, velocityY); } });
}
public abstract void showNext();
public abstract void showPre();
/**
* 下一步点击事件
*
* @param view
*/
public void next(View view) {
showNext();
}
/**
* 上一步点击事件
*
* @param view
*/
public void pre(View view){
showPre();
}
/** * 3.使用手势识别器 */ @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub detector.onTouchEvent(event); return super.onTouchEvent(event); }
}
然后在界面继承这个Activity复写左划右划方法,方法里实现页面跳转Intent
package com.itheima.mobilesafe; import android.content.Intent; import android.os.Bundle; public class Setup2Activity extends BaseSetupActivity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_setup2); } @Override public void showNext() { // TODO Auto-generated method stub Intent intent = new Intent(this, Setup3Activity.class); startActivity(intent); finish(); overridePendingTransition(R.anim.tran_in, R.anim.tran_out); } @Override public void showPre() { // TODO Auto-generated method stub Intent intent = new Intent(this, Setup1Activity.class); startActivity(intent); finish(); overridePendingTransition(R.anim.tran_pre_in, R.anim.tran_pre_out); } }
具体源码参考:
http://yunpan.cn/cyppdh2fpRcVb (提取码:5edc)
相关文章推荐
- 17屏幕滑动的切换以及抽取到父类
- Android屏幕页面的滑动切换和抽取父类
- GestureDetector学习之左右滑动,上下滑动屏幕切换页面
- GestureDetector学习之左右滑动,上下滑动屏幕切换页面
- 提取Launcher中的WorkSapce,可以左右滑动切换屏幕页面的类
- 转 Android的Activity屏幕切换动画(一)-左右滑动切换
- 如何通过GestureDetector实现屏幕事件监听(滑动切换Layout) (转)
- 提取Launcher中的WorkSapce,可以左右滑动切换屏幕页面的类
- 提取Launcher中的WorkSapce,可以左右滑动切换屏幕页面的类
- 提取Launcher中的WorkSapce,可以左右滑动切换屏幕页面的类
- 页面滑动切换(类Launcher滑动屏幕实现)
- am架构学习笔记(二) 屏幕切换
- J2ME学习笔记--实现手机屏幕的切换
- 提取Launcher中的WorkSapce,可以左右滑动切换屏幕页面的类
- Android ViewFlipper滑动屏幕切换图片【安卓进化十九】
- Android ViewFlipper滑动屏幕切换图片
- 提取Launcher中的WorkSapce,可以左右滑动切换屏幕页面的类
- 提取Launcher中的WorkSapce,可以左右滑动切换屏幕页面的类
- Android 滑动切换页面 以及屏幕手势
- Android学习笔记之滑动翻页(屏幕切换)