Add setBackgroundColor() in VideoPreference

- Add setBackgroundColor() to allow changed background
  color of VideoPreference.
- Add test case.

Bug: 149974597
Test: make -j42 RunSettingsRoboTests
Change-Id: I14f849d54657dc0ccbd599c393de6f430e9352d4
This commit is contained in:
hughchen
2020-02-27 14:16:11 +08:00
parent 4d59bce21b
commit 507218b577
2 changed files with 30 additions and 0 deletions

View File

@@ -39,12 +39,18 @@ import com.android.settings.R;
public class VideoPreference extends Preference { public class VideoPreference extends Preference {
private static final String TAG = "VideoPreference"; private static final String TAG = "VideoPreference";
private static final int DEFAULT_BACKGROUND_RESOURCE_ID = -1;
private final Context mContext; private final Context mContext;
@VisibleForTesting @VisibleForTesting
AnimationController mAnimationController; AnimationController mAnimationController;
@VisibleForTesting @VisibleForTesting
boolean mAnimationAvailable; boolean mAnimationAvailable;
@VisibleForTesting
LinearLayout mAnimationView;
@VisibleForTesting
int mBackgroundResId = DEFAULT_BACKGROUND_RESOURCE_ID;
private float mAspectRatio = 1.0f; private float mAspectRatio = 1.0f;
private int mPreviewId; private int mPreviewId;
private int mAnimationId; private int mAnimationId;
@@ -114,6 +120,7 @@ public class VideoPreference extends Preference {
mVideo = (TextureView) holder.findViewById(R.id.video_texture_view); mVideo = (TextureView) holder.findViewById(R.id.video_texture_view);
mPreviewImage = (ImageView) holder.findViewById(R.id.video_preview_image); mPreviewImage = (ImageView) holder.findViewById(R.id.video_preview_image);
mPlayButton = (ImageView) holder.findViewById(R.id.video_play_button); mPlayButton = (ImageView) holder.findViewById(R.id.video_play_button);
mAnimationView = (LinearLayout) holder.itemView;
final AspectRatioFrameLayout layout = (AspectRatioFrameLayout) holder.findViewById( final AspectRatioFrameLayout layout = (AspectRatioFrameLayout) holder.findViewById(
R.id.video_container); R.id.video_container);
@@ -123,6 +130,9 @@ public class VideoPreference extends Preference {
layout.setLayoutParams(new LinearLayout.LayoutParams( layout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, mHeight)); LinearLayout.LayoutParams.MATCH_PARENT, mHeight));
} }
if (mBackgroundResId != DEFAULT_BACKGROUND_RESOURCE_ID) {
mAnimationView.setBackgroundResource(mBackgroundResId);
}
if (mAnimationController != null) { if (mAnimationController != null) {
mAnimationController.attachView(mVideo, mPreviewImage, mPlayButton); mAnimationController.attachView(mVideo, mPreviewImage, mPlayButton);
} }
@@ -202,6 +212,14 @@ public class VideoPreference extends Preference {
/ (float) mAnimationController.getVideoHeight(); / (float) mAnimationController.getVideoHeight();
} }
/**
* Set the background color of the video preference
* @param resId resource id of color
*/
public void setBackgroundColor(int resId) {
mBackgroundResId = resId;
}
/** /**
* Handle animation operations. * Handle animation operations.
*/ */

View File

@@ -32,6 +32,7 @@ import android.view.LayoutInflater;
import android.view.TextureView; import android.view.TextureView;
import android.view.View; import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceViewHolder; import androidx.preference.PreferenceViewHolder;
@@ -60,6 +61,9 @@ public class VideoPreferenceTest {
private ImageView fakePreview; private ImageView fakePreview;
@Mock @Mock
private ImageView fakePlayButton; private ImageView fakePlayButton;
@Mock
private LinearLayout mAnimationView;
private Context mContext; private Context mContext;
private VideoPreference mVideoPreference; private VideoPreference mVideoPreference;
private PreferenceViewHolder mPreferenceViewHolder; private PreferenceViewHolder mPreferenceViewHolder;
@@ -73,6 +77,7 @@ public class VideoPreferenceTest {
new MediaAnimationController(mContext, R.raw.accessibility_screen_magnification)); new MediaAnimationController(mContext, R.raw.accessibility_screen_magnification));
mVideoPreference = new VideoPreference(mContext, null /* attrs */); mVideoPreference = new VideoPreference(mContext, null /* attrs */);
mVideoPreference.mAnimationController = mAnimationController; mVideoPreference.mAnimationController = mAnimationController;
mVideoPreference.mAnimationView = mAnimationView;
when(mAnimationController.getVideoWidth()).thenReturn(VIDEO_WIDTH); when(mAnimationController.getVideoWidth()).thenReturn(VIDEO_WIDTH);
when(mAnimationController.getVideoHeight()).thenReturn(VIDEO_HEIGHT); when(mAnimationController.getVideoHeight()).thenReturn(VIDEO_HEIGHT);
@@ -157,6 +162,13 @@ public class VideoPreferenceTest {
assertThat(vp2.mAnimationController instanceof VectorAnimationController).isTrue(); assertThat(vp2.mAnimationController instanceof VectorAnimationController).isTrue();
} }
@Test
public void setBackgroundColor_shouldBeCalled() {
mVideoPreference.setBackgroundColor(1111);
assertThat(mVideoPreference.mBackgroundResId).isEqualTo(1111);
}
public static class TestFragment extends PreferenceFragmentCompat { public static class TestFragment extends PreferenceFragmentCompat {
@Override @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {