当前位置: 首页 > 科技观察

为Android更新你的widgets12

时间:2023-03-22 15:10:21 科技观察

对于SDK级别31设备,使用主题DeviceDefault.DayNight创建自定义主题。values-v31/themes.xml或者,如果您的应用使用Material组件,您可以使用Theme.MaterialComponents.DayNight作为基本主题,而不是使用Theme.DeviceDefault。布局/widget_checkbox_list_title_region.xml......△浅色/深色主题中的静态与动态颜色对比圆角从Android12开始,圆角会自动应用于widgets。这也意味着圆角会剪掉部分小部件的内容。为了避免此类问题,并提供与其他小部件和系统样式一致的外观和感觉,您可以使用system_app_widget_background_radius为小部件的背景添加圆角,并使用system_app_widget_inner_radius为小部件内部的视图添加圆角。后一个值需要比system_app_widget_background_radius小8dp。添加上述修改时,请注意,如果您的小部件包含靠近角落区域的内容,则该内容可能会被裁剪。要解决此问题,您需要添加足够大的填充以避免小部件的内容与圆角之间发生冲突。values/attrs.xmlvalues/themes.xml16dp8dp一直以来,widgets(小部件)一直是Android用户体验的核心部分,很多应用都通过widget来增加用户粘性。用户喜欢使用小部件,因为它们允许您在不打开应用程序的情况下使用应用程序功能并自定义设备的主屏幕。Android12更新了现有的WidgetAPI并重塑了widget设计以适应“MaterialYou”设计语言。这些更新可帮助您使用设备的主题颜色和圆角构建更美观的小部件,从而在搜索和放置小部件时提高小部件的可发现性和视觉外观。△更新前(Android11)和更新后(Android12)浅色和深色主题对比本系列,我们将带您更新widgets以适配Android12。在本文中,我们将进行一些简单的修改,使您的widget在Android12设备上看起来更精致,并在旧设备上提供一致的用户体验。在第二篇文章中,我们将了解使小部件更加个性化、响应迅速和交互性更强的新API。视觉变化对于用户来说,最直观的视觉变化无疑是风格和设计的变化。更新视觉元素,例如颜色和圆角,可以给用户带来耳目一新的感觉。要添加这些修改,我们建议您创建自定义主题。为MaterialYou添加动态颜色旨在提供更加个性化的用户体验。在Android12中,动态颜色使您的小部件看起来与其他小部件和系统保持一致。小部件可以使用系统默认主题Theme.DeviceDefault.DayNight,并在小部件的UI元素中使用主题颜色属性。对于SDK级别低于31的设备,您需要创建一个继承自DeviceDefault的自定义主题。values/themes.xml对于SDK级别31设备,使用主题DeviceDefault.DayNight创建自定义主题。values-v31/themes.xml或者,如果您的应用使用Material组件,您可以使用Theme.MaterialComponents.DayNight作为基本主题,而不是使用Theme.DeviceDefault。布局/widget_checkbox_list_title_region.xml......△浅色/深色主题中的静态与动态颜色对比圆角从Android12开始,圆角会自动应用于widgets。这也意味着圆角会剪掉部分小部件的内容。为了避免此类问题,并提供与其他小部件和系统样式一致的外观和感觉,您可以使用system_app_widget_background_radius为小部件的背景添加圆角,并使用system_app_widget_inner_radius为小部件内部的视图添加圆角。后一个值需要比system_app_widget_background_radius小8dp。添加上述修改时,请注意,如果您的小部件包含靠近角落区域的内容,则该内容可能会被裁剪。要解决此问题,您需要添加足够大的填充以避免小部件的内容与圆角之间发生冲突。values/attrs.xmlvalues/themes.xml16dp8dp16dpvalues-v31/themes.xml@android:dimen/system_app_widget_background_radius@android:dimen/system_app_widget_inner_radius/风格>values/styles.xml@android:id/background如果你的minTargetSDK小于21,那么你需要提供SDK版本21的style,因为在drawable对象上使用android:attr/colorBackground需要SDKversion至少21现在您已经创建了您的主题,是时候在您的小部件布局上设置样式了。layout/widget_grocery_list.xml...△与原样式相比,应用Android时自动圆角效果和效果过渡带有圆角和padding12在通过小部件打开时提供过渡效果。此转换由系统自动处理,不会出现在旧版本的Android上。要启用此效果,您需要在小部件布局根元素上指定一个id,并将其值设置为android:id/background。...如果你的widget使用了broadcasttrampoline,也就是你的widget在用户点击的时候创建了一个PendingIntent,通过broadcast或者service来启动Activity,那么在这种情况下,过渡动画是不会生效的。WidgetPickerOptimizedPreview的改进Android12包括一个新的和改进的widgetpicker。新的小部件选择器不使用静态可绘制资源,而是使用XML布局来动态创建缩放的小部件预览。如果您的小部件不包含动态元素,例如ListView或GridView,您可以使用小部件的布局来实现预览。要实现预览,需要直接在原始布局上设置默认值。在布局上设置默认值可能会造成少量延迟,因为占位符的值会先使能前的实际值。为避免此问题,您可以为预览创建单独的布局文件并启用自定义预览主题。PreviewTitlePreviewSubject创建预览主题后,您可以将其应用于布局中的预览元素。layout/my_widget_preview.xmllayout/my_widget_actual.xml最后,您需要将小部件的布局设置为appwidget-provider的previewLayout属性。xml/app_widget_info_checkbox_list.xml△静态预览效果与缩放预览效果对比对于显示多个元素的ListView、GridView或Stack,不能直接显示在layout设置默认值。对于这些视图,您可以为小部件预览创建另一个布局,并在布局中设置固定值。为实现上述目标,推荐的最佳实践是使用标签重用部分布局以启用默认值,而无需复制整个布局。您可以将新布局设置为appwidget-provider的previewLayout属性。描述您还可以设置描述属性以作为描述信息显示在小部件选择器上。尽管这是可选的,但提供描述性信息可以帮助用户更好地理解小部件的功能。app_widget_info_checkbox_list.xml△WidgetDescriptionSummary在本文中,我们将向您展示如何更新widget设计并提供更好的用户体验。以上可以快速更新你的小部件以适配Android12,你的用户可以非常直观地看到差异。但这还不是全部。在下一篇文章中,我们将了解新的API,它们可以使您的小部件更加个性化、响应迅速和交互性更强。