Android中的基類—抽取出來公用的方法

來源:互聯網
上載者:User

標籤:android   style   http   使用   io   ar   2014   art   

在Android中,一般來說一個應用會存在幾十個頁面,並且一個應用一般也會使用一個特定的主題,其中的頁面的風格也是一致的,並且頁面中的動畫效果、頁面的轉場效果等也應該保持同樣的風格,那麼就需要一個基類,來完成頁面的基礎設定,這就是所謂的基類。 介面統一管理原因 當應用中的介面達到一定數量級時,如幾十個介面,便於專案管理提高介面的處理速度避免由於多Activity導致的問題介面統一管理的基礎當應用中的介面達到一定數量級時,為了能夠讓使用者更容易操作上手,產品設計時會將介面顯示風格進行統一。 案例驅動: public abstract class BaseSetupActivity extends Activity {     // 該抽象類別,作為四個設定嚮導的基類,定義共同的方法     private SharedPreferences mSharedPreferences;     private static String TAG = "BaseSetupActivity";      // 聲明一個手勢辨識器     private GestureDetector mGestureDetector;      @Override     protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        mSharedPreferences = getSharedPreferences("config", MODE_PRIVATE);         // 初始化手勢辨識器        // 2.初始化手勢辨識器        // Basic Default Base Simple        mGestureDetector = new GestureDetector(this,               new GestureDetector.SimpleOnGestureListener() {                    /**                    * 劃屏對應的方法. e1 手指第一次觸控螢幕幕 e2 手指離開螢幕瞬間 velocityX 水平方向移動的速度                    * <span style="text-decoration: underline;">px</span>/s velocityY 豎直方向移動的速度                    */                   @Override                   public boolean onFling(MotionEvent e1, MotionEvent e2,                          float velocityX, float velocityY) {                      if (Math.abs(velocityX) < 100) {                          Log.i(TAG, "移動的太慢,動作不合法");                          return true;                      }                       if ((e2.getRawX() - e1.getRawX()) > 200) {                          showPre(null);                          return true;                      }                      if ((e1.getRawX() - e2.getRawX()) > 200) {                          showNext(null);                          return true;                      }                      // 其實返回的就是false                      return super.onFling(e1, e2, velocityX, velocityY);                   }                });         // 子類中初始化布局        initView();      }      // 設定當前的view布局     public abstract void initView();      // 顯示下一個介面     public abstract void showNext(View view);      // 顯示上一個介面     public abstract void showPre(View view);      // 3.activity被觸摸的時候調用的方法 , 需要在這個裡面讓手勢辨識器 生效     @Override     public boolean onTouchEvent(MotionEvent event) {        // 讓手勢辨識器 生效        mGestureDetector.onTouchEvent(event);        return super.onTouchEvent(event);     }  }分析:案例中主要實現的就是在同一主題下的頁面的轉場效果進行統一,初始化了手勢辨識器,並且讓手勢辨識器生效。接下來看一下繼承自這個基類的一個頁面的設定  public class Mobile_safeActivity1 extends BaseSetupActivity {      private static String <span style="text-decoration: underline;">TAG</span> = "Mobile_safeActivity1";      @Override     public void initView() {        setContentView(R.layout.mobile_safeactivity1);     }      @Override     public void showNext(View view) {        Intent intent = new Intent(this, Mobile_safeActivity2.class);        startActivity(intent);        finish();         // 設定切換的動畫效果,該方法將會在程式執行startActivity以及finish()方法的時候進行調用        overridePendingTransition(R.anim.tran_next_in, R.anim.tran_next_out);     }      @Override     public void showPre(View view) {      }  }分析:非常明顯這個Mobile_safeActivity1繼承自前面的基類BaseSetupActivity,因此當手指在螢幕上進行滑動的時候,將會觸發showNext()和showPre()兩個方法,並且在切換時通過overriderPendingTransition()產生螢幕滑動的轉場效果,這裡可以根據實際需求進行設定,並且這個方法將會在執行finish()方法後自行調用。而在showPre()中沒有寫任何的內容是因為沒有上一頁。  摘自http://www.2cto.com/kf/201403/288116.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.