所以我试图制作一个像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>