Google IO 2021上重磅介绍的Android 12,声称历代规划改动最大的版别。其全新的Material You规划言语、流通的动画特效再到面目一新的小组件,都令人形chrome象深刻。本文将聚集小组件chrome官方下载环节,谈谈它在从头规划之后的各种新特性和适配方法。

小组件在Android渠道上github永久回家地址命名为Appjava作业培训班Widget,有的时分还被翻译成小部件、小插件和微件。说的都是一个东西:闪chrome什么意思现在Launcher上,能在Logo以外供给更多信息的特别规划。它便运用户免于翻开App即可直接检查信息和进行简略的交互,在PC上、早前的Symbian上都有类似的规划。

前语

简明回想下移动渠道在小组件规划上的继续根究:

  • 前期的Android版别缺少美丽,小组件更是终年未改。似乎除了气候、时钟等常用小组件以外鲜少运用,逐渐被人遗忘
  • Windows Phone的动态http协议磁贴在安闲规范的Logo上活络展现信息的规划十分http 302超前,怎样办生态构建困难,早已离场
  • Apple向来稳重(保守),直到iOS 10才引入小组件,但负一屏捆绑着它的展开。直到iOS 14的全面支撑才大获成功,大有后发先至的态势
  • VIVO紧随其后重磅推出的Origingithub官网OS则将Logo和小组件完美交融,企图一统磁贴和小组件的概念,十分值得称赞

也许是受到了友商们的继续影响,Gchromebookoogle总算初步从头审视小组件这个元老级功用,并在Android 12里进行了从头规划检验怀孕的试纸图片一深一浅、从头动身。

Android 12上面目一新的小组件:漂亮、快捷和有用

下面将结合代码实战,带领我们逐渐感受Android 12里小http://www.baidu.com组件的各项新特性和对应的适配方法。

1. 挑选和展现的共同改动

事实上即便未做任何适配,在12上检验郁闷程度的问卷直接运转的小组件与11就有显着不同,首要体现在挑选器和展chrome安卓下载示的作用。

Chrome和Youtube Music的小组件为java怎样读例:

Android 12上面目一新的小组件:漂亮、快捷和有用

能够看到12上的一些改动:

  • 挑选器
  • 顶部悬浮查找框,能够更加快速地找到方针小github直播渠道永久回家组件
  • 小组件按照App主动折叠,防止无关的小组件占用屏幕空间
  • App标题还对包含的小组件数目进行了github永久回家地址提示
  • 拖拽到桌面上之后小组件默许具有圆角规划

11上的小组件挑选器不支撑查找并且无法折http 302叠,拖拽到桌面上也是初始的直角作用。

Android 12上面目一新的小组件:漂亮、快捷和有用

2. 美丽的圆角规划

健康信息越发重要,手撸一个展现今日步数的小组件,分配androidplot结构展现具体的步数图表。

override fun onhttp://www.baidu.comUpdate(...) {
for (github敞开私库appWidgetId in appWidgetIds) {
showBarChar检验你的自卑程度tToWidgetchrome浏览器安卓版下载(context, appWidgetManager, appWidgetId)
}
}
private fun showBarChartToWidget(...) {
// Create plot view.
val plot = XYPlot(context, "Pedometers chart")
...
// Set graph shape
plot.setBorderStyle(Plot.Bordgithub是干什么的erStyle.ROUNDED, 12f, 12f)
p检验怀孕的试纸图片一深一浅lot.isDrawingCacheEnabled = true
// Refl检验郁闷症的20道题ect chart'java面试题s bitmap to widget.github中文社区
val bmp = plot.drawingCache
val remoteViews = RemoteViews(context.packageName, R.layout.widget_pedometer)
remoteViews.setBitmap(R.id.bar_chart, "sechromecasttI检验郁闷症的20道题mageBitmap", bmp)
appWidgetManager.updateA检验ppWihttp 404dget(appWidgetId, remoteViews)
}

不用特别适配,直接运转到12上,就能有github是干什么的圆角作用。

Android 12上面目一新的小组件:漂亮、快捷和有用

但布局需求遵从如下两点主张:

  • 四周的边角不要放置内容,防止被切掉
  • 布景不要选用通明的、空的视图或布局,防止体系无法勘探距离去进行裁切

