gpt4 book ai didi

java - 为什么我的 AdapterViewAdapter 在 AppWidget 中使用时会闪烁?

转载 作者:搜寻专家 更新时间:2023-11-01 08:50:54 25 4
gpt4 key购买 nike

我正在创建一个简单的主屏幕小部件,用于显示简单的图片幻灯片。为了在图像之间切换,我使用了 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 加载时,我将 flipper 绑定(bind)到它的适配器:

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

最佳答案

我也遇到了同样的问题,偶然发现了解决方案。这更像是棘手的解决方案。这实际上是通过添加没有动画设置的动画来禁用动画效果。

1.在anim下添加两个XML文件夹。我会说 in.xmlout.xml但您可以对两者使用任何一个 XML 或使用一个 XML。

2.加个空格objectAnimator XML 中的元素

<?xml version="1.0" encoding="UTF-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"/>
  1. 添加android:inAnimation="@anim/in"android:outAnimation="@anim/out"AdapterViewFlipper

  2. 构建您的应用程序,神奇地,动画将被禁用!

关于java - 为什么我的 AdapterViewAdapter 在 AppWidget 中使用时会闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23579604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com