在Android

时间:2015-07-24 22:27:08

标签: android animation android-linearlayout

所以我试图制作一个像Trello一样的ActionButton(单击一个按钮,一个黑色叠加图,屏幕上出现其他按钮)。

但我有一个奇怪的问题:我无法使alpha动画工作。

我尝试了两种方式:

private void initializeComponent(final Context ctx, final AttributeSet attrs) {
    blackOverlay.setAlpha(0.0f);
    blackOverlay.setVisibility(View.VISIBLE);
    blackOverlay.setClickable(true);

    actionButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            final boolean closed = blackOverlay.getAlpha() == 0.0f;
            blackOverlay.animate().alpha(closed ? 1f : 0f).setDuration(500).setListener(null);
    });
}

因此,通过这种方式,视图blackOverlay 始终可见,动画应该有效。但它并没有。单击该按钮对alpha没有任何影响。唯一的变化是切换按钮会使非叠加内容工作/停止工作(因为它应该是可点击的blackOverlay)。

所以我尝试了另一种方法:不将alpha设置为0.0f,以便覆盖对用户开始可见。基本上是注释initializeComponent方法的第一行。

private void initializeComponent(final Context ctx, final AttributeSet attrs) {
    //blackOverlay.setAlpha(0.0f);
    blackOverlay.setVisibility(View.VISIBLE);
    blackOverlay.setClickable(true);

    actionButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            final boolean closed = blackOverlay.getAlpha() == 0.0f;
            blackOverlay.animate().alpha(closed ? 1f : 0f).setDuration(500).setListener(null);
        }
    });
}

通过这种方式,按钮只能切换 alpha,它不会为其设置动画。

有什么想法吗?我已经在StackOverflow上尝试了很多解决方案。

谢谢!

这是我的xml布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/blackoverlay"
        android:background="@color/black_overlay">

    </LinearLayout>

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/action_button"
        android:layout_gravity="bottom"
        android:src="@drawable/plus"
        android:layout_margin="50dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

好的,所以我做了MCVE,因为karaokyo说,但有趣的是:它适用于MCVE。

所以我开始查看我的整个代码,发现我有一个setOnClickListener用于与action_button同名的Button。所以我只是将ID更改为不一样,现在一切正常。

它认为这是我的坏事,我是愚蠢的哈哈尔

所以对于正在阅读此内容的人:尝试从头创建MCVE(甚至是新项目)并查看它是否有效。它可能是你的代码中不相关干扰的其他东西。