【问题标题】:How to apply animations to entire Android Listview如何将动画应用于整个 Android Listview
【发布时间】:2015-01-02 22:11:40
【问题描述】:

我正在尝试在某些情况下让 Listview 淡出/淡入。我在运行动画时遇到了问题,Listview 变得不可见并且没有执行动画。

我试过运行淡出动画:

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 上的某种受限功能?

【问题讨论】:

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


    【解决方案1】:

    试试吧。如果你想做可见的:

     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

    【讨论】:

    • 对不起,这仍然会产生相同的结果。对于淡出动画,ListView 消失 3500 毫秒然后重新出现(如果我删除 anim.setVisibility(View.GONE))
    【解决方案2】:

    我发现了我的问题。 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 中,一旦它被取出,它就可以按照上述更改的预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多