Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 中級開發 >> Android實現搖晃刷新

Android實現搖晃刷新

編輯:中級開發

這篇文章我們就來探討另一種App刷新的方式,就叫“搖晃刷新”吧。眾所周知,下拉刷新方式已經有很多App在用了,只要手指在屏幕上滑動,就可以刷新界面了。

android_pull_to_refresh4

盡管下拉刷新方式很實用,不過我們還可以使用別的方式來刷新界面,也就是基於智能手機傳感器的搖晃刷新。這樣就不用滑動手指,只要搖晃手機就可以刷新界面:

adroid_shake_to_refresh4

實現方法

為了實現搖晃刷新功能,這裡需要使用重力加速器(Accelerometer),若需要了解更多關於怎麼使用重力加速器的方式請看這裡

首先,需要保證在搖晃刷新或者移動手機的時候不會發生誤操作,這裡需要實現對傳感器的控制,保證捕抓到的是用戶想要的搖動操作。另外,我們在實現這 個邏輯操作的時候需要和UI的代碼分離,建議不要把界面邏輯代碼和其它的代碼混雜在一起,把它獨立出來方便重用。所以首先新建一個ShakeEventManager類,這個類需要對傳感器事件進行監聽:

    public class ShakeEventManager implements SensorEventListener { 
  1. 加速度必須大於某個臨界值;
  2. 必須出發一些固定的加速傳感器事件;
  3. 這些事件發生的時間必須在一定的范圍內。
  4. 這裡把這個實現邏輯代碼寫在onSensorChanged方法裡,這個方法在加速器的值有效的時候都會被調用。第一步 要計算這個加速度的值。這裡還需要知道三個坐標的最大加速度值,然後減去重力的值在三個方向上的分量。像android官方教程文檔中說明的那樣,首先進 行一層過濾,把重力的分量減掉,然後在進行另外的坐標分量處理:

      private float calcMaxAcceleration(SensorEvent event) { 
    1. 0] = calcGravityForce(event.values[0], 0); 
    2. // Low pass filter 
    3. @Override 
    4. "SwA", "Max Acc ["+maxAcc+"]"); 
    5. @Override 
    6. // We update the ListVIEw 
    7. @Override 
    8. protected void onPause() { 
    9.     super.onPause(); 
    10.     sd.deregister(); 

    綜上所訴,就已經實現了一個搖晃刷新功能。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved