Java 为什么我的AdapterAdapter在应用程序小部件中使用时会闪烁?

Java 为什么我的AdapterAdapter在应用程序小部件中使用时会闪烁?,java,android,android-appwidget,android-adapterview,Java,Android,Android Appwidget,Android Adapterview,我正在创建一个简单的主屏幕小部件,用于显示图像的简单幻灯片。为了在图像之间切换,我使用了一个AdapterViewFlipper,它只需每隔1.5秒显示下一个图像。这很好,但在从一个图像过渡到下一个图像的过程中,它似乎会淡出和淡入(几乎像过渡动画),我想禁用它。我怎样才能做到?我已经在布局XML中禁用了动画,但没有任何帮助。我很困惑 以下是我的布局,其中包含flipper: <?xml version="1.0" encoding="utf-8"?> <LinearLayout

我正在创建一个简单的主屏幕小部件,用于显示图像的简单幻灯片。为了在图像之间切换,我使用了一个
AdapterViewFlipper
,它只需每隔1.5秒显示下一个图像。这很好,但在从一个图像过渡到下一个图像的过程中,它似乎会淡出和淡入(几乎像过渡动画),我想禁用它。我怎样才能做到?我已经在布局XML中禁用了动画,但没有任何帮助。我很困惑

以下是我的布局,其中包含flipper:

<?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>
…这是我的实际适配器,为它供电

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.xml
out.xml
,但您可以使用任何一种xml,也可以使用一种xml来实现这两种

2.在XMLs中添加一个空白的
objectAnimator
元素

<?xml version="1.0" encoding="UTF-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"/>

  • 添加
    android:inaimation=“@anim/in”
    android:outAnimation=“@anim/out”
    AdapterViewFlipper

  • 构建你的应用程序,神奇的是,动画将被禁用


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

    1.在
    anim
    文件夹下添加两个XML。我会说
    in.xml
    out.xml
    ,但您可以使用任何一种xml,也可以使用一种xml来实现这两种

    2.在XMLs中添加一个空白的
    objectAnimator
    元素

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

  • 构建你的应用程序,神奇的是,动画将被禁用


  • 非常感谢。你很快就会得到赏金的。这是我遇到的最棘手的事情之一。很好的解决方案。。。我唯一需要做的改变是将XML放入
    animator
    文件夹,而不是
    anim
    文件夹谢谢。你很快就会得到赏金的。这是我遇到的最棘手的事情之一。很好的解决方案。。。我唯一需要做的更改是将XML放入
    animator
    文件夹,而不是
    anim
    文件夹