編輯:中級開發
這篇文章我們就來探討另一種App刷新的方式,就叫“搖晃刷新”吧。眾所周知,下拉刷新方式已經有很多App在用了,只要手指在屏幕上滑動,就可以刷新界面了。
盡管下拉刷新方式很實用,不過我們還可以使用別的方式來刷新界面,也就是基於智能手機傳感器的搖晃刷新。這樣就不用滑動手指,只要搖晃手機就可以刷新界面:
為了實現搖晃刷新功能,這裡需要使用重力加速器(Accelerometer),若需要了解更多關於怎麼使用重力加速器的方式請看這裡
首先,需要保證在搖晃刷新或者移動手機的時候不會發生誤操作,這裡需要實現對傳感器的控制,保證捕抓到的是用戶想要的搖動操作。另外,我們在實現這 個邏輯操作的時候需要和UI的代碼分離,建議不要把界面邏輯代碼和其它的代碼混雜在一起,把它獨立出來方便重用。所以首先新建一個ShakeEventManager類,這個類需要對傳感器事件進行監聽:
public class ShakeEventManager implements SensorEventListener {
- 加速度必須大於某個臨界值;
- 必須出發一些固定的加速傳感器事件;
- 這些事件發生的時間必須在一定的范圍內。
這裡把這個實現邏輯代碼寫在onSensorChanged方法裡,這個方法在加速器的值有效的時候都會被調用。第一步 要計算這個加速度的值。這裡還需要知道三個坐標的最大加速度值,然後減去重力的值在三個方向上的分量。像android官方教程文檔中說明的那樣,首先進 行一層過濾,把重力的分量減掉,然後在進行另外的坐標分量處理:
private float calcMaxAcceleration(SensorEvent event) {
- 0] = calcGravityForce(event.values[0], 0);
- // Low pass filter
- @Override
- "SwA", "Max Acc ["+maxAcc+"]");
- @Override
- // We update the ListVIEw
- @Override
- protected void onPause() {
- super.onPause();
- sd.deregister();
- }
綜上所訴,就已經實現了一個搖晃刷新功能。
這幾天搞了搞AIDL,終於弄明白了在AIDL中讓Service調用Activity的方法代碼:首先建立一個ICallback.aidl文件,作為Activity中的回調
簡介: HTML 5 中一個最有用的新特性是本地存儲的標准化。最終,Web 開發人員可以不再試圖將所有客戶端數據都填塞到 4 KB 的 CookIEs 中。現
簡介: 有幾個網站從事一些非盈利服務,提供一些可輕松設置和使用的表單來進行民意測驗和數據收集。本教程介紹一個簡單的架構來為 android 設計類似的應用程
可翻頁的產品細節屏幕為增強產品細節屏幕的可用性,我們定義了一個自定義視圖控制器(ProductScrollVIEwController 類)來支持用戶通過翻頁