日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
更新您的Widget以適配Android12

很長(zhǎng)一段時(shí)間來(lái),微件 (widget) 一直是 Android 用戶體驗(yàn)的核心組成部分,很多應(yīng)用通過(guò)微件來(lái)提升用戶黏度。用戶樂(lè)于使用微件的原因是可以在不打開應(yīng)用的情況下使用應(yīng)用功能,且可自定義設(shè)備的主屏幕。

Android 12 更新了已有的 Widget API,重塑了微件的設(shè)計(jì)來(lái)契合 "Material You" 設(shè)計(jì)語(yǔ)言。這些更新可以幫助您使用設(shè)備的主題顏色和圓角來(lái)構(gòu)建更加美觀的微件,從而提升微件在搜索和擺放時(shí)的可發(fā)現(xiàn)性和視覺(jué)觀感。

△ 對(duì)比更新之前 (Android 11) 和更新后的淺色和深色主題 (Android 12) 

在這個(gè)系列中,我們將帶您更新微件來(lái)適配 Android 12。在本文中我們將進(jìn)行一些簡(jiǎn)單的修改,使您的微件能夠在 Android 12 的設(shè)備上看起來(lái)更加精致,且在較舊版本的設(shè)備中提供一致的用戶體驗(yàn)。在第二篇文章中,我們將了解新的 API,通過(guò)它們可以使微件更加個(gè)性化、響應(yīng)更靈敏并且更具互動(dòng)性。

視覺(jué)變化

對(duì)于用戶來(lái)說(shuō),毫無(wú)疑問(wèn)最直觀的視覺(jué)變化是風(fēng)格和設(shè)計(jì)上的改變。更新可視元素,比如顏色和圓角,呈現(xiàn)出的外觀會(huì)令用戶耳目一新。增加這些修改,我們推薦您創(chuàng)建一個(gè)自定義的主題。

增加動(dòng)態(tài)顏色

Material You 旨在提供更加個(gè)性化的用戶體驗(yàn)。在 Android 12 中,動(dòng)態(tài)顏色可以使您的微件與其它微件以及系統(tǒng)保持一致的風(fēng)格。微件可以使用系統(tǒng)默認(rèn)的主題 Theme.DeviceDefault.DayNight,并且在微件的 UI 元素中使用主題顏色屬性。

對(duì)于 SDK 級(jí)別低于 31 的設(shè)備,您需要?jiǎng)?chuàng)建一個(gè)繼承自 DeviceDefault 的自定義主題。

 
 
 
 
  1. values/themes.xml 
  2.    parent="@android:style/Theme.DeviceDefault" /> 

對(duì)于 SDK 級(jí)別為 31 的設(shè)備,使用主題 DeviceDefault.DayNight 來(lái)創(chuàng)建自定義主題。

 
 
 
 
  1. values-v31/themes.xml 
  2.    parent="@android:style/Theme.DeviceDefault.DayNight" /> 

或者,如果您的應(yīng)用使用了 Material Components,您可以使用 Theme.MaterialComponents.DayNight 作為基礎(chǔ)主題,而不是使用 Theme.DeviceDefault。

 
 
 
 
  1. layout/widget_checkbox_list_title_region.xml 
  2. ... 
  3.    android:layout_width="0dp" 
  4.    android:layout_height="wrap_content"     
  5.    android:layout_gravity="center_vertical" 
  6.    android:layout_marginStart="8dp" 
  7.    android:layout_weight="1" 
  8.    android:text="@string/grocery_list" 
  9.    android:textColor="?android:attr/textColorPrimary" /> 
  10.    android:layout_width="@dimen/widget_element_min_length" 
  11.    android:layout_height="@dimen/widget_element_min_length" 
  12.    android:background="?android:attr/selectableItemBackground" 
  13.    android:clickable="true" 
  14.    android:contentDescription="@string/add_button_grocery_list_content_description" 
  15.    android:src="@drawable/ic_add_24" 
  16.    android:tint="?android:attr/colorAccent" /> 
  17. ... 

