桌面显示组件:AppWidget添加自己的快捷方式
- 玩转AppWidget
使用安卓的时候相信大家一定还记得快捷方式的运用,就是将一些经常用的软件拖到桌面上以方便操作。例如qq快捷联系人,音乐快捷播放器之类的而这些肯定有一个支持其运行的程序,这些程序必须通过AppWidget组件来完成。
- AppWidgetProvider:继承自BroadcastReceiver,在App Widget应用update,enable,disable和deleted时接受通知。其中onUpdate,onReceive是最常用到的方法。
- AppWidgetProviderInfo:描述AppWidget的大小,更新频率和初始界面等信息,以xml文件的形式存在于应用中的res/xml目录下。
- AppWidgetManager:负责管理AppWidget,向AppWidgetProvider发送通知。
- RemoteViews:一个可以在其他应用进程中运行的类,是构造AppWidget的核心。
首先我们定义MyAppWidget 类extends AppWidgetProvider
public class MyAppWidget extends AppWidgetProvider { @Override public void onDeleted(Context context, int[] appWidgetIds) { System.out.println("*** MyAppWidget onDeleted") ; super.onDeleted(context, appWidgetIds); } @Override public void onDisabled(Context context) { System.out.println("*** MyAppWidget onDisabled") ; super.onDisabled(context); } @Override public void onEnabled(Context context) { System.out.println("*** MyAppWidget onEnabled") ; super.onEnabled(context); } @Override public void onReceive(Context context, Intent intent) { System.out.println("*** MyAppWidget onReceive") ; super.onReceive(context, intent); } @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { System.out.println("*** MyAppWidget onUpdate") ; super.onUpdate(context, appWidgetManager, appWidgetIds); } }
然后我们想在桌面显示的图标布局函数res\xl\ee.xml
<ImageButton android:id="@+id/imageButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/a10" />
定义桌面显示的AppWidgetProvider类配置文件res\xml\ee.xml
<?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minHeight="80px" android:minWidth="300px" android:updatePeriodMillis="6000" android:initialLayout="@layout/ee">//组件所需要的配置文件 </appwidget-provider>
之后就是AnsroidManifest配置
<receiver android:name=".MyAppWidget"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/ee" /> </receiver>
实现效果自己在安卓小组件找到自己定义的AppWidget拖到桌面即可,小编的是这样的哦
现在其实我们点击桌面上的图标是毫无反应的,这是因为我们还未绑定按钮跳转到相应的Activity上,所以呢,
我们在
public class MyAppWidget extends AppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { for (int x = 0; x < appWidgetIds.length; x++) { Intent intent = new Intent(context,MyAppWidgetDemo.class) ; PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); RemoteViews remote = new RemoteViews(context.getPackageName(), R.layout.ee); remote.setOnClickPendingIntent(R.id.but, pendingIntent) ; appWidgetManager.updateAppWidget(appWidgetIds[x], remote) ; } } } 将这个一段改为这样就好,这里用for循环是为了获取多个快捷方式,因为很多爱玩的用户总是喜欢这里建
一个,那里建一个,因此要获取到所有的快捷方式。
现在我们实现了点击图片跳转到Activity
实现效果如下:
相关推荐
huha 2020-10-16
xfcyhades 2020-11-20
sgafdsg 2020-11-04
Michael 2020-11-03
fengyeezju 2020-10-14
ziyexiaoxiao 2020-10-14
业余架构师 2020-10-09
OuNuo0 2020-09-29
moses 2020-09-22
Angelia 2020-09-11
qinxu 2020-09-10
刘炳昭 2020-09-10
Nostalgiachild 2020-09-07
Nostalgiachild 2020-08-17
leavesC 2020-08-14
一青年 2020-08-13
AndroidAiStudy 2020-08-07
ydc0 2020-07-30
绿豆饼 2020-07-28