无法在 Android 上使用 LinearLayout 执行 Alpha 动画
Cannot do Alpha Animation with LinearLayout on Android
所以我试图制作一个像 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 产生任何影响。唯一的变化是切换按钮使非覆盖内容 work/stop 工作(因为 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,它不会激活它。
有什么想法吗?我已经在 Whosebug 上尝试了很多解决方案。
谢谢!
这是我的 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>
所以我试图制作一个像 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 产生任何影响。唯一的变化是切换按钮使非覆盖内容 work/stop 工作(因为 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,它不会激活它。
有什么想法吗?我已经在 Whosebug 上尝试了很多解决方案。
谢谢!
这是我的 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>