在Listview项目顶部添加一个按钮,该项目从左侧滑入(带动画)

时间:2013-07-22 15:29:27

标签: android listview

我有一个项目的列表视图,我希望在按下其中一个项目时,从屏幕右侧滑入三个按钮。这是一个例子:

如果尚未点击列表视图项: enter image description here

列表视图项,如果已被点击: enter image description here

我也对通过半透明灰色叠加选择的项目“调暗”感兴趣。这可能吗?这样做的最佳方法是什么?我一直在做研究,但一切似乎都是面向手势的,更多的是关于删除项目。

1 个答案:

答案 0 :(得分:1)

滑动按钮应该不会太困难。您需要做的是将它们包装在父容器中(例如,水平LinearLayout)。将父容器的可见性设置为android:visibility="invisible"。然后,在您的代码中,为OnClickListener项设置ListView,以便在您创建的父容器上启动Transition动画,从左到右滑动它。确保在启动动画时将父容器的可见性设置回“可见”(例如,在代码中附加到动画的onAnimationStart()内的AnimationListener方法内)。

动画可以用XML存储,如下所示:

<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="false">

  <translate android:fromXDelta="-100%" android:toXDelta="0%"
             android:fromYDelta="0%" android:toYDelta="0%"
             android:duration="400"/>
</set>

这显然不是您需要的一切,但希望它能帮助您指明正确的方向。至于调光,我之前通过将整个项目视图覆盖为具有半透明背景颜色的基本View(如#88ffffff)来完成此操作。将其可见性设置为“已消失”,直到您需要将项目渲染为灰色。

编辑:以下是翻译动画在点击监听器中的显示效果:

TranslateAnimation translateAnim = (TranslateAnimation) AnimationUtils.loadAnimation(this, R.anim.your_slide_in_animation);
translateAnim.setInterpolator(new LinearInterpolator());
translateAnim.setAnimationListener(new AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {
        buttonParentView.setVisibility(View.VISIBLE);
    }

        @Override
        public void onAnimationEnd(Animation animation) {}

        @Override
        public void onAnimationRepeat(Animation animation) {}
    });

buttonParentView.startAnimation(translateAnim);