android appwidget 笔记

AppWidget 就是我们使用的窗口小部件

实现appwidget非常简单,只需要一下几个步骤就OK

1.在 /res/layout 中建立一个 布局文件.此布局文件就是 窗体小部件 的"样子"

2.在/res/xml 中建立一个xml文件此文件对appwidget进行配置.如下

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 
    android:minWidth="1dp"	
    android:minHeight="1dp"
    android:updatePeriodMillis="4000000"
    android:initialLayout="@layout/appwidgetlayout">
    <!-- 从上到下
    	宽
    	高
    	更新毫秒数
    	appwidget的初始化的布局 引用 res/layout 中的布局
     -->    
</appwidget-provider>

3.实现一个类继承 AppWidgetProvider 

public class AppWeigetTest extends AppWidgetProvider {
	private static final String in="joker.broadcast.appwedget";
	//当到达指定的更新时间之后,或用户添加窗口小部件时触发
	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {
		// TODO Auto-generated method stub
		super.onUpdate(context, appWidgetManager, appWidgetIds);		
	}
	//当用户删除窗体部件时触发
	@Override
	public void onDeleted(Context context, int[] appWidgetIds) {
		// TODO Auto-generated method stub	
	}
	//当所有船体部件删除时触发
	@Override
	public void onDisabled(Context context) {
		// TODO Auto-generated method stub
	}
	//接收到广播的时候触发,以上几个方法是使用这个方法转发的,也就是说其实窗口的各种"事件" 都是使用广播的形式发出的
	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		super.onReceive(context, intent);
	}
}
4.在AndroidManifest.xml

<receiver android:name=".AppWeigetTest">
             <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>
以上 intent-filter 和 meta-data是系统设置不变的,其中meta-data 的resource 下的文件是 appwidget的配置文件

二, Appwidget中常用类的使用:

1.PendingIntent  

           此类是包装Intent类的 使Intent 在特定的事件触发    

PendingIntent包装Intent意图 初始化方法有:getActivity getBroadcast getService
//参1 上下文对象 参数3 Intent对象
PendingIntent pending=PendingIntent.getActivity(context, 0, inten, 0);
2.RemoteViews

         此类可以对:"小部件" 上的控件进行操作(比如改变TextView上的文字ImageView上的图片操作,改变图片添加事件) 

RemoteViews remote=new RemoteViews(context.getPackageName(), R.layout.appwidgetlayout);
			//为窗口小部件上的控件添加点击事件
			//参数一: 指定窗口小部件上的控件ID
			//参数2 :指定触发事件后执行的Intent 的PendingIntent
remote.setOnClickPendingIntent(R.id.button1, pending); //像button1添加一个点击事件
3 AppWidgetManager

在onXXX事件中做为参数传递进来的,此类的对象负责更新Appwidget 

			AppWidgetManager manager=AppWidgetManager.getInstance(context);    
			ComponentName name=new ComponentName(context, AppWeigetTest.class);//代表AppWeiget控件
			//以上两个步骤是在没有appwidgetmanager对象的时候,比如在onReceive方法里如何使用
			manager.updateAppWidget(name, remoteViews); //此方法更新appwidget并且执行remoteViews只有执行这个方法后remoteViews配置的信息才会生效



你可能感兴趣的:(android,manager,String,action,button,encoding)