事实上,体系预设了如下dimension以设置默许的圆角github敞开私库体现。

  • system_app_widget_background_radius: 小组件布景的圆角规范,默许16dp,上限28dp
  • system_app_widget_inngithub永久回家地址er_radChromeius: 小组件内部视图的圆角规范chrome官方下载 ,默许8dp,上限20dp
  • system_app_widget_internal_padding:内部视图的padding值,默许16dphttp 500

看下官方的对于内外圆角规范的示意图。

Android 12上面目一新的小组件:漂亮、快捷和有用

留神:

  1. 这些dimension能够被ROM厂商或3rd Launcher批改,纷歧定能确保共同性的规范
  2. 官方没有说明小组件的内java作业培训班部视图怎样才干运用上内部圆角规范,DEMO确实也没有适配上,不知道是ROM的问题仍是App的问题,有待后续的进一步研讨

当然12从前的体系想要支撑圆角规划也很简略:自定义radius的attribute,运用在shape drawahttpclientble上,手检验用例动将drawable运用到background。具体可参阅官方Sample:

github.com/android/use…

3. 动态的色彩作用

给小组件增加暗黑主题支撑即可主动适配动态色彩。

<!-检验郁闷程度的问卷- values/themes.xml -->
<resources xmlns:toolChromes="http://schemas.android.com/tjava难学吗oolsjava怎样读">
<stylechrome浏览器 name="Theme.AppWidget" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<item name=检验网速"colorPrimary">@color/purple_500<java难学吗/item>
<item检验怀孕的试纸图片一深一浅 name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
...
</style>
</resourcehttps和http的差异s>
<!-- valjava开发ues-night/themes.xml -->
&http 302lt;resources xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.AppWidget" parent="Theme.MaterialComponents.DayNight.DarkActhttp 404ionBar">
<item name="colorPrimary">@color/purplgithub打不开e_200</item>java怎样读
<item name="colorPrimaryVariant">@color/purple_700&chrome手机版lt;/item>
<ite检验怀孕的试纸图片一深一浅m name="colorOnPrimary">https和http的差异@color/black</item>
...
</style>
<httpclient/resources>
Android 12上面目一新的小组件:漂亮、快捷和有用

4. 改善的小组件预览

12针对小组件挑选时的预览界面进行了改善,便利展现更加精准的预览作用。

4.1 动态预览

之前只能运用previewImage特征展现一张预览图,功用迭代的进程中遗忘更新它的话,或许导致预览和实践作用发生过失。

12新引入了previewLayout特征用以装备小组件的实践布局,使检验你的自卑程度得用户能够在小组件的挑选器里看github是干什么的到更加挨chrome官方下载近实践作用的视图,而不再是一层不javaee变的静态图片。

这样一来在确保作用共同的一起免去了额定维护预览图的费事。

<appwidget-providehttp://192.168.1.1登录r
<!-- 既存的图片特征指定UI供给的javascript规划图 -->
android:previewImage="@drawable/app_widget_pedometer_preview_2"
<!-- 新的预览API里指定实践的布局 -->
android:previewLayout="@lay检验你的自卑程度out/widget_pedometer"
</appwidget-chromebookprovider>

左边是步数小组件一初步的规划图,右边是最后的实践作用。

Android 12上面目一新的小组件:漂亮、快捷和有用

假定遗忘压服UI从头作HTTP图的话,在11上的预览图会和实践作用有较大过失。而12上不用在乎规划图是否更新,凭借新的github永久回家地址API即可直接预览实践作用,所见即所得。

Android 12上面目一新的小组件:漂亮、快捷和有用

一般来说previewLayout特征最好指定小组件的实践布局。但假定预览的检验数据和实践的默许值有抵触的话,能够指定专用的预览布java作业培训班局,只需求确保布局的共同。

4.2 增加预览说明

description特征则能够在小组件预览的下方展现额定的说明,便于用户更好地了解其功用定位。

<appwidget-provider
android:description="@string/app_widget_pedometer_description">
</appwidget-provider>
Android 12上面目一新的小组件:漂亮、快捷和有用

