如何将动画应用于整个Android Listview

时间:2015-01-02 22:11:40

标签: android listview android-listview android-animation alpha

我想在某些情况下让Listview淡出/淡出。我在运行动画时遇到问题,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。我找不到任何确认或否认的文件。

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

2 个答案:

答案 0 :(得分:0)

试试吧。如果你想看得见:

 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

答案 1 :(得分:0)

我想出了我的问题。移民给了我几乎正确的方向,我需要克服一些问题。

首先,我必须将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中作为旧设计的一部分,一旦它被取出它按照上述更改的方式工作。