Android 使布局变暗以强调另一部分
Android make layout darker to emphasize another part
我想在屏幕中间的卡片视图中创建一个加载动画,我想强调卡片视图,所以我想让除了卡片视图之外的所有东西都暗一点。我怎样才能让我的布局更暗一点?
在图片中你可以看到我想要我的背景
我不能说这是正确的方法,但这就是我实现它的方式。
我通过制作背景为灰色 (#808080) 和 alpha 0~0.9(alpha 控制视图的透明度)的视图来实现此目的,当我需要使事物变暗并隐藏时,我会显示此视图(可见)它(消失)当我完成时。
为了控制它出现在所有其他视图之上,我使用高程属性(我认为以编程方式称为 TranslationZ)具有足够高的值以显示在所有其他视图之上,但没有我实际想要在屏幕前显示的那么高.
我的一个代码中的一个简单示例,我希望在单击时单个图像出现在 RecycleView 上方,当我需要显示图像时,我会将整个子约束布局设置为可见 invisible/Gone 当我不在时:
我的布局xml
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_view"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:elevation="2dp">
</androidx.recyclerview.widget.RecyclerView>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/maximized_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<View
android:id="@+id/shade"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:background="#808080"
android:alpha="0.9"
android:elevation="3dp"
/>
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/image_basic_label"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:elevation="4dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
当我需要在代码中显示时,我会这样做:
maximizedContainer.setVisibility(View.VISIBLE);
其中 maximizedContainer
是子约束布局
我想在屏幕中间的卡片视图中创建一个加载动画,我想强调卡片视图,所以我想让除了卡片视图之外的所有东西都暗一点。我怎样才能让我的布局更暗一点?
在图片中你可以看到我想要我的背景
我不能说这是正确的方法,但这就是我实现它的方式。
我通过制作背景为灰色 (#808080) 和 alpha 0~0.9(alpha 控制视图的透明度)的视图来实现此目的,当我需要使事物变暗并隐藏时,我会显示此视图(可见)它(消失)当我完成时。
为了控制它出现在所有其他视图之上,我使用高程属性(我认为以编程方式称为 TranslationZ)具有足够高的值以显示在所有其他视图之上,但没有我实际想要在屏幕前显示的那么高.
我的一个代码中的一个简单示例,我希望在单击时单个图像出现在 RecycleView 上方,当我需要显示图像时,我会将整个子约束布局设置为可见 invisible/Gone 当我不在时:
我的布局xml
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_view"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:elevation="2dp">
</androidx.recyclerview.widget.RecyclerView>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/maximized_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<View
android:id="@+id/shade"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:background="#808080"
android:alpha="0.9"
android:elevation="3dp"
/>
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/image_basic_label"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:elevation="4dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
当我需要在代码中显示时,我会这样做:
maximizedContainer.setVisibility(View.VISIBLE);
其中 maximizedContainer
是子约束布局