需求提示的是description特征并非12新增,但12之前的挑选器不支撑展现chrome浏览器安卓版下载这个说明。

5. 支撑新的交互控javaee

之前的小组件不支撑CheckBox等控件,从12初步全面支撑CheckBojava怎样读xSwitchRadioButton三种状况控件。

下面是选用这三种控件的简略作用。

Android 12上面目一新的小组件:漂亮、快捷和有用

再做个简略的待办事项以更好地说明状况小组件的运用。

// 小组件件布局里指定CheckBox控件即可
<LinearLayout ...
android:layout_width="matchttpclienth_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:chromecasttheme="@style/Theme.AppWidget.AppWidgetContainer">
<include layout="@layout/widget_tochrome什么意思do_lis检验蛙t_title_region" />
<CheckBox
android:id="chrome直接下载@+id/checkbox_first"
style="@style/Widget.AppWidchrome直接下载get.Checkbox"
android:layout_width="match_parent"
android:layout_heihttp 302ght="wrap_content"
android:text="@string/todo_listgithub下载_sample_1"
Tools:text="@string/todo_list_too检验怀孕的试纸图片一深一浅l" />
...
</LinearLayout>
Android 12上面目一新的小组件:漂亮、快捷和有用

假定将java难学吗相同的代码运转到11上,则会闪现加载失利。

日志

AppWidHTTPgetHostView: Error inflating AppWidget AppWidgetProviderInfgithub永久回家地址o(UserHandle{0}/ComponentInfo{com.example.splash/com.example.splash.widget.Tod检验用例oListAppWidget}): android.vie检验蛙w.InflateExceptionhttpwatch:
Binary XML file line #13 in com.example.splash:layout/widget_todhttp协议o_list: Binary XML file line #13 in com.example.splash:layout/widget_todo_list: E检验手机是否被监控rror inflating class android.widget.CheckBox

Android 12上面目一新的小组件:漂亮、快捷和有用

文本内容不确定的话,能够经过代码动态地操控文本,一起还能够监听用户的挑选作业。

比方我们要展Java示Andjava怎样读roid开发者现在要学习的三座大山,选中的时分弹出Toast。

private fun updateAppW检验idget(...) {
val viewId1 = Rjava作业培训班.idgithub敞开私库.checkbox_first
val pendingIntent = PendingIntent.getBroadcast(...)
vchrome安卓下载al rv = RemjavascriptoteViews(context检验.packageName, R.layout.widget_todo_ljava开发ist)java作业培训班
rv.apply {
// 设置文本
setTextViewText(viewIdhttpwatch1, contextgithub永久回家地址.resources.getString(R.string.todo_list_android))
...
// 设置CheckBox的默许选中状况
setCompoundButtonChecked(viewIdjava开发1, true)
// 监听相应的CheckBox的选中工github下载
setOnCheckedChangeResponse(
viewId1,
RemoteViews.RemoteResponse.fromPendingIntent(pendingIntent)
)
}
appWidgetManager.updateAppWidget(appWidgetId, remoHTTPteViews)
}
override fun onReceive(context: Context?, inchrometentchrome手机版: Intent?) {
...
val checked = intent.extras?.getBoolean(RemoteViews.EXTRA_CHECKED, false) ?:httpclient false
val viewId = intent.extras?.getInt(EXTRA_VIEW_ID) ?: -1
Toaschromecastt.makeText(
context,
"ViewId : $viewgithub直播渠道永久回家Id's checked status is now : $checked",
Toast.LENGjavaeeTH_SHORT
).show()
}
Android 12上面目一新的小组件:漂亮、快捷和有用

6. 便利地装备规范

12针对小组件的规范检验工程师装备环节也进行了改善,更加便利。

6.1 精确的规范

在已有的minWidth、minResizeWidth等特征以外,新增了几个特征以更便利地装备小组件的规范。

  • targetCellWidth和targetCellHeight:占有Launcher上Cell的宽高格数,用以替代minWidth和minHehttpwatchight。事实上Launcher是以Cell的单位来展现小组件的,所以Java直接指定Cell数显然更合理
  • maxResizeWichromebookdth和maxResizeHeight: 装备Launcher上容许装备的最大规范,补偿minResizeWidth和minResizeHeight的缺乏
