Android屏幕頁面的滑動切換和抽取父類
因為頁面的滑動效果在整個應用中使用較多,所有抽取成父類來介紹,看代碼注釋
import android.app.Activity;
import android.content.SharedPreferences;
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;
//定義抽象方法showNext,由基類根據需要實現,其注意功能就是滑動切換,可以按123步驟學習
public abstract class BaseSetupActivity extends Activity {
//1.定義一個手勢識別器
private GestureDetector detector;protected SharedPreferences sp; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); sp = getSharedPreferences("config", MODE_PRIVATE); //2.實例化這個手勢識別器,GestureDetector.SimpleOnGestureListener需要單獨引用 detector = new GestureDetector(this, new SimpleOnGestureListener(){ /** * 當我們的手指在上面滑動的時候回調 */ @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { //屏蔽在X滑動很慢的情形 if(Math.abs(velocityX)<300){ Toast.makeText(getApplicationContext(), "滑動得太慢了", 0).show(); return true; } //屏蔽斜滑這種情況 if(Math.abs((e2.getRawY() - e1.getRawY())) > 100){ Toast.makeText(getApplicationContext(), "不能這樣滑", 0).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) { detector.onTouchEvent(event); return super.onTouchEvent(event); } } </pre>
本文由用戶 n6xb 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!