Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0935e117 authored by Stanley Wang's avatar Stanley Wang
Browse files

Remove the pause icon from IllustrationPreference.

Fix: 189426848
Test: robotest and test the IllustrationPreference manually.
Change-Id: I6087adb99e6b23642d952165073e4e3468397dab
parent 96d2926f
Loading
Loading
Loading
Loading
+0 −24
Original line number Original line Diff line number Diff line
<!--
    Copyright (C) 2021 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="48.0"
        android:viewportHeight="48.0">
    <path android:fillColor="#FFFFFF" android:pathData="M24,24m-19,0a19,19 0,1 1,38 0a19,19 0,1 1,-38 0"/>
    <path android:fillColor="#1A73E8" android:pathData="M20,33l12,-9l-12,-9z"/>
    <path android:fillColor="#1A73E8" android:pathData="M24,4C12.96,4 4,12.96 4,24s8.96,20 20,20s20,-8.96 20,-20S35.04,4 24,4zM24,40c-8.82,0 -16,-7.18 -16,-16S15.18,8 24,8s16,7.18 16,16S32.82,40 24,40z"/>
</vector>
+0 −9
Original line number Original line Diff line number Diff line
@@ -50,14 +50,5 @@
        android:background="@android:color/transparent"
        android:background="@android:color/transparent"
        android:layout_gravity="center"
        android:layout_gravity="center"
        android:visibility="gone"/>
        android:visibility="gone"/>

    <ImageView
        android:id="@+id/video_play_button"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_gravity="center"
        android:visibility="gone"
        android:src="@drawable/ic_gesture_play_button"/>

</FrameLayout>
</FrameLayout>
+1 −82
Original line number Original line Diff line number Diff line
@@ -18,8 +18,6 @@ package com.android.settingslib.widget;


import android.content.Context;
import android.content.Context;
import android.content.res.TypedArray;
import android.content.res.TypedArray;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.util.AttributeSet;
import android.util.Log;
import android.util.Log;
import android.view.View;
import android.view.View;
@@ -28,7 +26,6 @@ import android.widget.ImageView;


import androidx.annotation.VisibleForTesting;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.Preference;
import androidx.preference.Preference.OnPreferenceClickListener;
import androidx.preference.PreferenceViewHolder;
import androidx.preference.PreferenceViewHolder;


import com.airbnb.lottie.LottieAnimationView;
import com.airbnb.lottie.LottieAnimationView;
@@ -36,14 +33,12 @@ import com.airbnb.lottie.LottieAnimationView;
/**
/**
 * IllustrationPreference is a preference that can play lottie format animation
 * IllustrationPreference is a preference that can play lottie format animation
 */
 */
public class IllustrationPreference extends Preference implements OnPreferenceClickListener {
public class IllustrationPreference extends Preference {


    static final String TAG = "IllustrationPreference";
    static final String TAG = "IllustrationPreference";


    private int mAnimationId;
    private int mAnimationId;
    private boolean mIsAnimating;
    private boolean mIsAutoScale;
    private boolean mIsAutoScale;
    private ImageView mPlayButton;
    private LottieAnimationView mIllustrationView;
    private LottieAnimationView mIllustrationView;
    private View mMiddleGroundView;
    private View mMiddleGroundView;
    private FrameLayout mMiddleGroundLayout;
    private FrameLayout mMiddleGroundLayout;
@@ -72,13 +67,11 @@ public class IllustrationPreference extends Preference implements OnPreferenceCl
            return;
            return;
        }
        }
        mMiddleGroundLayout = (FrameLayout) holder.findViewById(R.id.middleground_layout);
        mMiddleGroundLayout = (FrameLayout) holder.findViewById(R.id.middleground_layout);
        mPlayButton = (ImageView) holder.findViewById(R.id.video_play_button);
        mIllustrationView = (LottieAnimationView) holder.findViewById(R.id.lottie_view);
        mIllustrationView = (LottieAnimationView) holder.findViewById(R.id.lottie_view);
        mIllustrationView.setAnimation(mAnimationId);
        mIllustrationView.setAnimation(mAnimationId);
        mIllustrationView.loop(true);
        mIllustrationView.loop(true);
        ColorUtils.applyDynamicColors(getContext(), mIllustrationView);
        ColorUtils.applyDynamicColors(getContext(), mIllustrationView);
        mIllustrationView.playAnimation();
        mIllustrationView.playAnimation();
        updateAnimationStatus(mIsAnimating);
        if (mIsAutoScale) {
        if (mIsAutoScale) {
            enableAnimationAutoScale(mIsAutoScale);
            enableAnimationAutoScale(mIsAutoScale);
        }
        }
