Merge "Add a preview image to the color mode preference."
This commit is contained in:
committed by
Android (Google) Code Review
commit
1619695402
30
res/layout/color_mode_preview.xml
Normal file
30
res/layout/color_mode_preview.xml
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2018 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.
|
||||
-->
|
||||
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/color_mode_preview_height"
|
||||
android:paddingBottom="@dimen/color_mode_preview_padding_bottom"
|
||||
android:scaleType="centerCrop"
|
||||
android:cropToPadding="true"
|
||||
android:src="@drawable/caption_background"
|
||||
android:contentDescription="@null" />
|
||||
|
||||
</FrameLayout>
|
@@ -60,6 +60,9 @@
|
||||
|
||||
<dimen name="captioning_preview_height">200dp</dimen>
|
||||
|
||||
<dimen name="color_mode_preview_height">320dp</dimen>
|
||||
<dimen name="color_mode_preview_padding_bottom">40dp</dimen>
|
||||
|
||||
<dimen name="ring_progress_bar_thickness">4dp</dimen>
|
||||
<dimen name="settings_side_margin">0dip</dimen>
|
||||
|
||||
|
@@ -16,10 +16,12 @@ package com.android.settings.display;
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.support.annotation.VisibleForTesting;
|
||||
import android.support.v7.preference.PreferenceScreen;
|
||||
|
||||
import com.android.internal.app.ColorDisplayController;
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
|
||||
import com.android.settings.applications.LayoutPreference;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.widget.RadioButtonPickerFragment;
|
||||
import com.android.settingslib.widget.CandidateInfo;
|
||||
@@ -50,6 +52,19 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment {
|
||||
return R.xml.color_mode_settings;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void configureAndInstallPreview(LayoutPreference preview, PreferenceScreen screen) {
|
||||
preview.setSelectable(false);
|
||||
screen.addPreference(preview);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addStaticPreferences(PreferenceScreen screen) {
|
||||
final LayoutPreference preview = new LayoutPreference(screen.getContext(),
|
||||
R.layout.color_mode_preview);
|
||||
configureAndInstallPreview(preview, screen);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<? extends CandidateInfo> getCandidates() {
|
||||
Context c = getContext();
|
||||
|
@@ -101,6 +101,13 @@ public abstract class RadioButtonPickerFragment extends InstrumentedPreferenceFr
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Populate any static preferences, independent of the radio buttons.
|
||||
* These might be used to provide extra information about the choices.
|
||||
**/
|
||||
protected void addStaticPreferences(PreferenceScreen screen) {
|
||||
}
|
||||
|
||||
protected CandidateInfo getCandidate(String key) {
|
||||
return mCandidates.get(key);
|
||||
}
|
||||
@@ -134,6 +141,7 @@ public abstract class RadioButtonPickerFragment extends InstrumentedPreferenceFr
|
||||
final String systemDefaultKey = getSystemDefaultKey();
|
||||
final PreferenceScreen screen = getPreferenceScreen();
|
||||
screen.removeAll();
|
||||
addStaticPreferences(screen);
|
||||
|
||||
final int customLayoutResId = getRadioButtonPreferenceCustomLayoutResId();
|
||||
if (shouldShowItemNone()) {
|
||||
|
@@ -20,13 +20,17 @@ import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceScreen;
|
||||
|
||||
import com.android.internal.app.ColorDisplayController;
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.applications.LayoutPreference;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
@@ -37,6 +41,7 @@ import com.android.settingslib.widget.CandidateInfo;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
@@ -145,4 +150,17 @@ public class ColorModePreferenceFragmentTest {
|
||||
verify(mFragment).addPreferencesFromResource(R.xml.color_mode_settings);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addStaticPreferences_shouldAddPreviewImage() {
|
||||
PreferenceScreen mockPreferenceScreen = Mockito.mock(PreferenceScreen.class);
|
||||
LayoutPreference mockPreview = Mockito.mock(LayoutPreference.class);
|
||||
|
||||
ArgumentCaptor<Preference> preferenceCaptor = ArgumentCaptor.forClass(Preference.class);
|
||||
|
||||
mFragment.configureAndInstallPreview(mockPreview, mockPreferenceScreen);
|
||||
Mockito.verify(mockPreview, times(1)).setSelectable(false);
|
||||
Mockito.verify(mockPreferenceScreen, times(1)).addPreference(preferenceCaptor.capture());
|
||||
|
||||
assertThat(preferenceCaptor.getValue()).isEqualTo(mockPreview);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user