AppWidget

1.创建一个app widget需要

AppWidgetProviderInfo object: 用于描述AppWidget的元数据,比如AppWidget的layout,更新频率,AppWidgetProvider等。

AppWidgetProvider class implementation: 基于broadcaster event定义一些程序员可以和AppWidget交互的基本方法,当AppWidget发生更新,删除等操作时候,能够收到相应的广播信息。

View layout

App Widget configuration Activity

 

2.

(1) 在manifest文件中定义

        <!--Specifies the AppWidgetProvider used by the App Widget -->
        <receiver android:name="ExampleAppWidgetProvider" >
            <!--specifies that the AppWidgetProvider accepts the ACTION_APPWIDGET_UPDATE broadcast. 
            This is the only broadcast that you must explicitly declare. The AppWidgetManager
            automatically sends all other App Widget broadcasts to the AppWidgetProvider
            as necessary. -->
            <intent-filter>
                <!--This is the only broadcast that you must explicitly declare.
                The AppWidgetManager automatically sends all other App Widget broadcasts
                to the AppWidgetProvider as necessary. -->
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <meta-data
                android:name="android.appwidget.provider"
                <!--Specifies the AppWidgetProviderInfo resource location -->
                android:resource="@xml/example_appwidget_info" />
        </receiver>

 

(2) 创建AppWidgetProviderInfo object.

Define the AppWidgetProviderInfo object in an XML resource using a single <appwidget-provider> element and save it in the project's res/xml/ folder.

(3) 创建layout.

 

(4) AppWidgetProvider类

首先要确定AppWidgetProvider类已经在manifest文件中声明过了。

onUpdate()是AppWidgetProvider最重要的一个类。只要用户不用configration activity, 只要widget被添加到宿主后, 这个方法就会被调用到。

当widget需要和用户发生交互事件的时候,需要在这个方法里注册handler. 如果用户不需要创建数据库或者是任何清理工作,这个方法很可能就是我们需要的唯一方法。

 

(5) AppWidget Configration Activity

当用户加载一个AppWidget的时候需要对Appwidet进行诸如颜色,大小,更新时间等的个性设置的时候,就需要AppWidget Configration Activity。

 

---未完待续。

 

 

 

 

根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
### 开发 Android AppWidget 的实现方法 开发 Android AppWidget(应用小部件)功能,主要涉及以下几个步骤: #### 1. 创建 AppWidgetProvider 类 AppWidgetProvider 是一个广播接收器,用于接收和处理与桌面小部件相关的广播事件。需要在项目中创建一个继承自 `AppWidgetProvider` 的类,并实现其方法。以下是一个简单的示例代码: ```java import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.Context; import android.widget.RemoteViews; public class MyAppWidgetProvider extends AppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { for (int appWidgetId : appWidgetIds) { // 创建 RemoteViews 对象,绑定布局文件 RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout); // 设置小部件显示的文本 views.setTextViewText(R.id.widget_text, "Hello, AppWidget!"); // 更新小部件 appWidgetManager.updateAppWidget(appWidgetId, views); } } } ``` #### 2. 在 AndroidManifest 中注册 AppWidgetProvider 由于 AppWidgetProvider 本质上是一个广播接收器,因此需要在 `AndroidManifest.xml` 文件中注册它。注册时需要声明对应的 `intent-filter` 和 `meta-data` 配置信息: ```xml <receiver android:name=".MyAppWidgetProvider"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/my_app_widget_provider_info" /> </receiver> ``` #### 3. 定义 AppWidgetProviderInfo 在 `res/xml/` 目录下创建一个 XML 文件,用于描述小部件的基本信息,例如最小尺寸、初始布局和更新周期等。以下是一个简单的示例: ```xml <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="294dip" android:minHeight="72dip" android:updatePeriodMillis="0" android:initialLayout="@layout/widget" /> ``` #### 4. 创建小部件布局文件 小部件的 UI 需要通过 `RemoteViews` 对象进行定义,因此需要创建一个布局文件(例如 `widget_layout.xml`),用于指定小部件的外观。例如: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="8dp"> <TextView android:id="@+id/widget_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="AppWidget Text" /> </LinearLayout> ``` #### 5. 更新小部件内容 在 `onUpdate` 方法中,通过 `RemoteViews` 对象设置小部件的内容,并通过 `AppWidgetManager` 更新小部件的显示。具体代码如下: ```java RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout); views.setTextViewText(R.id.widget_text, "更新后的文本"); appWidgetManager.updateAppWidget(appWidgetId, views); ``` #### 6. 处理小部件的其他生命周期事件 AppWidgetProvider 提供了多个方法,用于处理小部件的生命周期事件,例如: - `onEnabled(Context context)`:当小部件第一次被添加到桌面时调用。 - `onDisabled(Context context)`:当最后一个实例被删除时调用。 - `onDeleted(Context context, int[] appWidgetIds)`:当某个实例被删除时调用。 这些方法可以用于实现更复杂的功能,例如初始化资源或释放资源。 #### 7. 测试小部件 将应用部署到设备上后,长按桌面并选择“小部件”选项,找到自己的小部件并将其添加到桌面。验证小部件是否按照预期显示和更新内容。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值