我有一个项目列表视图,当按下其中一个项目时,我希望三个按钮从屏幕右侧滑入。这是一个例子:
列表视图项(如果尚未单击):
列表视图项(如果已单击):
我还对通过半透明灰色覆盖层选择的项目“调暗”感兴趣。这可能吗?这样做的最佳方法是什么?我一直在做研究,但一切似乎都是面向手势的,更多的是关于删除项目。
滑入按钮应该不会太难。您需要做的是将它们包装在父容器中(例如,水平容器LinearLayout
)。将父容器的可见性设置为android:visibility="invisible"
。然后,在您的代码中,OnClickListener
为您的ListView
项目设置 以在您创建的父容器上启动一个过渡动画,从左到右滑动它。确保在启动动画时将父容器的可见性设置回“可见”(例如,在代码中附加到动画的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);