@@ -87,28 +80,6 @@ public class IllustrationPreference extends Preference implements OnPreferenceCl
        }
        }
    }
    }


    @Override
    public boolean onPreferenceClick(Preference preference) {
        mIsAnimating = !isAnimating();
        updateAnimationStatus(mIsAnimating);
        return true;
    }

    @Override
    protected Parcelable onSaveInstanceState() {
        Parcelable superState = super.onSaveInstanceState();
        SavedState ss = new SavedState(superState);
        ss.mIsAnimating = mIsAnimating;
        return ss;
    }

    @Override
    protected void onRestoreInstanceState(Parcelable state) {
        SavedState ss = (SavedState) state;
        super.onRestoreInstanceState(ss.getSuperState());
        mIsAnimating = ss.mIsAnimating;
    }

    @VisibleForTesting
    @VisibleForTesting
    boolean isAnimating() {
    boolean isAnimating() {
        return mIllustrationView.isAnimating();
        return mIllustrationView.isAnimating();
@@ -158,7 +129,6 @@ public class IllustrationPreference extends Preference implements OnPreferenceCl
    private void init(Context context, AttributeSet attrs) {
    private void init(Context context, AttributeSet attrs) {
        setLayoutResource(R.layout.illustration_preference);
        setLayoutResource(R.layout.illustration_preference);


        mIsAnimating = true;
        mIsAutoScale = false;
        mIsAutoScale = false;
        if (attrs != null) {
        if (attrs != null) {
            final TypedArray a = context.obtainStyledAttributes(attrs,
            final TypedArray a = context.obtainStyledAttributes(attrs,
@@ -166,56 +136,5 @@ public class IllustrationPreference extends Preference implements OnPreferenceCl
            mAnimationId = a.getResourceId(R.styleable.LottieAnimationView_lottie_rawRes, 0);
            mAnimationId = a.getResourceId(R.styleable.LottieAnimationView_lottie_rawRes, 0);
            a.recycle();
            a.recycle();
        }
        }
        setOnPreferenceClickListener(this);
    }

    private void updateAnimationStatus(boolean playAnimation) {
        if (playAnimation) {
            mIllustrationView.resumeAnimation();
            mPlayButton.setVisibility(View.INVISIBLE);
        } else {
            mIllustrationView.pauseAnimation();
            mPlayButton.setVisibility(View.VISIBLE);
        }
    }

    static class SavedState extends BaseSavedState {
        boolean mIsAnimating;

        SavedState(Parcelable superState) {
            super(superState);
        }

        /**
         * Constructor called from {@link #CREATOR}
         */
        private SavedState(Parcel in) {
            super(in);
            mIsAnimating = (Boolean) in.readValue(null);
        }

        @Override
        public void writeToParcel(Parcel out, int flags) {
            super.writeToParcel(out, flags);
            out.writeValue(mIsAnimating);
        }

        @Override
        public String toString() {
            return "IllustrationPreference.SavedState{"
                    + Integer.toHexString(System.identityHashCode(this))
                    + " mIsAnimating=" + mIsAnimating + "}";
        }

        public static final Parcelable.Creator<SavedState> CREATOR =
                new Parcelable.Creator<SavedState>() {
                    public SavedState createFromParcel(Parcel in) {
                        return new SavedState(in);
                    }

                    public SavedState[] newArray(int size) {
                        return new SavedState[size];
                    }
                };
    }
    }
}
}
+0 −16
Original line number Original line Diff line number Diff line
@@ -18,8 +18,6 @@ package com.android.settingslib.widget;


import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertThat;


import static org.mockito.Mockito.when;

import android.content.Context;
import android.content.Context;
import android.util.AttributeSet;
import android.util.AttributeSet;
import android.view.View;
import android.view.View;
@@ -56,20 +54,6 @@ public class IllustrationPreferenceTest {
        ReflectionHelpers.setField(mPreference, "mIllustrationView", mAnimationView);
        ReflectionHelpers.setField(mPreference, "mIllustrationView", mAnimationView);
    }
    }


    @Test
    public void isAnimating_lottieAnimationViewIsNotAnimating_shouldReturnFalse() {
        when(mAnimationView.isAnimating()).thenReturn(false);

        assertThat(mPreference.isAnimating()).isFalse();
    }

    @Test
    public void isAnimating_lottieAnimationViewIsAnimating_shouldReturnTrue() {
        when(mAnimationView.isAnimating()).thenReturn(true);

        assertThat(mPreference.isAnimating()).isTrue();
    }

    @Test
    @Test
    public void setMiddleGroundView_middleGroundView_shouldVisible() {
    public void setMiddleGroundView_middleGroundView_shouldVisible() {
        final View view = new View(mContext);
        final View view = new View(mContext);