<appwidget-provider
...
android:targetCellWidth="github中文官网网页3"
and检验纸怎样看是否怀孕roid:ta检验rgetCellHechromecastight="2"
andrhttpwatchoid:maxResizeWidth="检验25检验网速0dp"
android:maxResizeHeight="java模拟器110dp">
</appwhttp 404idget-provider>
Android 12上面目一新的小组件:漂亮、快捷和有用

6.2 活络调度规范

iOS上增加小组件后规范就固定了github怎样下载文件,不支撑调度。而Android 12上小组件在长按Java后即可活络调度。

Android 12上面目一新的小组件:漂亮、快捷和有用

想要支撑这个特性只需求http署理widgetFeaturjava面试题es特征检验工程师指定reconfigurablejavaee即可。

<appwidget-provider
android:widgetFeatures="reconfigurable">
</appwidget-provider>

The reconfigurable flag w检验as intchrome什么意思roduced in Android 9 (APgithub敞开私库I level 28), but it was not widely supported检验 in launchhttpclienters until Android 12.

事实上这个特征早在Android 9的java难学吗时分就引入了,但http://192.168.1.1登录官方说从S初检验用例步才全面支撑。我在11版其他Pixel Laugithub下载ngithub官网cher上发现现已能够直接调度规范了java模拟器,不知道官方的意思是不是其他Launcher并不支撑。

6.3 选用默许装备

configure检验特征能够在小组件展现之前建议一个装备画面,供用户挑选小组件所需的内容、主题和风格等。

假定想让用户快速看到作用,即不想展现这个画面的话,只要在widgetFeatures里指定新的cgithub下载onfiguration_optional值即可。

<appwidget-provider
...
anhttpwatchdroid:configure="com.ehttp署理xample.apphttp协议widget.activity.WidgetConfigureActivity"
android:widgetFeatures="reconfigurable|confchromeiguration_optional">
</appwigithub中文社区dget-provider>

后边改主见了又想替换配检验备的话,可http://www.baidu.com以长按小组件找到装备的入口。

一是小组件右下方的修正按钮,二是上方呈现的Setup菜单,这在从前的版别上是httpclient没有的。

Android 12上面目一新的小组件:漂亮、快捷和有用

7. 高chrome直接下载效地操控布局

小组件内容较多的时分,为了展现的无缺往往会给它约束Size,这意味着只要Launcher空间满意巨细组件才干成功放置。当Launcher空间捉急的时分就为难了,用户只能在移除其他小组件和抛弃你的小组件之GitHub间做个选择。

革除这种困扰的最佳做法是在不同的Size下选检验工程师用不同的布局,对展现的内检验容做出取舍。即Size足够的状况下供给更多丰检验蛙富的内容,反之只呈现最基本、最常用的信息http协议

7.1 照顾式chrome手机版布局

之前是怎样做到这一需求呢?除了预设各种规范的小组件的一般思路以外,经过onAppWidgetOptionsChanged回调也能够控GitHub制布局的改动,但往往十分chrome什么意思繁琐。

而12上凭借新增的RemoteViechrome安卓下载w检验郁闷程度的问卷s(Map<SizeF, RemoteViews> mahttp 302p)API能够大大简化结束进程。在小组件放置的时分就将Size和布局的映射联络奉告体系,当Size改动了AppWidgetManager将主动照顾更新对应的布局。

比方待办事项小组件在Size为3×2的时分额定展现添检验手机是否被监控加按钮,2×2的时分只javaee展现事项列表的相应式布局。

Android 12上面目一新的小组件:漂亮、快捷和有用

代码的结束也简略清楚:

privatechrome fun updateAppWidgetWithResponsiveLayouts(.java言语..)chrome安卓下载 {
...
// 规范够宽的状况下Button才闪现
val wideView = RemoteViews(github中文社区rv)
wideViewGitHub.setViewV检验手机是否被监控isibility(button, View.java言语VISIBLE)
valchrome安卓下载 viewMjava面试题apping: Map<SizeF, RemoteVijava怎样读ews> = mapOf(
SizeF(100f, 100f) to rv,
SizeF(200f, 100f)httpwatch to wideView
)
// 将Size和RemoteViews布局的映射联络奉告AppWidgetManager
val remoteViews = RemoteVichrome什么意思ews(viewMapping)
appWidgetManager.updateAppWidget(appWidgetId, remoteViewschromecast)
}

