如何将动画应用于整个 Android 列表视图

How to apply animations to entire Android Listview

我试图让 Listview 在某些情况下淡出 out/in。我在运行动画时遇到问题,Listview 只是变得不可见并且没有执行动画。

我试过运行 fade_out 动画:

Animation out = AnimationUtils.loadAnimation(mainActivity, R.anim.fade_out);
out.setInterpolator(new LinearInterpolator());
myListView.startAnimation(out);

以及 AlphaAnimation

AlphaAnimation animation1 = new AlphaAnimation(1f, .5f);
animation1.setDuration(2000);
animation1.setFillAfter(false);
myListView.startAnimation(animation1)

最后简单地设置 alpha

myListView.setAlpha(.5f)

我能说的最好的是列表视图不支持 alpha 透明度,只有 0 和 1 的值可用作 alpha。我找不到任何确认或否认任何方式的文件。

ListView 是否存在某种已知问题?难道我做错了什么?或者这是 ListView 上的某种有限功能?

试试吧's.If你想做的可见:

 public void viseb_show(){
    AnimationSet set = new AnimationSet(true);

    Animation animation = new AlphaAnimation(0.0f, 1.0f);

    animation.setDuration(500);
    set.addAnimation(animation);

    anim.startAnimation(animation);
    anim.setVisibility(View.VISIBLE);
}

或者如果不可见

  public void viseb_gone(){
    AnimationSet set = new AnimationSet(true);

    Animation animation = new AlphaAnimation(1.0f, 0.0f);

    animation.setDuration(3500);
    set.addAnimation(animation);

    anim.startAnimation(animation);
    anim.setVisibility(View.GONE);
}

anim 反对的是你visible

我解决了我的问题。 emigrantdd 几乎把我送到了正确的方向,但是我需要克服一些问题。

首先,我必须将 emigrantdd 的代码更改为:

public void viseb_gone()
{
    AnimationSet set = new AnimationSet(false);

    Animation fadeout= new AlphaAnimation(1.0f, 0.0f);
    fadeOut.setInterpolator(new LinearInterpolator());
    fadeOut.setDuration(3500);

    set.addAnimation(animation);

    myListView.startAnimation(fadeOut);
    myListView.setVisibility(View.GONE);
}

因为插值器有问题。

我遇到的另一个问题是,我正在测试的 ListView 作为旧设计的一部分仍然在 ScrollView 中,一旦将其取出,它就会按照上述更改的预期工作。