退出全屏Activities

*以下內(nèi)容翻譯自android wear的官方教程,本人水平有限,如有錯誤歡迎指出
home
以下正文


默認(rèn)情況下,用戶從左向右滑動就可以退出Android Wear Activity。如果app包括了水平滑動的內(nèi)容,用戶需要滑動到左邊的邊界處再向右滑來退出。

為了更佳的浸入式體驗,你需要app可以向任意方向滑動而不退出app。你可以屏蔽左滑退出的默認(rèn)設(shè)置,這么做了之后,你必須實現(xiàn) DismissOverlayView
來長按退出你的app。并且你要在用戶第一次使用你的app的時候告訴TA們需要用長按來退出。

關(guān)于設(shè)計用于退出的Android Wear activities,你可以查閱 Breaking out of the card

屏蔽滑動退出手勢

如果你的app與這個手勢有沖突,你可以拓展默認(rèn)的主題(theme),然后設(shè)置android:windowSwipeToDismiss為false

<resources>  
  <style name="AppTheme" parent="@android:style/Theme.DeviceDefault"> 
    <item name="android:windowSwipeToDismiss">false</item> 
  </style>
</resources>

然后在AndroidManifest.xml文件中設(shè)置這個主題(theme),更準(zhǔn)確的說是讓<application>標(biāo)簽的android:theme屬性設(shè)置成上面的主題.

<application android:theme="@style/AppTheme">

如果你完成了上面的步驟,一定一定要記得完成接下來的步驟!?。?/p>

實現(xiàn)長按退出

首先你要確保 DismissOverlayView
全屏且覆蓋在所有的view的上面。
下面是一個示范

<FrameLayout  
  xmlns:android="http://schemas.android.com/apk/res/android"  
  android:layout_height="match_parent"    
  android:layout_width="match_parent">    
<!-- 把其他view安在這里 -->    
<android.support.wearable.view.DismissOverlayView  
   android:id="@+id/dismiss_overlay"        
   android:layout_height="match_parent"        
   android:layout_width="match_parent"/>
<FrameLayout>

在你的activity當(dāng)中,你可以獲取 <DismissOverlayView>
元素,然后設(shè)置一些介紹文本,這些文本將會在用戶第一次使用你的app的時候自動顯示(好贊)。之后用 GestureDetector
來探測長按事件:

public class WearActivity extends Activity {    
  private DismissOverlayView mDismissOverlay;    
  private GestureDetector mDetector;    
  public void onCreate(Bundle savedState) { 
    super.onCreate(savedState);        
    setContentView(R.layout.wear_activity);       
     
    // 獲取 DismissOverlayView 元素     
    mDismissOverlay = (DismissOverlayView) 
    findViewById(R.id.dismiss_overlay);        
    mDismissOverlay.setIntroText(R.string.long_press_intro);     
    mDismissOverlay.showIntroIfNecessary();   
    
    // 設(shè)置手勢探測器(gesture detector)
     mDetector = new GestureDetector(this, new SimpleOnGestureListener(){  
          public void onLongPress(MotionEvent ev) {      
            mDismissOverlay.show();          
          }        
     });   
  }    
  // 捕獲長按事件   
  @Override    
  public boolean onTouchEvent(MotionEvent ev) {   
    return mDetector.onTouchEvent(ev) || super.onTouchEvent(ev);    
  }
}

當(dāng)系統(tǒng)發(fā)現(xiàn)一個長按手勢時, <DismissOverlayView>
元素將會顯示一個Exit按鈕,用戶按一下之后你的activity就退出了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,027評論 25 709
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標(biāo)下拉刷新...
    皇小弟閱讀 47,156評論 22 665
  • 大帥和小帥,背對背而眠。廚房里傳來婆婆窸窸窣窣忙碌的聲音,客廳的電視時不時的來點音樂。大家在同一個屋檐下,...
    冰凝檐心閱讀 263評論 2 4
  • 我推開熙熙攘攘的人群,在夜景繁華的角落。小提琴明朗而輕靈歌舞青春,律動的鼓點聲如猛虎細(xì)嗅薔薇,讓久留中央大街靜靜...
    弈和閱讀 231評論 0 0
  • 冬日暖陽照進窗臺,我有剎那間的恍惚,仿佛回到了那年夏天。歲月靜好,太陽也沒那么毒辣,一如冬日的暖陽。那時的我騎著...
    透明人愛發(fā)呆閱讀 215評論 0 1

友情鏈接更多精彩內(nèi)容