△ 在淺色/深色主題中靜態(tài)顏色與動(dòng)態(tài)顏色的對(duì)比

圓角

從 Android 12 開始,圓角將自動(dòng)應(yīng)用于微件。這也意味著圓角會(huì)裁剪微件的部分內(nèi)容。為了避免出現(xiàn)這樣的問(wèn)題,并且提供與其它微件和系統(tǒng)風(fēng)格一致的外觀和用戶體驗(yàn),您可以使用 system_app_widget_background_radius 在微件的背景添加圓角,使用 system_app_widget_inner_radius 在微件中的視圖添加圓角。后者的值需要比 system_app_widget_background_radius 小 8dp。

在添加上述修改時(shí),請(qǐng)注意如果您的微件包含靠近角區(qū)域的內(nèi)容,這些內(nèi)容可能會(huì)被裁減掉。要解決該問(wèn)題,您需要添加足夠大的 padding 來(lái)避免微件的內(nèi)容與圓角之間的沖突。

 
 
 
 
  1. values/attrs.xml 
  2.  
  3.        
  4.     
  5.     
  6.  
  7. values/themes.xml 
  8.    parent="@android:style/Theme.DeviceDefault"> 
  9.  
  10.    16dp 
  11.  
  12.    8dp 
  13.  
  14.    parent="Theme.AppWidget.AppWidgetContainerParent"> 
  15.   
  16.    16dp 
  17.  
  18. values-v31/themes.xml 
  19.    parent="@android:style/Theme.DeviceDefault.DayNight"> 
  20.     
  21.        @android:dimen/system_app_widget_background_radius      
  22.     
  23.        @android:dimen/system_app_widget_inner_radius 
  24.  
  25. values/styles.xml 
  26.    parent="android:Widget"> 
  27.    @android:id/background 
  28.     
  29.        ?android:attr/colorBackground 
  30.  

如果您的 minTargetSDK 小于 21,那么您需要提供適用于 SDK 版本 21 的 style,因?yàn)樵诳衫L制對(duì)象上使用 android:attr/colorBackground 需要 SDK 版本至少為 21。

至此您已經(jīng)創(chuàng)建了主題,現(xiàn)在可以在微件的布局上設(shè)置樣式了。

 
 
 
 
  1. layout/widget_grocery_list.xml 
  2.    style="@style/Widget.AppWidget.AppWidget.Container"> 
  3.    ... 
  4.  

 

△ 對(duì)比原有風(fēng)格、自動(dòng)圓角效果以及帶有圓角和 padding 的效果 

過(guò)渡

當(dāng)應(yīng)用通過(guò)微件打開時(shí),Android 12 提供了過(guò)渡效果。該過(guò)渡效果是由系統(tǒng)自動(dòng)處理的,并且在舊版本的 Android 上不會(huì)出現(xiàn)。要啟用該效果,您需要在微件布局根元素上指定一個(gè) id,并設(shè)置它的值為 android:id/background。

...

如果您的微件使用了 broadcast trampoline,也就是說(shuō)您的微件在用戶點(diǎn)擊時(shí)創(chuàng)建了 PendingIntent,通過(guò)廣播或者服務(wù)啟動(dòng) Activity,那么在這種情況下,該過(guò)渡動(dòng)畫不會(huì)生效。

微件選擇器的優(yōu)化

優(yōu)化

預(yù)覽Android 12 包含新的經(jīng)過(guò)改進(jìn)的微件選擇器。與使用靜態(tài)可繪制資源不同,新的微件選擇器使用 XML 布局來(lái)動(dòng)態(tài)創(chuàng)建縮放的微件預(yù)覽。

如果您的微件并不包含動(dòng)態(tài)元素,比如 ListView 或者 GridView,您可以使用微件的布局實(shí)現(xiàn)預(yù)覽。

