返回顶部
首页 > 资讯 > 精选 >AppWidget怎么在Android中使用
  • 331
分享到

AppWidget怎么在Android中使用

2023-06-14 11:06:21 331人浏览 薄情痞子
摘要

AppWidget怎么在Android中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、在AndroidManifest.xml中声明一个AppWidge

AppWidget怎么在Android中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一、在AndroidManifest.xml中声明一个AppWidget

首先我们需要在AndroidManifest.xml中声明AppWidgetProvider。格式如下:

<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_appwidget_info" />  </receiver>

可以看出AppWidgetProvider实际上就是一个BroadcastReceiver,它接收特定的Broadcast。<meta-data>标签描述了AppWidget所使用的元数据,android:resource则声明了定义元数据的xml文件的位置。

二、添加AppWidgetProviderInfo元数据

AppWidgetProviderInfo描述了AppWidget的本质特性,例如,AppWidget更新的周期,最小的宽度、长度,所使用的布局文件是什么,以及添加AppWidget需要启动的

configuration Activity等。我们需要在XML中来定义AppWidgetProviderInfo对象,这个XML文件应该保存在res/xml文件夹下。下面是一个范例:

<appwidget-provider xmlns:android="Http://schemas.android.com/apk/res/android"      android:minWidth="294dp"      android:minHeight="72dp"      android:updatePeriodMillis="86400000"      android:previewImage="@drawable/preview"      android:initialLayout="@layout/example_appwidget"      android:configure="com.example.android.MyAppWidgetConfigure"       android:resizeMode="horizontal|vertical">  </appwidget-provider>

<appwidget-provider>需要使用这个标签来定义AppWidgetProviderInfo。下面对范例中使用到的属性做下说明。

minWidthminHeight定义了AppWidget需要占据的最小的空间。

updatePeriodMillis定义了大概多久AppWidget需要更新一次,这里定义的只是一个大概的时间,系统不能做出精确的保证。

previewImage定义了在用户选择AppWidget时做现实的图标。

initialLayout定义了AppWidget所使用的布局文件。

configure定义了AppWidget在添加的时候需要启动的configuration Activity 用于执行配置的工作。

resizeMode定义了缩放模式。

三、创建AppWidget所使用的布局文件

在创建AppWidget时必须创建一个布局文件,为其提供布局描述。AppWidget创建视图时,需要根据RemoteViews来创建。而出于效率等因素的考虑,很多控件在

RemoteViews中是被支持的。以下列出能在RemoteViews中使用的UI控件:

layout : FrameLayout , LinearLayout , RelativeLayout

widget : AnalogClock , Button , Chronometer , ImageButton , ImageView , ProgressBar , TextView , ViewFlipper , ListView , GridView , StackView , AdapterViewFlipper

四、创建一个AppWidgetProvider的子类

前面提到过AppWidgetProvider就是一个BroadcastReceiver。对,它其实确实是继承自BroadcastReceiver,只是它为了更加方便的处理AppWidget的广播进行了封装。

AppWidgetProvider在接收到AppWidget的广播的时候,会根据类型分别触发以下几个方法:

onUpdate() : 当AppWidget需要更新时,会触发这个方法,我们需要重写这个方法,在里面实现更新的操作。如果没有定义configuration Activity,那么在添加一个AppWidget

时,也会触发此方法。

onDelete(Context , int[] ):当AppWidget从AppWidgetHost中删除时,会触发此方法。

onEnabled(Context ):如果为一个应用添加了多个AppWidget,只有在第一个AppWidget被添加时,此方法才会被调用。

onDisabled(Context ):当一个应用的最后一个AppWidget从AppWidgetHost中删除时,会触发此方法。

onReceive(Context , Intent ):这实际上就是BroadcastReceiver中的方法,当任何一个Broadcast被接收到时,会调用此方法,并且会在以上回调方法之前被调用。

五、创建一个ConfigurationActivity(可选)

如果需要AppWidget添加的时候做一些配置工作,就可以使用Configuration Activity。要使用ConfigurationActivity首先需要像普通的Activity一样在AndroidManifest.xml中

进行声明:

<activity android:name=".ExampleAppWidgetConfigure">      <intent-filter>          <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>      </intent-filter>  </activity>

只是这里需要添加action类型为android.appwidget.action.APPWIDGET_CONFIGURE的intent-filter。然后,需要在AppWidgetProviderInfo中进行声明:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"      ...      android:configure="com.example.android.ExampleAppWidgetConfigure"       ... >  </appwidget-provider>

最后,当然是需要创建Activity了,在Configuration Activity中,需要执行一些必要的操作:

1、获取AppWidget ID

Intent intent = getIntent();  Bundle extras = intent.getExtras();  if (extras != null) {      mAppWidgetId = extras.getInt(              AppWidgetManager.EXTRA_APPWIDGET_ID,               AppWidgetManager.INVALID_APPWIDGET_ID);  }

2、进行必要的配置操作,获取AppWidgetManager实例、更新RemoteViews

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);   RemoteViews views = new RemoteViews(context.getPackageName(),  R.layout.example_appwidget);  appWidgetManager.updateAppWidget(mAppWidgetId, views);

