桌面显示组件: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
实现效果如下:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。