一念执着

一句话一辈子

appweight多个按键响应处理

    appweight有时候需要响应多出的按键,如多个按钮在同一个weight要同时响应这么多个按钮的时间

肯定不能像在activity里面处理,而是通过类似广播机制的方法来处理。通过对自己发送action,自己接受action,

自己处理action的形式来完成weights上的事件.

	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds)
	{
		this.context = context;
		Intent intent1 = new Intent();
		intent1.setAction(UPDATE_ACTION1);
		/****获取所有weight上的所有空间******/
		RemoteViews remoteViews = new RemoteViews(context.getPackageName(), 
				R.layout.main);
	/**第一个button1 的时间响应  发送的是UPDATE_ACTION1的广播信号 在OnReceive方法中接受鉴别**/
		PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, -1,
				intent1, 0);
		intent1.setAction(UPDATE_ACTION2);
	/**第二个button2的时间响应  发送的是UPDATE_ACTION2的广播信号 在OnReceive方法中接受并鉴别**/
		PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, -1,
				intent1, 0);
		intent1.setAction(UPDATE_ACTION3);
	/**第三个button3的时间响应  发送的是UPDATE_ACTION3的广播信号 在OnReceive方法中接受并鉴别**/
		PendingIntent pendingIntent3 = PendingIntent.getBroadcast(context, -1,
				intent1, 0);
		remoteViews.setOnClickPendingIntent(R.id.button1, pendingIntent1);//取得button1的控件并添加时间 以下类似
		remoteViews.setOnClickPendingIntent(R.id.button2, pendingIntent2);
		remoteViews.setOnClickPendingIntent(R.id.button3, pendingIntent3);
		appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
	}
对广播信息进行分辨 并做对应的处理。
	@Override
	public void onReceive(Context context, Intent intent)
	{
		String action = intent.getAction();//获取action的信息 并进行鉴别 然后执行事件
		if (UPDATE_ACTION1.equals(action))
		{
			System.out.println("button1");
			Toast.makeText(context, "你点击了button1", Toast.LENGTH_LONG).show();
		}
		else if (UPDATE_ACTION2.equals(action))
		{
			System.out.println("button2");
			Toast.makeText(context, "你点击了button2", Toast.LENGTH_LONG).show();
		}
		else if (UPDATE_ACTION3.equals(action))
		{
			System.out.println("button3");
			Toast.makeText(context, "你点击了button3", Toast.LENGTH_LONG).show();

		}
		else
		{
			super.onReceive(context, intent);
		}
	}

同时 你还必须在Androidmainfest.xml上对你的action进行注册

<receiver android:name=".LightChangeActivity" >
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <intent-filter>
                <action android:name="com.jin.UPDATE_APP_WIDGET1" />
                <action android:name="com.jin.UPDATE_APP_WIDGET2" />
                <action android:name="com.jin.UPDATE_APP_WIDGET3" />
            </intent-filter>

            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/light" />
        </receiver>
编写对应的appwidget-provider这里就不说了 




把代码分享出来  http://download.csdn.net/detail/lymabcd/4182363




阅读更多
个人分类: android
想对作者说点什么? 我来说一句

WPF多按键事件Demo

2015年10月08日 52KB 下载

Android 处理按键响应方式

2011年09月26日 180KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