优点:

  • 免于同一功用供给一堆规范小组件检验的繁琐,减轻挑选器的背负
  • 结束简略,主动照顾

7.检验2 精确布局

现在移动设备的规范、形态丰富多样,尤其是折叠屏更加老到。假定照顾式布局仍不能满意更精细的需求,能够在Size改动的回调里,获取方针Size对布局进一步的精确把控。

运用AppWidjava作业培训班getManager新增的OPTION_APPWIDGEThttp://192.168.1.1登录_SIZES KEY能够从AppWidgetManager里拿到方针Size。

// 监听方针规范
over检验工程师ride fun onAppWidgetOptionsChanged(...) {
...
// Get the new sizes.
valhttp 500 sizes = newOptions?.getParcelableArrayList<SizeF>(
AppWidgetManagergithub下载.OPTION_APPWIDGET_SIZES
)
// Do nothing if sizes is not provided by the launcher.
if (sizes.isNullhttp://www.baidu.comOrEmpty()) {
return
}
Log.d("Widgehttp署理t", "PedometerAppWidget#ojava作业培训班nAppWidgetOptionsChanged() size:${sizes}")
// Get exact layout
if (BuildCompat.isAtLeastS()) {
val remoteViews = Remojava难学吗teViewjava模拟器s(sizes.associatgithub官网eWith(::createRemoteViews))
appWidgetManager?.updateAppWidget(appWidgetId, remoteViews)
}
}

如下的日志闪现Size改动的时分会将方针Size回传。

Widget  : PedometerAppWidget#oJavanAppWidgetOp检验用例tionsChanged() size:[377.42856x132.0, 214.5java面试题7143x216.57143http://www.baidu.com]

之后从HTTP预设的精细java怎样读布局里匹配相应的视图。

private fun createRemoteViews(size: SizeF): Remotgithub敞开私库ehttp://192.168.1.1登录Views {
val smallView: RemoteViews = ...
val tallView: RemoteViews = ...
val wideView: Rhttp署理emotegithub敞开私库Views = ...
...
return when (size) {
SizeF(100f, 100f) -> smallVihttp 302ew
SizeF(100f, 200f) -&gjava模拟器t; tallView
SizeF(200f, 100f) -&gChromet; wideView
...
}
}

留神:实践上Siz检验e列表由Launcher供给,假定3rd Launcher没有适配这一特性的话,回传的Size或许为空

8. 安闲地更新视图

RemoteViews作为小组件视图的重要管理类,本次OSV也增加了许多API,以便更加安闲地操控视图的展现。

  • 更改色彩的setColorStateList()
  • 更改边距的setViewLayoutMargin()
  • 更改宽高的setViewLagithub下载youtWidthChrome()

这些新APIgithub直播渠道永久回家能够助力我们实许多便利的功用,比方CheckBoxhttp协议选中之后更新文本色彩,思路很简略:

  1. 监听小组件的点击作业并传递方针视图
  2. 根据CheckBox的状况获得预设的文本色彩
  3. 运用setColorStateList()更新
ovjava作业培训班erride fun onReceive(context: Context?, intent: Intent?) {
...
// Gejava面试题t target widget.
val appWidgetManager = AppWidgetManager.getInstance(cont检验郁闷症的20道题ext)
val thisApp检验郁闷程度的问卷Widget = ComponentName(context!!.packageName, TodoListAppWidget::class.java.name)
val appWidgetIds = appWidgetManager检验网速.getAppWidgetIds(thisAppWidget)
// Update widget color parameters dynamically.
for (appWidgetId in appW检验郁闷程度的问卷idgetIds) {
val remoteViews = RemoteViews(contgithub敞开私库ext.packageName, R.layout.widget_todo_list)
remoteViews.setColorStateList(
viewIchrome浏览器d,
"setTextColor",
getColorStateList(contexchrome浏览器安卓版下载t, cchromehecked)
)
appWidgetManager.updateAppWidget(chrome官方下载appWidgetchrome什么意思Id, remoteViews)
}
}检验郁闷程度的问卷
private fun getColohttp://192.168.1.1登录rStateList(context: Chttps和http的差异ohttps和http的差异ntext, checkStatus: Boolean): ColorStategithub敞开私库List =
if (checkStatus)
ColorStateList.valueOf(context.getColor(R.color.widget_checked_text_color))检验郁闷症的20道题
else
ColorStateLisjava言语t.valueOf(github敞开私库context.gegithub敞开私库tColor(R.color.widget_github敞开私库unchecked_text_color)java模拟器)
Android 12上面目一新的小组件:漂亮、快捷和有用

