【LSP】Android小部件Widget开发过程中的坑和总结

lanshao   ·   发表于 3个月前   ·   编程代码

概述
官方参考
Build an App Widget

效果图
放张效果图,这是我玩的桌面 app 文件夹

AndroidManifest.xml
Receiver
切记里面的字母不要弄错,最好复制粘贴再修改相对应自定义的地方就好,一个字母的错误搞了我一天,吐血


android:name="android.appwidget.provider"
android:resource="@xml/widget_desktop_options" />




Service
如果小部件中使用到了列表项如 ListView,GridView 等,在绑定数据时需要使用 RemoteViewsService 并提供一个 RemoteViewsFactory 实例来填充数据 而非 Adapter
再提,这里面一定不能敲错字母,特别是那个 permission 也一定要有,不然无法绑定数据

android:name=".desktop.DesktopViewsService"
android:permission="android.permission.BIND_REMOTEVIEWS" />
Options
res/xml/
widget_desktop_options.xml

android:minWidth="40dp"
android:minHeight="40dp"
android:initialLayout="@layout/widget_desktop"
android:resizeMode="horizontal|vertical"
android:widgetCategory="home_screen">

常用参数
Size
尺寸大小最终以单元格数据来显示,但定义时为 dp

单元格数转换基本工式 size = 70 x cells - 30

如:1格 = 70 x 1 - 30 = 40dp

最小尺寸定义时最好不要超过 4 个单元格就是 250dp

updatePeriodMillis
更新时间毫秒数,即间隔多少时间呼叫一次 onUpdate() 方法

initialLayout
加载布局文件

Using App Widgets with Collections
小部件中使用列表项

官方参考
Google Develper

AppWidgetProvider

RemoteViewsService
public class DesktopViewsService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
return new DesktopViewsFactory(this, intent);
}
}
RemoteViewsFactory
类型于 BaseAdapter,重点是 onCreate() 加载数据, getViewAt() 方法返回布局绑定数据

0 Reply   |  Until 3个月前 | 3227 View
LoginCan Publish Content