设置Activity result,并且返回一个Intent。

Intent resultValue = new Intent();  resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);  setResult(RESULT_OK, resultValue);  finish();

这样一个就创建好了一个Configuration Activity了。

注意android8.0以后无法收到发给自己的AppWidgetProvider,需要添加

intent.setComponent(new ComponentName(context,CacheProvider.class));
Intent intent = new Intent();intent.setAction(ACTION_CACHE_CLEAN);intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);intent.setComponent(new ComponentName(context,CacheProvider.class));PendingIntent pendingIntent = PendingIntent.getBroadcast(context,                    0, intent, PendingIntent.FLAG_UPDATE_CURRENT);remoteViews.setOnClickPendingIntent(R.id.tv_clean, pendingIntent);

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: AppWidget怎么在Android中使用

本文链接: https://lsjlt.com/news/270540.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • AppWidget怎么在Android中使用
    AppWidget怎么在Android中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、在AndroidManifest.xml中声明一个AppWidge...
    99+
    2023-06-14
  • AppWidget如何在Android开发中使用
    这期内容当中小编将会给大家带来有关AppWidget如何在Android开发中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是AppWidgetAppWidget 即桌面小部件,也叫桌面控件,就是...
    99+
    2023-05-31
    android appwidget pp
  • android怎么更新appwidget
    要更新一个Android App Widget,你可以按照以下步骤操作: 打开你的Android工程项目,并找到你要更新的App...
    99+
    2024-02-29
    android appwidget
  • EditText怎么在Android中使用
    本篇文章给大家分享的是有关EditText怎么在Android中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Android是什么Android是一种基于Linux内核的自...
    99+
    2023-06-14
  • BroadcastReceiver怎么在Android中使用
    这篇文章给大家介绍 BroadcastReceiver怎么在Android中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Android是什么Android是一种基于Linux内核的自由及开放源代码的操作系统,主要...
    99+
    2023-06-14
  • ViewBinding怎么在Android中使用
    ViewBinding怎么在Android中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。ViewBinding 有什么作用过于冗余findViewById...
    99+
    2023-06-15
  • RecyclerView怎么在Android中使用
    RecyclerView怎么在Android中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先ListView与RecyclerView两者非常相似,两者提供view都是...
    99+
    2023-05-30
    recyclerview android
  • 怎么在Android中使用menu
    这篇文章将为大家详细讲解有关怎么在Android中使用menu,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。①在res下的menu中创建file_menu.xml:<xml ...
    99+
    2023-05-30
    android menu
  • Notification怎么在Android中使用
    这期内容当中小编将会给大家带来有关Notification怎么在Android中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。用法首先我们需要一个NotificationManager来对通知进行管理...
    99+
    2023-05-30
    android notification
  • SharedPreferences怎么在Android中使用
    这篇文章给大家介绍SharedPreferences怎么在Android中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MainActivity:public class SharedPrefe...
    99+
    2023-05-30
    android sharedpreferences
  • StringBuffer怎么在Android中使用
    StringBuffer怎么在Android中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、StringBuffer对象的初始化StringBuffer对象的初始化不像...
    99+
    2023-05-30
    android stringbuffer
  • 怎么在Android中使用ExpandableRecyclerView
    怎么在Android中使用ExpandableRecyclerView?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用步骤:加入依赖compile ...
    99+
    2023-05-30
    android
  • CheckBox怎么在Android中使用
    CheckBox怎么在Android中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。activity_main.xml<xml versio...
    99+
    2023-05-30
    android checkbox
  • Popupwindow怎么在Android应用中使用
    这期内容当中小编将会给大家带来有关Popupwindow怎么在Android应用中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。第一步:private PopupWindow mPopupWindow...
    99+
    2023-05-31
    popupwindow android roi
  • LayoutInflater怎么在Android 应用中使用
    今天就跟大家聊聊有关LayoutInflater怎么在Android 应用中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。LayoutInflater解析前言:在Android中...
    99+
    2023-05-31
    android layoutinflater flat
  • Retrofit框架怎么在Android中使用
    Retrofit框架怎么在Android中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android是什么Android是一种基于Linux内核的自由及开放源代码的操作系...
    99+
    2023-06-14
  • ListView控件怎么在Android中使用
    本篇文章给大家分享的是有关ListView控件怎么在Android中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、ListView的简单用法首先新建一个ListView...
    99+
    2023-05-30
    android listview
  • 怎么在Android中使用Spinner控件
    今天就跟大家聊聊有关怎么在Android中使用Spinner控件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、使用方法在layout中创建Spinner控件<Spinner...
    99+
    2023-05-30
    android spinner
  • 怎么在Android中使用线程池
    本篇文章为大家展示了怎么在Android中使用线程池,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1 、newCachedThreadPool这种线程池比较灵活,也就是说它的池里的线程数量并不是固定...
    99+
    2023-05-30
    android 线程池
  • ViewDragHelper怎么在Android项目中使用
    本篇文章为大家展示了 ViewDragHelper怎么在Android项目中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ViewDragHelper是support.v4下提供的用于处理拖拽滑...
    99+
    2023-05-30
    android viewdraghelper
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作