Update the IllustrationPreference of SettingsLib.
- Adjust the frame size of the LottieView. We set the frame height to 300dp and set the length of the short side of the screen to the width of the frame. In this way, LottieView has a fixed size to solve the problem of incorrect illustration spec. - Set the importantForAccessibility value to noHideDescendants to avoid the a11y issue. Bug: 190807662 Test: robotest and see the UI. Change-Id: Ib48f9c65e0dfbf36b7ebb70718fa5423c918a7a9
This commit is contained in:
@@ -20,35 +20,38 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:background="?android:attr/colorBackground"
|
||||
android:importantForAccessibility="noHideDescendants"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
<FrameLayout
|
||||
android:id="@+id/illustration_frame"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/settingslib_illustration_height"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center_vertical"
|
||||
android:padding="@dimen/settingslib_illustration_padding"
|
||||
android:orientation="vertical">
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/protection_background"/>
|
||||
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/lottie_view"
|
||||
android:adjustViewBounds="true"
|
||||
android:maxWidth="@dimen/settingslib_illustration_width"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:clipToOutline="true"
|
||||
android:background="@drawable/protection_background"
|
||||
android:importantForAccessibility="no"/>
|
||||
</LinearLayout>
|
||||
android:layout_gravity="center" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/middleground_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@android:color/transparent"
|
||||
android:layout_gravity="center"
|
||||
android:visibility="gone"/>
|
||||
</FrameLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/middleground_layout"
|
||||
android:layout_width="@dimen/settingslib_illustration_width"
|
||||
android:layout_height="@dimen/settingslib_illustration_height"
|
||||
android:padding="@dimen/settingslib_illustration_padding"
|
||||
android:background="@android:color/transparent"
|
||||
android:layout_gravity="center"
|
||||
android:visibility="gone"/>
|
||||
</FrameLayout>
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ import android.content.res.TypedArray;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup.LayoutParams;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
|
||||
@@ -68,6 +69,18 @@ public class IllustrationPreference extends Preference {
|
||||
Log.w(TAG, "Invalid illustration resource id.");
|
||||
return;
|
||||
}
|
||||
|
||||
// To solve the problem of non-compliant illustrations, we set the frame height
|
||||
// to 300dp and set the length of the short side of the screen to
|
||||
// the width of the frame.
|
||||
final int screenWidth = getContext().getResources().getDisplayMetrics().widthPixels;
|
||||
final int screenHeight = getContext().getResources().getDisplayMetrics().heightPixels;
|
||||
final FrameLayout illustrationFrame = (FrameLayout) holder.findViewById(
|
||||
R.id.illustration_frame);
|
||||
final LayoutParams lp = (LayoutParams) illustrationFrame.getLayoutParams();
|
||||
lp.width = screenWidth < screenHeight ? screenWidth : screenHeight;
|
||||
illustrationFrame.setLayoutParams(lp);
|
||||
|
||||
mMiddleGroundLayout = (FrameLayout) holder.findViewById(R.id.middleground_layout);
|
||||
mIllustrationView = (LottieAnimationView) holder.findViewById(R.id.lottie_view);
|
||||
mIllustrationView.setAnimation(mAnimationId);
|
||||
@@ -124,6 +137,13 @@ public class IllustrationPreference extends Preference {
|
||||
mIsAutoScale ? ImageView.ScaleType.CENTER_CROP : ImageView.ScaleType.CENTER_INSIDE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the lottie illustration resource id.
|
||||
*/
|
||||
public void setLottieAnimationResId(int resId) {
|
||||
mAnimationId = resId;
|
||||
}
|
||||
|
||||
private void enableMiddleGroundView() {
|
||||
mMiddleGroundLayout.removeAllViews();
|
||||
mMiddleGroundLayout.addView(mMiddleGroundView);
|
||||
|
||||
Reference in New Issue
Block a user