我创建了一个简单的主屏幕小部件,可以显示简单的图像幻灯片。为了在图像之间切换,我使用AdapterViewFlipper
,每1.5秒只显示下一个图像。这很好但在从一个图像到下一个图像的过渡期间,它似乎淡出和淡入(几乎像过渡动画),我想禁用它。我怎么能这样做?我已经在布局XML中禁用了动画,但它没有帮助。我很困惑。
这是我的布局包含鳍状肢:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/widget_frame"
android:orientation="vertical"
android:textAlignment="gravity" >
<AdapterViewFlipper
android:id="@+id/image_flipper"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/widget_icon"
android:animateLayoutChanges="false"
android:autoStart="true"
android:flipInterval="1500" >
</AdapterViewFlipper>
</LinearLayout>
当appwidget加载时,我将鳍状肢绑定到它的适配器:
Intent ittSlides = new Intent(ctxContext, SlideService.class);
ittSlides.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, intInstance);
ittSlides.setData(Uri.fromParts("content", String.valueOf(new Random().nextInt()), null));
ittSlides.putExtra("data", strContent);
RemoteViews remView = new RemoteViews(ctxContext.getPackageName(), R.layout.widget);
remView.setRemoteAdapter(R.id.image_flipper, ittSlides);
AppWidgetManager.getInstance(ctxContext).updateAppWidget(intInstance, remView);
..而且这是我的实际适配器。
public class SlideFactory implements RemoteViewsFactory {
private JSONArray jsoImages;
private final Context ctxContext;
private RemoteViews remView;
public SlideFactory(Context ctxContext, Intent ittIntent) {
remView = new RemoteViews(ctxContext.getPackageName(), R.layout.image);
this.ctxContext = ctxContext;
try {
jsoImages = new JSONArray(ittIntent.getStringExtra("data"));
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
@Override
public RemoteViews getViewAt(int intPosition) {
try {
remView.setImageViewUri(R.id.dopper_image, Uri.parse(jsoImages.getString(intPosition)));
} catch (final JSONException e) {
Log.e("SlideFactory", "Unknown error encountered", e);
BugSenseHandler.sendException(e);
} catch (final Exception e) {
Log.e("SlideFactory", "Unknown error encountered", e);
BugSenseHandler.sendException(e);
}
return remView;
}
...
...
...
}
正如您所看到的,适配器没有什么特别之处。我只是简单地从磁盘中读取图像并将其设置为具有ImageView
的布局,然后我将其提供给AdapterViewFlipper
答案 0 :(得分:3)
我也遇到了同样的问题并且偶然找到了解决方案。这更像是棘手的解决方案。这实际上是通过添加没有动画设置的动画来禁用动画效果。
1.在anim
文件夹下添加两个XML。我会说in.xml
和out.xml
,但你可以使用任何一个或两个XML。
2.在XML中添加空白objectAnimator
元素
<?xml version="1.0" encoding="UTF-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"/>
在android:inAnimation="@anim/in"
android:outAnimation="@anim/out"
和AdapterViewFlipper
构建你的应用程序,神奇地,动画将被禁用!