
我有一个小部件(appwidgetprovider),我想知道是否有一种方法来支持多次点击.例如:
1)如果是第一次单击窗口小部件,则窗口小部件的Imagebutton会更改(例如,更改颜色).
2)如果是第二次,则打开一个活动.
– 有一些方法可以处理appwidgetprovider中的点击事件吗?
我的代码:
public class MyWidgetProvIDer extends appwidgetprovider{ @OverrIDe public voID onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIDs) { final int N = appWidgetIDs.length; for (int i=0; i<N; i++) { int appWidgetID = appWidgetIDs[i]; Intent intent = new Intent(context, MyActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); RemoteVIEws vIEws = new RemoteVIEws(context.getPackagename(), R.layout.control_Widget); vIEws.setonClickPendingIntent(R.ID.asdf, pendingIntent); appWidgetManager.updateAppWidget(appWidgetID, vIEws); } }}我的小部件工作正常.当我单击Imagebutton(R.ID.asdf)时,它将转到活动MyActivity.
我想知道如何处理我的小部件上的点击事件以进行不同的 *** 作(例如:更改Imagebutton的颜色)而不是去某些活动.除了setonClickPendingIntent()之外还有其他一些点击句柄吗?
解决方法:
也许这可能有所帮助.这个对我有用:
public class WidgetProvIDer extends appwidgetprovider {private static final int DOUBLE_CliCK_DELAY = 500;@OverrIDepublic voID onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIDs) { RemoteVIEws vIEws = new RemoteVIEws(context.getPackagename(), R.layout.Widget); Intent intent = new Intent(context, getClass()); intent.setAction("Click"); PendingIntent pendingIntent = PendingIntent.getbroadcast(context, 0, intent, 0); vIEws.setonClickPendingIntent(R.ID.image, pendingIntent); appWidgetManager.updateAppWidget(appWidgetIDs, vIEws); context.getSharedPreferences("Widget", 0).edit().putInt("clicks", 0).commit();}@OverrIDepublic voID onReceive(final Context context, Intent intent) { if (intent.getAction().equals("Click")) { int clickCount = context.getSharedPreferences("Widget", Context.MODE_PRIVATE).getInt("clicks", 0); context.getSharedPreferences("Widget", Context.MODE_PRIVATE).edit().putInt("clicks", ++clickCount).commit(); final Handler handler = new Handler() { public voID handleMessage(Message msg) { int clickCount = context.getSharedPreferences("Widget", Context.MODE_PRIVATE).getInt("clicks", 0); if (clickCount > 1) Toast.makeText(context, "doubleClick", Toast.LENGTH_SHORT).show(); else Toast.makeText(context, "singleClick", Toast.LENGTH_SHORT).show(); context.getSharedPreferences("Widget", Context.MODE_PRIVATE).edit().putInt("clicks", 0).commit(); } }; if (clickCount == 1) new Thread() { @OverrIDe public voID run(){ try { synchronized(this) { wait(DOUBLE_CliCK_DELAY); } handler.sendEmptyMessage(0); } catch(InterruptedException ex) {} } }.start(); } super.onReceive(context, intent);}}
总结以上是内存溢出为你收集整理的android – Widget双击全部内容,希望文章能够帮你解决android – Widget双击所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)