Android微件的简单用法


即Widget

微件类型

  • 信息微件

    img

  • 集合微件

    img

  • 控制微件

    img

  • 混合微件

    img

限制

  • 手势

    微件只能支持以下两种手势:

    • 轻触
    • 纵向滑动

基本步骤

  1. 创建AppWidgetProvider的子类

    class KToolsAppWidgetProvider : AppWidgetProvider() {
    
        override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
            super.onUpdate(context, appWidgetManager, appWidgetIds)
            appWidgetIds.forEach { appWidgetId ->
                val pendingIntent: PendingIntent = Intent(context, MainActivity::class.java)
                        .let { intent ->
                            PendingIntent.getActivity(context, 0, intent, 0)
                        }
    
                val views: RemoteViews = RemoteViews(
                        context.packageName,
                        R.layout.layout_ktools_widget
                ).apply {
                    setOnClickPendingIntent(R.id.btn_action, pendingIntent)
                }
                appWidgetManager.updateAppWidget(appWidgetId, views)
            }
        }
    }

    这实际上是一个BroadcastReceiver.因此需要再Manifest文件中注册:

            <receiver
                android:name=".receiver.KToolsAppWidgetProvider"
                android:enabled="true"
                android:exported="true">
                <intent-filter>
                    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
                </intent-filter>
    
                <meta-data
                    android:name="android.appwidget.provider"
                    android:resource="@xml/ktools_appwidget_info" />
            </receiver>
  2. 配置文件

    <?xml version="1.0" encoding="utf-8"?>
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
        android:minWidth="100dp"
        android:minHeight="80dp"
        android:updatePeriodMillis="86400000"
        android:previewImage="@drawable/landscape"
        android:initialLayout="@layout/layout_ktools_widget"
        android:resizeMode="horizontal|vertical"
        android:widgetCategory="home_screen">
    </appwidget-provider>

到这里基本上就差不多了,实际开发比较少见,如果真的遇到了,再看文档进行实际开发不迟.

参考文章

  1. https://developer.android.com/guide/topics/appwidgets/overview?hl=zh-cn

文章作者: 姜康
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 姜康 !
评论
 上一篇
Jetpack App Startup库的使用 Jetpack App Startup库的使用
特点 应用启动时进行高性能的初始化 明确定义各种初始化的依赖关系 使用先添加依赖: implementation("androidx.startup:startup-runtime:1.0.0-beta01") 你得为每一个需要初始化的组
2020-10-25
下一篇 
Android快捷方式的简单用法 Android快捷方式的简单用法
限制从Android 7.1 开始支持 快捷方式类型 静态 以xml形式配置,并在主Activity中的<meta-data>标签下置顶 Android Studio并不能很好的支持,暂时没找到问题所在 动态 可以随时改变,即
2020-10-25
  目录