overridefunonUpdate(...) {for (appWidgetIdin appWidgetIds) { showBarChartToWidget(context, appWidgetManager, appWidgetId) } } privatefunshowBarChartToWidget(...) {// Create plot view.val plot = XYPlot(context,"Pedometers chart") ...// Set graph shape plot.setBorderStyle(Plot.BorderStyle.ROUNDED,12f,12f) plot.isDrawingCacheEnabled =true// Reflect chart's bitmap to widget.val bmp = plot.drawingCacheval remoteViews = RemoteViews(context.packageName, R.layout.widget_pedometer) remoteViews.setBitmap(R.id.bar_chart,"setImageBitmap", bmp) appWidgetManager.updateAppWidget(appWidgetId, remoteViews) } 复制代码
不用特别适配,直接运行到12上,就能有圆角效果。
但布局需要遵从如下两点建议:
四周的边角不要放置内容,防止被切掉背景不要采用透明的、空的视图或布局,避免系统无法探测边界去进行裁切
事实上,系统预设了如下dimension以设置默认的圆角表现。
system_app_widget_background_radius: 小组件背景的圆角尺寸,默认16dp,上限28dpsystem_app_widget_inner_radius: 小组件内部视图的圆角尺寸 ,默认8dp,上限20dpsystem_app_widget_internal_padding:内部视图的padding值,默认16dp
看下官方的对于内外圆角尺寸的示意图。
注意:
这些dimension可以被ROM厂商或3rd Launcher修改,不一定能保证一致性的尺寸官方没有