Android屏幕頁面的滑動切換和抽取父類

n6xb 9年前發布 | 2K 次閱讀 Java 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!