要實(shí)現(xiàn)預(yù)覽,您需要將默認(rèn)值直接設(shè)置到原始布局上。

 
 
 
 
  1.    style="@style/Widget.AppWidget.Checkbox" 
  2.    android:layout_width="match_parent" 
  3.    android:layout_height="wrap_content" 
  4.    android:text="@string/widget_title_preview" /> 
  5.    style="@style/Widget.AppWidget.Checkbox" 
  6.    android:layout_width="match_parent" 
  7.    android:layout_height="wrap_content" 
  8.    android:text="@string/widget_subject_preview" /> 

在布局上設(shè)置默認(rèn)值可能會(huì)帶來(lái)少量的延遲,因?yàn)檎嘉坏闹禃?huì)在實(shí)際值之前首先被啟用。要避免該問(wèn)題,您可以為預(yù)覽創(chuàng)建一個(gè)獨(dú)立的布局文件,并且啟用自定義的預(yù)覽主題。

 
 
 
 
  1.  
  2.     
  3.     
  4.     
  5.     
  6.    
  7.        parent="@style/Theme.DeviceDefault.DayNight.AppWidget"> 
  8.         
  9.         
  10.  
  11.     
  12.        Preview Title 
  13.        Preview Subject 
  14.  
  15.  

創(chuàng)建預(yù)覽主題后,您可以在布局中將它應(yīng)用到預(yù)覽元素上。

 
 
 
 
  1. layout/my_widget_preview.xml 
  2.  
  3.    
  4.         android:theme=”@style/Theme.MyApp.Widget.Preview” /> 
  5. layout/my_widget_actual.xml 
  6.  
  7.    
  8.        android:theme=”@style/Theme.MyApp.Widget” /> 
  9.  

最后,您需要將微件的布局設(shè)置為 appwidget-provider 的 previewLayout 屬性。

 
 
 
 
  1. xml/app_widget_info_checkbox_list.xml 
  2.    android:previewLayout="@layout/widget_grocery_list" 
  3.    ... 
  4. /> 

△ 對(duì)比靜態(tài)預(yù)覽效果與縮放預(yù)覽效果

對(duì)于顯示多個(gè)元素的 ListView、GridView 或者 Stack,是無(wú)法直接在布局上設(shè)置默認(rèn)值的。對(duì)于這些視圖,您可以為微件預(yù)覽創(chuàng)建另一個(gè)布局,并且在布局中設(shè)置固定的值。

要實(shí)現(xiàn)上述操作,推薦的最佳實(shí)踐是使用 標(biāo)簽來(lái)復(fù)用布局的一部分以啟用默認(rèn)值,而無(wú)需復(fù)制整個(gè)布局。您可以將新的布局設(shè)置為 appwidget-provider 的 previewLayout 屬性。

描述

您也可以設(shè)置 description 屬性作為描述信息顯示在微件選擇器上。雖然這是可選項(xiàng),但是提供描述信息可以幫助用戶更好地了解微件的功能。

 
 
 
 
  1. app_widget_info_checkbox_list.xml 
  2.   android:description="@string/app_widget_grocery_list_description" 
  3.   ... 
  4. /> 

 

△ 微件描述 

總結(jié)

在本文中,我們?yōu)槟故玖巳绾胃挛⒓O(shè)計(jì)并且在微件選擇器中提供更好的用戶體驗(yàn)。上述內(nèi)容可以快速更新您的微件來(lái)適配 Android 12,您的用戶可以看到非常直觀的區(qū)別。

但這并不是全部。在下一篇文章中,我們將會(huì)了解新的 API,它可以使您的微件更加個(gè)性化,響應(yīng)更靈敏且更具互動(dòng)性。


文章標(biāo)題:更新您的Widget以適配Android12
網(wǎng)頁(yè)網(wǎng)址:http://m.5511xx.com/article/cojdjcj.html