再比方Chartchrome官方下载线图太小,看不清楚。能够github敞开私库让它在点击之后扩大,再点击之后康复原样。

// 根据记载的检验郁闷症的20道题缩放状况获得预设的宽高
// 经过setViewLayoutWidth和setViewLayoutHeight更新宽高
ovechrome官方下载rrigithub是干什么的de fun onReceive(context: Context?, intent: Intent?) {
...
val widthScaleSjava难学吗ize = if (scaleOutStatus) 200f else 260f
val heightScaleSize = if (scaleOutStatus) 130f else 160f
// Update widget layout parameters dynamically.
for (appWidgetId in appWidge检验工程师tIds) {
val remoteViews = RemoteViews(context.packageName, R.chromelayout.widget_pedometer)http 500
remoJavateViews.setViewLayoutWidth(viewId, widthScalhttpclienteSize, TypedValue.COMPLEX_UNIT_DhttpwatchIP)
remoteViews.setViewLayoutHeight(GitHubviewId检验纸怎样看是否怀孕, heightScjava作业培训班aleSize, TypedValue.COMPLEX_UNIT_DIP)
appWidgetManager.updateAppWidget(appWidgetId, remoteViews)
}
}
Android 12上面目一新的小组件:漂亮、快捷和有用

9. 流通的建议作用

12版别上点击Widget建议App的时分能够呈现更流通java开发的过渡作用,适配也很简略。官方指示只需给小组件的根布局指定android的 backgoround id即可。

<LinearLayout
...
android:id="@android:id/background">
</LinearLayout>检验你的自卑程度

实践的动作闪现增加这个ID后App建议没有什么改动,个中原因需求继续研讨。

12初步对从Broad检验郁闷程度的问卷castjava开发 Receiver或Serivce建议Activity做了更严厉的捆绑,但不包含Widget建议的场合。但为了防止视觉上的突兀,这种后台建议的状况下不http 500展现搬家动画。

10. 简化的数据绑定

小组件里展现ListView的需求也很常见,供给数据的话需求声明一个 RemoteViewsService 以回来RemotchromebookeViewsFactory,比较绕。

而12里java模拟器新增的 setRemoteAdapter(int , RemoteCollectionItems) API则能够大大简化这个绑定进程。

比方制造一个即将到来的作业列表小组件,经过这个APIhttp://192.168.1.1登录便能够高效注入数据。

private fun updateCountDownList(...) {
...
// 创立用于构建Remote集结数据的Builder
val builder = RemoteViews.RemoteCollectionItems.Builder()
val menuResources = context.resources.obtainTypedArray(R.array.count_down_list_titles)
// 往Builder里增加各Item对应的RemoteViews
forgithub怎样下载文件 (indgithub中文官网网页ex in 0 until menuResou检验郁闷症的20道题rces.length()) {
...
builder.addItem(index.toLong(), constructRemochrome什么意思teViews(http 500context, resId))
}
// 构建Remote集结数据
// 并经过setRemoteAdapter直接放入到ListView里
val collectionItems = builder.setHasStChromeableIds(true).build()
remoteViews.setRemhttp协议oteAdapter(R.id.count_down_list, collectionItems)
...
}
// 创检验工程师建ListView各Item对应的Remotejava初学Views
private fun constructRemoteViews(...): RemoteViews {
val remoteViews = RemoteViews(context.packageName, R.layout.item_count_dogithub怎样下载文件wn)
val itemData = context.resources.getjava模拟器StringArray(stringArrayId)
// 遍历Item数据行设置对应的文本
itemData.forEacchrome安卓下载hIndexed { index, value ->
val viewId = when (index) {
0 -> R.id.item_chrome浏览器安卓版下载titgithub直播渠道永久回家le
1 -> R.id.item_time
...
}
remoteVjava模拟器iews.setTextViewText(viewId, value)
}
return remoteViews
}
Android 12上面目一新的小组件:漂亮、快捷和有用

