Android 創(chuàng)建自定義的布局

2018-08-02 17:50 更新

編寫: kesenhoo - 原文: http://developer.android.com/training/wearables/apps/layouts.html

為可穿戴設(shè)備創(chuàng)建布局是和手持設(shè)備是一樣的,除了我們需要為屏幕的尺寸和glanceability進(jìn)行設(shè)計(jì)。但是不要期望通過搬遷手持應(yīng)用的功能與UI到可穿戴上會(huì)有一個(gè)好的用戶體驗(yàn)。僅僅在有需要的時(shí)候,我們才應(yīng)該創(chuàng)建自定義的布局。請(qǐng)參考可穿戴設(shè)備的design guidelines學(xué)習(xí)如何設(shè)計(jì)一個(gè)優(yōu)秀的可穿戴應(yīng)用。

創(chuàng)建自定義Notification

通常來說,我們應(yīng)該在手持應(yīng)用上創(chuàng)建好notification,然后讓它自動(dòng)同步到可穿戴設(shè)備上。這讓我們只需要?jiǎng)?chuàng)建一次notification,然后可以在不同類型的設(shè)備(不僅僅是可穿戴設(shè)備,也包含車載設(shè)備與電視)上進(jìn)行顯示,免去為不同設(shè)備進(jìn)行重新設(shè)計(jì)。

如果標(biāo)準(zhǔn)的notification風(fēng)格無法滿足我們的需求(例如NotificationCompat.BigTextStyle 或者 NotificationCompat.InboxStyle),我們可以顯示一個(gè)使用自定義布局的activity。我們只可以在可穿戴設(shè)備上創(chuàng)建并處理自定義的notification,同時(shí)系統(tǒng)不會(huì)將這些notification同步到手持設(shè)備上。

Note: 當(dāng)在可穿戴設(shè)備上創(chuàng)建自定義的notification時(shí),我們可以使用標(biāo)準(zhǔn)notification API(API Level 20),不需要使用Support Library。

為了創(chuàng)建自定義的notification,步驟如下:

  1. 創(chuàng)建布局并設(shè)置這個(gè)布局為需要顯示的activity的content view:
    public void onCreate(Bundle bundle){
     ...
     setContentView(R.layout.notification_activity);
    }
    
  2. 為了使得activity能夠顯示在可穿戴設(shè)備上,需要在manifest文件中為activity定義必須的屬性。我們需要把a(bǔ)ctivity聲明為exportable,embeddable以及擁有一個(gè)空的task affinity。我們也推薦把a(bǔ)ctivity的主題設(shè)置為Theme.DeviceDefault.Light。例如:
    <activity android:name="com.example.MyDisplayActivity"
      android:exported="true"
      android:allowEmbedded="true"
      android:taskAffinity=""
      android:theme="@android:style/Theme.DeviceDefault.Light" />
    
  3. 為activity創(chuàng)建PendingIntent,例如::
    Intent notificationIntent = new Intent(this, NotificationActivity.class);
    PendingIntent notificationPendingIntent = PendingIntent.getActivity(this, 0, notificationIntent,
         PendingIntent.FLAG_UPDATE_CURRENT);
    
  4. 創(chuàng)建Notification并執(zhí)行setDisplayIntent())方法,參數(shù)是前面創(chuàng)建的PendingIntent。當(dāng)用戶查看這個(gè)notification時(shí),系統(tǒng)使用這個(gè)PendingIntent來啟動(dòng)activity。
  5. 使用notify())方法觸發(fā)notification。

Note: 當(dāng)notification呈現(xiàn)在主頁(yè)時(shí),系統(tǒng)會(huì)根據(jù)notification的語義,使用一個(gè)標(biāo)準(zhǔn)的模板來呈現(xiàn)它。這個(gè)模板可以在所有的表盤上進(jìn)行顯示。當(dāng)用戶往上滑動(dòng)notification時(shí),將會(huì)看到為這個(gè)notification準(zhǔn)備的自定義的activity。

使用Wearable UI庫(kù)創(chuàng)建布局

當(dāng)我們使用Android Studio的工程向?qū)?chuàng)建一個(gè)Wearable應(yīng)用的時(shí)候,會(huì)自動(dòng)包含Wearable UI庫(kù)。你也可以通過給build.gradle文件添加下面的依賴聲明把庫(kù)文件添加到項(xiàng)目:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.support:wearable:+'
    compile 'com.google.android.gms:play-services-wearable:+'
}

這個(gè)庫(kù)文件幫助我們建立為可穿戴設(shè)備設(shè)計(jì)的UI。更詳細(xì)的介紹請(qǐng)看為可穿戴設(shè)備創(chuàng)建自定義UI。

下面是一些Wearable UI庫(kù)中主要的類:

  • BoxInsetLayout - 一個(gè)能夠感知屏幕的形狀并把子控件居中擺放在一個(gè)圓形屏幕的FrameLayout。
  • CardFragment - 一個(gè)能夠可拉伸,垂直可滑動(dòng)卡片的fragment。
  • CircledImageView - 一個(gè)圓形的image view。
  • ConfirmationActivity - 一個(gè)在用戶完成一個(gè)操作之后用來顯示確認(rèn)動(dòng)畫的activity。
  • CrossFadeDrawable - 一個(gè)drawable。該drawable包含兩個(gè)子drawable和提供方法來調(diào)整這兩個(gè)子drawable的融合方式。
  • DelayedConfirmationView - 一個(gè)view。提供一個(gè)圓形倒計(jì)時(shí)器,這個(gè)計(jì)時(shí)器通常用于在一段短暫的延遲結(jié)束后自動(dòng)確認(rèn)某個(gè)操作。
  • DismissOverlayView - 一個(gè)用來實(shí)現(xiàn)長(zhǎng)按消失的View。
  • DotsPageIndicator - 一個(gè)為GridViewPager提供的指示標(biāo)記,用于指定當(dāng)前頁(yè)面相對(duì)于所有頁(yè)面的位置。
  • GridViewPager - 一個(gè)可以橫向與縱向滑動(dòng)的局部控制器。你需要提供一個(gè)GridPagerAdapter用來生成顯示頁(yè)面的數(shù)據(jù)。
  • GridPagerAdapter - 一個(gè)提供給GridViewPager顯示頁(yè)面的adapter。
  • FragmentGridPagerAdapter - 一個(gè)將每個(gè)頁(yè)面表示為一個(gè)fragment的GridPagerAdapter實(shí)現(xiàn)。
  • WatchViewStub - 一個(gè)可以根據(jù)屏幕的形狀生成特定布局的類。
  • WearableListView - 一個(gè)針對(duì)可穿戴設(shè)備優(yōu)化過后的ListView。它會(huì)垂直的顯示列表內(nèi)容,并在用戶停止滑動(dòng)時(shí)自動(dòng)顯示最靠近的Item。

Wear UI library API reference

這個(gè)參考文獻(xiàn)解釋了如何詳細(xì)地使用每個(gè)UI組件。查看Wear API reference documentation了解上述類的用法。

為用于Eclipse ADT下載Wearable UI庫(kù)

如果你正在使用Eclipse ADT,那么下載Wearable UI library將Wearable UI庫(kù)導(dǎo)入到你的工程當(dāng)中。

Note: 我們推薦使用Android Studio來開發(fā)可穿戴應(yīng)用。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)