android之appwidget(一)简单appwidget

泄露秘密 提交于 2019-12-03 01:25:44
什么是appwidget? 即application widget。 应用程序控件,就是在桌面显示的控件。 AppWidget就是我们平常在桌面上见到的那种一个个的小控件,利用这个小控件可以给用户提供一些方便快捷的操作。

本次创建一个简单的appwidget。

相关概念:

1、AppWidgetProviderInfo对象:它是一个xml文件,为appWidget提供元数据,包括布局,更新频率等数据。这个对象定义在xml中。

2、AppWidgetProvider: 定义了appwidget的基本生命周期函数。

不多说,一切尽在代码:

1、在layout中新建一个appwidgetlayout.xml文件。

Java代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:id="@+id/textview"
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"
  11. android:text="@string/hello"
  12. />
  13. </LinearLayout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
	android:id="@+id/textview"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
</LinearLayout

没什么多说的,只是一个textview。这个是我们的应用程序在桌面的控件。

2、在res中新建一个xml包,在这个包中新建一个appwidget_info.xml文件。

Java代码

  1. <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:minWidth="294dp"
  3. android:minHeight="72dp"
  4. android:updatePeriodMillis="86400000"
  5. android:initialLayout="@layout/appwidgetlayout"
  6. />
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
	android:minWidth="294dp"
	android:minHeight="72dp"
	android:updatePeriodMillis="86400000"
	android:initialLayout="@layout/appwidgetlayout"
	/>

这个xml为appwidget提供元数据,这个是在桌面的布局,而这个layout(appwidgetlayout)为在appwidget中控件的布局。

3、在包下新建我们的provider,他继承了AppWidgetProvider,我们只需要对它的生命周期进行处理就行了。

Java代码

  1. public class AppWidgetprovider extends AppWidgetProvider {
  2. @Override
  3. public void onDeleted(Context context, int[] appWidgetIds) {
  4. // TODO Auto-generated method stub
  5. System.out.println("onDeleted");
  6. super.onDeleted(context, appWidgetIds);
  7. }
  8. @Override
  9. public void onDisabled(Context context) {
  10. // TODO Auto-generated method stub
  11. System.out.println("onDisable");
  12. super.onDisabled(context);
  13. }
  14. @Override
  15. public void onEnabled(Context context) {
  16. // TODO Auto-generated method stub
  17. System.out.println("onEnable");
  18. super.onEnabled(context);
  19. }
  20. @Override
  21. public void onReceive(Context context, Intent intent) {
  22. // TODO Auto-generated method stub
  23. System.out.println("onreceive");
  24. super.onReceive(context, intent);
  25. }
  26. @Override
  27. public void onUpdate(Context context, AppWidgetManager appWidgetManager,
  28. int[] appWidgetIds) {
  29. // TODO Auto-generated method stub
  30. System.out.println("onUpdate");
  31. super.onUpdate(context, appWidgetManager, appWidgetIds);
  32. }
  33. }
public class AppWidgetprovider extends AppWidgetProvider {

	@Override
	public void onDeleted(Context context, int[] appWidgetIds) {
		// TODO Auto-generated method stub
		System.out.println("onDeleted");
		super.onDeleted(context, appWidgetIds);
	}

	@Override
	public void onDisabled(Context context) {
		// TODO Auto-generated method stub
		System.out.println("onDisable");
		super.onDisabled(context);
	}

	@Override
	public void onEnabled(Context context) {
		// TODO Auto-generated method stub
		System.out.println("onEnable");
		super.onEnabled(context);
	}

	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		System.out.println("onreceive");
		super.onReceive(context, intent);
	}

	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {
		// TODO Auto-generated method stub
		System.out.println("onUpdate");
		super.onUpdate(context, appWidgetManager, appWidgetIds);
	}
	
}

4、在AndroidManifest.xml中进行配置,由于这个appwidget使用的是广播机制,我们需要在AndroidManifest.xml中进行如下配置:

Java代码

  1. <receiver android:name="AppWidgetprovider">
  2. <intent-filter >
  3. <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
  4. </intent-filter>
  5. <meta-data android:name="android.appwidget.provider"
  6. android:resource="@xml/appwidget_info"
  7. />
  8. </receiver>
<receiver android:name="AppWidgetprovider">
		<intent-filter >
			<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
		</intent-filter>
		<meta-data android:name="android.appwidget.provider"
			android:resource="@xml/appwidget_info"
		/>
	</receiver>

通过过滤器我们截取APPWIDGET_UPDATE这个action,然后对provider进行资源配置,对应的刚刚那个xml中的文件。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!