如何通过短暂的休息多次更改应用程序小部件(远程视图)的图像视图?
How To change the imageview of an appwidget (remoteview) multiple times with a short break between?
我是 Android 开发的新手,我遇到了一个问题。
我希望你们能帮助我 ;)
我正在开发一个 Appwidget,一个带有线性布局的远程视图
包含多个图像视图。
我自己完成了一些教程和示例,并且
我能够构建第一个应用程序,它检测点击的图像视图以打开特定安装的应用程序,或更改某些图像视图的图像资源。
现在我的问题是我想在单击按钮时为图像设置动画。
我做了一个 drawableAnimation,但后来我读到 remoteviews 不支持这些。
所以我的想法是手动更改图片,中间稍作休息
例如:
更改图像视图
0.1 秒等待
更改图像视图
0.1 秒等待
更改图像视图
0.1 秒等待
更改图像视图
所以现在我阅读了一些有关 Sleep()、处理程序和 adapterviewflipper 的内容(none 我能够实现)但我真的不知道该走哪条路。
这是我的 Appwidgetprovider 的代码
public class MyWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_demo);
// Button To Change Imageview
remoteViews.setOnClickPendingIntent(R.id.B1, buildButtonPendingIntent(context));
//Buttons to open some installed apps
remoteViews.setOnClickPendingIntent(R.id.T1, getPendingIntent(context, 1));
remoteViews.setOnClickPendingIntent(R.id.T2, getPendingIntent(context, 2));
pushWidgetUpdate(context, remoteViews);
}
public static PendingIntent buildButtonPendingIntent(Context context) {
Intent intent = new Intent();
intent.setAction("com.appwidgettest.intent.action.UPDATEUI");
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
public static PendingIntent getPendingIntent(Context context, int btnId) {
// starts a htc radio app as standart and if button 2 is clicked it starts
// chrome browser just did this for testing the packagemanager
PackageManager pm = context.getPackageManager();
String gg = "com.htc.fm";
if (btnId==2){gg = "com.android.chrome";
}
Intent intentt= pm.getLaunchIntentForPackage(gg);
PendingIntent pi = PendingIntent.getActivity(context, 0, intentt, 0);
return pi;
}
public static void pushWidgetUpdate(Context context, RemoteViews remoteViews) {
ComponentName myWidget = new ComponentName(context, MyWidgetProvider.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(myWidget, remoteViews);
}
}
和目前正在运行的 Broadcastreciever。
public class MyWidgetIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("com.appwidgettest.intent.action.UPDATEUI")){
updateWidgetPictureAndButtonListener(context);
}
}
private void updateWidgetPictureAndButtonListener(Context context) {
final RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_demo);
// Here i Change The Imageviews!
remoteViews.setImageViewResource(R.id.M3, R.drawable.image1);
//here i need a short time sleep of 0.2 seconds for example
remoteViews.setImageViewResource(R.id.M2, R.drawable.image2);
//here too
remoteViews.setImageViewResource(R.id.M1, R.drawable.image3);
// Here to set the Button Listeners
remoteViews.setOnClickPendingIntent(R.id.B1, MyWidgetProvider.buildButtonPendingIntent(context));
remoteViews.setOnClickPendingIntent(R.id.T2, MyWidgetProvider.getPendingIntent(context,2));
remoteViews.setOnClickPendingIntent(R.id.T1, MyWidgetProvider.getPendingIntent(context,1));
MyWidgetProvider.pushWidgetUpdate(context.getApplicationContext(), remoteViews);
}
}
我真的很抱歉我的英语不好^^我希望你能理解其中的大部分内容:P
如果您对标题有更好的想法请告诉我
请帮帮我!!
此致T.R.Salvatore
如果您正在寻找单击按钮时的精灵动画,请参阅此示例 https://code.google.com/p/mario-coin-block/。它会导致一系列图像像精灵动画一样显示。
如果您只是想要幻灯片之类的东西,请使用 AdapterViewFlipper
。我创建了一个类似的应用小部件:https://github.com/mridang/appwidget-ilmaana
我是 Android 开发的新手,我遇到了一个问题。 我希望你们能帮助我 ;) 我正在开发一个 Appwidget,一个带有线性布局的远程视图 包含多个图像视图。 我自己完成了一些教程和示例,并且 我能够构建第一个应用程序,它检测点击的图像视图以打开特定安装的应用程序,或更改某些图像视图的图像资源。
现在我的问题是我想在单击按钮时为图像设置动画。 我做了一个 drawableAnimation,但后来我读到 remoteviews 不支持这些。
所以我的想法是手动更改图片,中间稍作休息 例如:
更改图像视图
0.1 秒等待
更改图像视图
0.1 秒等待
更改图像视图
0.1 秒等待
更改图像视图
所以现在我阅读了一些有关 Sleep()、处理程序和 adapterviewflipper 的内容(none 我能够实现)但我真的不知道该走哪条路。
这是我的 Appwidgetprovider 的代码
public class MyWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_demo);
// Button To Change Imageview
remoteViews.setOnClickPendingIntent(R.id.B1, buildButtonPendingIntent(context));
//Buttons to open some installed apps
remoteViews.setOnClickPendingIntent(R.id.T1, getPendingIntent(context, 1));
remoteViews.setOnClickPendingIntent(R.id.T2, getPendingIntent(context, 2));
pushWidgetUpdate(context, remoteViews);
}
public static PendingIntent buildButtonPendingIntent(Context context) {
Intent intent = new Intent();
intent.setAction("com.appwidgettest.intent.action.UPDATEUI");
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
public static PendingIntent getPendingIntent(Context context, int btnId) {
// starts a htc radio app as standart and if button 2 is clicked it starts
// chrome browser just did this for testing the packagemanager
PackageManager pm = context.getPackageManager();
String gg = "com.htc.fm";
if (btnId==2){gg = "com.android.chrome";
}
Intent intentt= pm.getLaunchIntentForPackage(gg);
PendingIntent pi = PendingIntent.getActivity(context, 0, intentt, 0);
return pi;
}
public static void pushWidgetUpdate(Context context, RemoteViews remoteViews) {
ComponentName myWidget = new ComponentName(context, MyWidgetProvider.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(myWidget, remoteViews);
}
}
和目前正在运行的 Broadcastreciever。
public class MyWidgetIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("com.appwidgettest.intent.action.UPDATEUI")){
updateWidgetPictureAndButtonListener(context);
}
}
private void updateWidgetPictureAndButtonListener(Context context) {
final RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_demo);
// Here i Change The Imageviews!
remoteViews.setImageViewResource(R.id.M3, R.drawable.image1);
//here i need a short time sleep of 0.2 seconds for example
remoteViews.setImageViewResource(R.id.M2, R.drawable.image2);
//here too
remoteViews.setImageViewResource(R.id.M1, R.drawable.image3);
// Here to set the Button Listeners
remoteViews.setOnClickPendingIntent(R.id.B1, MyWidgetProvider.buildButtonPendingIntent(context));
remoteViews.setOnClickPendingIntent(R.id.T2, MyWidgetProvider.getPendingIntent(context,2));
remoteViews.setOnClickPendingIntent(R.id.T1, MyWidgetProvider.getPendingIntent(context,1));
MyWidgetProvider.pushWidgetUpdate(context.getApplicationContext(), remoteViews);
}
}
我真的很抱歉我的英语不好^^我希望你能理解其中的大部分内容:P
如果您对标题有更好的想法请告诉我
请帮帮我!!
此致T.R.Salvatore
如果您正在寻找单击按钮时的精灵动画,请参阅此示例 https://code.google.com/p/mario-coin-block/。它会导致一系列图像像精灵动画一样显示。
如果您只是想要幻灯片之类的东西,请使用 AdapterViewFlipper
。我创建了一个类似的应用小部件:https://github.com/mridang/appwidget-ilmaana