假定Item的布局不固定不止一种,能够运用seHTTPtViewTypeCount指定布局类github官网检验郁闷症的20道题的数目,奉告ListView需求供给的ViewHolder种类。假定不指定也能够,体系将主动辨认布局的种类,需求体系额定处理而已。

但要留神:假定指定的数目和实践的javascript纷歧致会引发github打不开反常。

IllegalArgumentExceptionjava开发: View type count is set to 2, but thttp://192.168.1.1登录he collectiochrome浏览器n chttp 404ont检验蛙ains 3 different layout ids

http://192.168.1.1登录他,需求补偿一检验工程师下,支撑该API的View有必要是AdapterView的子类,比方常github官网见的github是干什么的ListViewhttp 500、GridView等。RecyclerView是http://www.baidu.com不支撑的,毕竟小组件里数据量不多,不能运用也没联络。

11. 新增APhttps和http的差异I总结

简明罗列一下12针对小组件新java怎样读增的API,便利我们查阅检验工程师

RemoteVi检验工程师ews类

方法 作用
RemoteViews(Map<S检验izeF, RemoteViews>) 根据照顾式布局映射表创立方针RemoteViews
addStableViehttp署理w() 向RemoteViews动态增加子View,类似ViewGroup#addView()
set检验工程师CompoundButtonChecked() 针对Checkgithub永久回家地址Box或Switch控件更新选中状况
setRadioGroupChecked() 针对RadioButton控件更新选中状况
setRemoteAdapter(int , RemoteCohttpwatchllectionItems) 直接将数据填充进小组件的ListView
setColorStateList() 动态检验手机是否被监控更新小组检验怀孕的试纸图片一深一浅件视图的色彩
sehttp署理tViewLayoutMargin() 动态更新小组件视图的边距
sjavascriptetViewLayoutWidth()、setViewLayoutHeight() 动态更新小组件视图的宽高
setOnCheckedChangeResponse() 监听java模拟器CheckBox等三种状况小httpclient组件的状况改动

XML特征

特征 作用
description 装备小组件在挑选器里的补偿描绘
previewLayout 装备小组件的预览布局
reconfigurable 指定小组件的规范支撑直接调度
configuration_optional 指定小组件的内容能够选用默许规划,无需建议装备画面
targegithub官网tCellWidth、targetCellHeight 约束小组件所占的Launcher单元格
maxResizeWidth、maxResizeHeight 装备小组件所能支撑的最大高宽规范

结语

经过上面的解读,我们可httpclient以感受到Google在小组件的从头规划上耗费了许多尽力,它给这个老旧的功用注入许多新玩java开发法和新花样。

简明回想一下Android 12里小组件的新特性:

  • 更便利的小组件挑选器
  • 更美丽的chrome浏览器圆角边框规划
  • 更活络检验手机是否被监控的小组件预览
  • 更无缺的控件支撑
  • 更便利的规范调度
  • 更精准的布局操控
  • 更安闲的视图更新
  • 更简练的列表数据绑定

如此之多的新特性,在助力小组件高效开http署理发的一起,还能给用chrome户呈现更加检验网速优异的运用体会github中文官网网页

侍从Android 12的脚步github怎样下载文件,快快检验起来,让现有的小组件从头敞开光荣。

未决事项

  1. 小组件内部视图的检验郁闷症的20道题圆角规范怎样适配?
  2. 小组件建议App的流通github下载过渡作用怎样结束,是什么作用?

本文DEMgithub中文社区O

NewAppWgithub是干什么的idget

参阅文档

官方宣传

chromebook方介绍文档

官方Sample

举荐阅读

Android 12上全新的运用建议画面,还不适配一下?

全面复盘Android开发者简略忽视的Backup功用。

为什么举荐运用CameraX?