Merge "Update the IllustrationPreference of SettingsLib." into sc-dev

This commit is contained in:
Stanley Wang
2021-06-16 09:24:55 +00:00
committed by Android (Google) Code Review
2 changed files with 41 additions and 18 deletions

View File

@@ -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>

View File

@@ -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);