17屏幕滑动的切换以及抽取到父类

来源:互联网 发布:vb caption 编辑:程序博客网 时间:2024/05/20 10:21

当手指在设置向导的页面上滑动时,那么可以滑向上一页和滑向下一页。那么在四个设置向导页面均有重复的代码,所以我们把处理的代码放到一个公共的抽象类中。

package com.ustc.mobilemanager;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.GestureDetector;import android.view.Menu;import android.view.MenuItem;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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// setContentView(R.layout.activity_base_setup);// 2.实例化手势识别器detector = new GestureDetector(this, new SimpleOnGestureListener() {/** *  * 手势滑动的监听器 *  * 手指在上面滑动的时候回调 *  */@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2,float velocityX, float velocityY) {//屏蔽在x轴滑动很慢的情形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) {// 显示上一个页面:从左往右滑动showBack();return true;}if ((e1.getRawX() - e2.getRawX()) > 200) {// 显示下一个页面:从右往左滑动showNext();return true;}return super.onFling(e1, e2, velocityX, velocityY);}});}public abstract void showBack();public abstract void showNext();// 下一步的点击事件public void next(View view) {showNext();}// 上一步的点击事件public void back(View view) {showBack();}// 3.使用手势识别器@Overridepublic boolean onTouchEvent(MotionEvent event) {detector.onTouchEvent(event);return super.onTouchEvent(event);}}

比如第一个设置向导的代码继承这个公共类:

package com.ustc.mobilemanager;import android.content.Intent;import android.os.Bundle;import android.view.Window;public class Setup1Activity extends BaseSetupActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_setup1);}@Overridepublic void showBack() {Intent intent = new Intent(this, HomeActivity.class);startActivity(intent);finish();// 要求finish()或者startActivity(intent)方面后面执行overridePendingTransition(R.anim.tran_pre_in, R.anim.tran_pre_out);}@Overridepublic void showNext() {Intent intent = new Intent(this, Setup2Activity.class);startActivity(intent);finish();// 要求finish()或者startActivity(intent)方面后面执行overridePendingTransition(R.anim.tran_in, R.anim.tran_out);}}





0 0
原创粉丝点击