Merge "Adds color icon to the small image data provider for complication test suite." into nyc-mr1-dev
diff --git a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/AnalogComplicationConfigRecyclerViewAdapter.java b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/AnalogComplicationConfigRecyclerViewAdapter.java
index 096a380..7e79d22 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/AnalogComplicationConfigRecyclerViewAdapter.java
+++ b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/AnalogComplicationConfigRecyclerViewAdapter.java
@@ -47,37 +47,35 @@
import com.example.android.wearable.watchface.model.AnalogComplicationConfigData.BackgroundComplicationConfigItem;
import com.example.android.wearable.watchface.model.AnalogComplicationConfigData.ColorConfigItem;
import com.example.android.wearable.watchface.model.AnalogComplicationConfigData.ConfigItemType;
-import com.example.android.wearable.watchface.model.AnalogComplicationConfigData.PreviewAndComplicationsConfigItem;
import com.example.android.wearable.watchface.model.AnalogComplicationConfigData.MoreOptionsConfigItem;
+import com.example.android.wearable.watchface.model.AnalogComplicationConfigData.PreviewAndComplicationsConfigItem;
import com.example.android.wearable.watchface.model.AnalogComplicationConfigData.UnreadNotificationConfigItem;
-
import com.example.android.wearable.watchface.watchface.AnalogComplicationWatchFaceService;
import java.util.ArrayList;
import java.util.concurrent.Executors;
/**
- * <p>
- * Displays different layouts for configuring watch face's complications and appearance
- * settings (highlight color [second arm], background color, unread notifications, etc.).
- * <p>
- * All appearance settings are saved via {@link SharedPreferences}.
- * <p>
- * Layouts provided by this adapter are split into 5 main view types.
- * <p>
- * A watch face preview including complications. Allows user to tap on the complications to change
- * the complication data and see a live preview of the watch face.
- * <p>
- * Simple arrow to indicate there are more options below the fold.
- * <p>
- * Color configuration options for both highlight (seconds hand) and background color.
- * <p>
- * Toggle for unread notifications.
- * <p>
- * Background image complication configuration for changing background image of watch face.
+ * Displays different layouts for configuring watch face's complications and appearance settings
+ * (highlight color [second arm], background color, unread notifications, etc.).
+ *
+ * <p>All appearance settings are saved via {@link SharedPreferences}.
+ *
+ * <p>Layouts provided by this adapter are split into 5 main view types.
+ *
+ * <p>A watch face preview including complications. Allows user to tap on the complications to
+ * change the complication data and see a live preview of the watch face.
+ *
+ * <p>Simple arrow to indicate there are more options below the fold.
+ *
+ * <p>Color configuration options for both highlight (seconds hand) and background color.
+ *
+ * <p>Toggle for unread notifications.
+ *
+ * <p>Background image complication configuration for changing background image of watch face.
*/
-public class AnalogComplicationConfigRecyclerViewAdapter extends
- RecyclerView.Adapter<RecyclerView.ViewHolder> {
+public class AnalogComplicationConfigRecyclerViewAdapter
+ extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final String TAG = "CompConfigAdapter";
@@ -87,7 +85,11 @@
* complication data types.
*/
public enum ComplicationLocation {
- LEFT, RIGHT, TOP, BOTTOM
+ BACKGROUND,
+ LEFT,
+ RIGHT,
+ TOP,
+ BOTTOM
}
public static final int TYPE_PREVIEW_AND_COMPLICATIONS_CONFIG = 0;
@@ -109,6 +111,7 @@
// Selected complication id by user.
private int mSelectedComplicationId;
+ private int mBackgroundComplicationId;
private int mLeftComplicationId;
private int mRightComplicationId;
@@ -131,14 +134,19 @@
// Default value is invalid (only changed when user taps to change complication).
mSelectedComplicationId = -1;
+ mBackgroundComplicationId =
+ AnalogComplicationWatchFaceService.getComplicationId(
+ ComplicationLocation.BACKGROUND);
+
mLeftComplicationId =
AnalogComplicationWatchFaceService.getComplicationId(ComplicationLocation.LEFT);
mRightComplicationId =
AnalogComplicationWatchFaceService.getComplicationId(ComplicationLocation.RIGHT);
- mSharedPref = context.getSharedPreferences(
- context.getString(R.string.analog_complication_preference_file_key),
- Context.MODE_PRIVATE);
+ mSharedPref =
+ context.getSharedPreferences(
+ context.getString(R.string.analog_complication_preference_file_key),
+ Context.MODE_PRIVATE);
// Initialization of code to retrieve active complication data for the watch face.
mProviderInfoRetriever =
@@ -168,20 +176,29 @@
case TYPE_MORE_OPTIONS:
viewHolder =
- new MoreOptionsViewHolder(LayoutInflater.from(parent.getContext())
- .inflate(R.layout.config_list_more_options_item, parent, false));
+ new MoreOptionsViewHolder(
+ LayoutInflater.from(parent.getContext())
+ .inflate(
+ R.layout.config_list_more_options_item,
+ parent,
+ false));
break;
case TYPE_COLOR_CONFIG:
viewHolder =
- new ColorPickerViewHolder(LayoutInflater.from(parent.getContext())
- .inflate(R.layout.config_list_color_item, parent, false));
+ new ColorPickerViewHolder(
+ LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.config_list_color_item, parent, false));
break;
case TYPE_UNREAD_NOTIFICATION_CONFIG:
viewHolder =
- new UnreadNotificationViewHolder(LayoutInflater.from(parent.getContext())
- .inflate(R.layout.config_list_unread_notif_item, parent, false));
+ new UnreadNotificationViewHolder(
+ LayoutInflater.from(parent.getContext())
+ .inflate(
+ R.layout.config_list_unread_notif_item,
+ parent,
+ false));
break;
case TYPE_BACKGROUND_COMPLICATION_IMAGE_CONFIG:
@@ -206,7 +223,6 @@
ConfigItemType configItemType = mSettingsDataSet.get(position);
switch (viewHolder.getItemViewType()) {
-
case TYPE_PREVIEW_AND_COMPLICATIONS_CONFIG:
PreviewAndComplicationsViewHolder previewAndComplicationsViewHolder =
(PreviewAndComplicationsViewHolder) viewHolder;
@@ -225,12 +241,12 @@
case TYPE_MORE_OPTIONS:
MoreOptionsViewHolder moreOptionsViewHolder = (MoreOptionsViewHolder) viewHolder;
- MoreOptionsConfigItem moreOptionsConfigItem = (MoreOptionsConfigItem) configItemType;
+ MoreOptionsConfigItem moreOptionsConfigItem =
+ (MoreOptionsConfigItem) configItemType;
moreOptionsViewHolder.setIcon(moreOptionsConfigItem.getIconResourceId());
break;
-
case TYPE_COLOR_CONFIG:
ColorPickerViewHolder colorPickerViewHolder = (ColorPickerViewHolder) viewHolder;
ColorConfigItem colorConfigItem = (ColorConfigItem) configItemType;
@@ -261,8 +277,7 @@
int unreadSharedPrefId = unreadConfigItem.getSharedPrefId();
unreadViewHolder.setIcons(
- unreadEnabledIconResourceId,
- unreadDisabledIconResourceId);
+ unreadEnabledIconResourceId, unreadDisabledIconResourceId);
unreadViewHolder.setName(unreadName);
unreadViewHolder.setSharedPrefId(unreadSharedPrefId);
break;
@@ -294,9 +309,7 @@
return mSettingsDataSet.size();
}
- /**
- * Updates the selected complication id saved earlier with the new information.
- */
+ /** Updates the selected complication id saved earlier with the new information. */
public void updateSelectedComplication(ComplicationProviderInfo complicationProviderInfo) {
Log.d(TAG, "updateSelectedComplication: " + mPreviewAndComplicationsViewHolder);
@@ -304,8 +317,7 @@
// Checks if view is inflated and complication id is valid.
if (mPreviewAndComplicationsViewHolder != null && mSelectedComplicationId >= 0) {
mPreviewAndComplicationsViewHolder.updateComplicationViews(
- mSelectedComplicationId,
- complicationProviderInfo);
+ mSelectedComplicationId, complicationProviderInfo);
}
}
@@ -371,19 +383,14 @@
Log.d(TAG, "Left Complication click()");
Activity currentActivity = (Activity) view.getContext();
- launchComplicationHelperActivity(
- currentActivity,
- ComplicationLocation.LEFT);
+ launchComplicationHelperActivity(currentActivity, ComplicationLocation.LEFT);
} else if (view.equals(mRightComplication)) {
Log.d(TAG, "Right Complication click()");
Activity currentActivity = (Activity) view.getContext();
- launchComplicationHelperActivity(
- currentActivity,
- ComplicationLocation.RIGHT);
+ launchComplicationHelperActivity(currentActivity, ComplicationLocation.RIGHT);
}
-
}
public void updateWatchFaceColors() {
@@ -397,7 +404,6 @@
mWatchFaceBackgroundPreviewView.getBackground().setColorFilter(backgroundColorFilter);
-
// Updates highlight color (just second arm).
String highlightSharedPrefString = mContext.getString(R.string.saved_marker_color);
int currentHighlightColor = mSharedPref.getInt(highlightSharedPrefString, Color.RED);
@@ -411,20 +417,20 @@
// Verifies the watch face supports the complication location, then launches the helper
// class, so user can choose their complication data provider.
private void launchComplicationHelperActivity(
- Activity currentActivity,
- ComplicationLocation complicationLocation) {
+ Activity currentActivity, ComplicationLocation complicationLocation) {
mSelectedComplicationId =
AnalogComplicationWatchFaceService.getComplicationId(complicationLocation);
if (mSelectedComplicationId >= 0) {
- int[] supportedTypes = AnalogComplicationWatchFaceService
- .getSupportedComplicationTypes(complicationLocation);
+ int[] supportedTypes =
+ AnalogComplicationWatchFaceService.getSupportedComplicationTypes(
+ complicationLocation);
- ComponentName watchFace = new ComponentName(
- currentActivity,
- AnalogComplicationWatchFaceService.class);
+ ComponentName watchFace =
+ new ComponentName(
+ currentActivity, AnalogComplicationWatchFaceService.class);
currentActivity.startActivityForResult(
ComplicationHelperActivity.createProviderChooserHelperIntent(
@@ -439,7 +445,7 @@
}
}
- public void setDefaultComplicationDrawable (int resourceId) {
+ public void setDefaultComplicationDrawable(int resourceId) {
Context context = mWatchFaceArmsAndTicksView.getContext();
mDefaultComplicationDrawable = context.getDrawable(resourceId);
@@ -451,12 +457,17 @@
}
public void updateComplicationViews(
- int watchFaceComplicationId,
- ComplicationProviderInfo complicationProviderInfo) {
+ int watchFaceComplicationId, ComplicationProviderInfo complicationProviderInfo) {
Log.d(TAG, "updateComplicationViews(): id: " + watchFaceComplicationId);
Log.d(TAG, "\tinfo: " + complicationProviderInfo);
- if (watchFaceComplicationId == mLeftComplicationId) {
+ if (watchFaceComplicationId == mBackgroundComplicationId) {
+ if (complicationProviderInfo != null) {
+ // TODO: Something with icon to show background set?
+ // complicationProviderInfo.providerIcon
+ }
+
+ } else if (watchFaceComplicationId == mLeftComplicationId) {
if (complicationProviderInfo != null) {
mLeftComplication.setImageIcon(complicationProviderInfo.providerIcon);
mLeftComplicationBackground.setVisibility(View.VISIBLE);
@@ -480,7 +491,10 @@
public void retrieveInitialComplicationsData() {
- final int[] complicationIds = new int[] {mLeftComplicationId, mRightComplicationId};
+ final int[] complicationIds =
+ new int[] {
+ mBackgroundComplicationId, mLeftComplicationId, mRightComplicationId
+ };
mProviderInfoRetriever.retrieveProviderInfo(
new OnProviderInfoReceivedCallback() {
@@ -492,8 +506,7 @@
Log.d(TAG, "\n\nonProviderInfoReceived: " + complicationProviderInfo);
updateComplicationViews(
- watchFaceComplicationId,
- complicationProviderInfo);
+ watchFaceComplicationId, complicationProviderInfo);
}
},
mWatchFaceComponentName,
@@ -501,9 +514,7 @@
}
}
- /**
- * Displays icon to indicate there are more options below the fold.
- */
+ /** Displays icon to indicate there are more options below the fold. */
public class MoreOptionsViewHolder extends RecyclerView.ViewHolder {
private ImageView mMoreOptionsImageView;
@@ -523,8 +534,7 @@
* Displays color options for the an item on the watch face. These could include marker color,
* background color, etc.
*/
- public class ColorPickerViewHolder extends RecyclerView.ViewHolder
- implements OnClickListener {
+ public class ColorPickerViewHolder extends RecyclerView.ViewHolder implements OnClickListener {
private Button mAppearanceButton;
@@ -546,10 +556,7 @@
public void setIcon(int resourceId) {
Context context = mAppearanceButton.getContext();
mAppearanceButton.setCompoundDrawablesWithIntrinsicBounds(
- context.getDrawable(resourceId),
- null,
- null,
- null);
+ context.getDrawable(resourceId), null, null, null);
}
public void setSharedPrefString(String sharedPrefString) {
@@ -560,15 +567,13 @@
mLaunchActivityToSelectColor = activity;
}
-
@Override
public void onClick(View view) {
int position = getAdapterPosition();
Log.d(TAG, "Complication onClick() position: " + position);
if (mLaunchActivityToSelectColor != null) {
- Intent launchIntent =
- new Intent(view.getContext(), mLaunchActivityToSelectColor);
+ Intent launchIntent = new Intent(view.getContext(), mLaunchActivityToSelectColor);
// Pass shared preference name to save color value to.
launchIntent.putExtra(EXTRA_SHARED_PREF, mSharedPrefResourceString);
@@ -598,8 +603,7 @@
public UnreadNotificationViewHolder(View view) {
super(view);
- mUnreadNotificationSwitch =
- (Switch) view.findViewById(R.id.unread_notification_switch);
+ mUnreadNotificationSwitch = (Switch) view.findViewById(R.id.unread_notification_switch);
view.setOnClickListener(this);
}
@@ -616,10 +620,7 @@
// Set default to enabled.
mUnreadNotificationSwitch.setCompoundDrawablesWithIntrinsicBounds(
- context.getDrawable(mEnabledIconResourceId),
- null,
- null,
- null);
+ context.getDrawable(mEnabledIconResourceId), null, null, null);
}
public void setSharedPrefId(int sharedPrefId) {
@@ -646,13 +647,9 @@
mUnreadNotificationSwitch.setChecked(currentState);
mUnreadNotificationSwitch.setCompoundDrawablesWithIntrinsicBounds(
- context.getDrawable(currentIconResourceId),
- null,
- null,
- null);
+ context.getDrawable(currentIconResourceId), null, null, null);
}
-
@Override
public void onClick(View view) {
int position = getAdapterPosition();
@@ -672,9 +669,7 @@
}
}
- /**
- * Displays button to trigger background image complication selector.
- */
+ /** Displays button to trigger background image complication selector. */
public class BackgroundComplicationViewHolder extends RecyclerView.ViewHolder
implements OnClickListener {
@@ -695,10 +690,7 @@
public void setIcon(int resourceId) {
Context context = mBackgroundComplicationButton.getContext();
mBackgroundComplicationButton.setCompoundDrawablesWithIntrinsicBounds(
- context.getDrawable(resourceId),
- null,
- null,
- null);
+ context.getDrawable(resourceId), null, null, null);
}
@Override
@@ -706,7 +698,33 @@
int position = getAdapterPosition();
Log.d(TAG, "Background Complication onClick() position: " + position);
- // TODO(jewalker): Add custom RecyclerView.ViewHolder for background image complication.
+ Activity currentActivity = (Activity) view.getContext();
+
+ mSelectedComplicationId =
+ AnalogComplicationWatchFaceService.getComplicationId(
+ ComplicationLocation.BACKGROUND);
+
+ if (mSelectedComplicationId >= 0) {
+
+ int[] supportedTypes =
+ AnalogComplicationWatchFaceService.getSupportedComplicationTypes(
+ ComplicationLocation.BACKGROUND);
+
+ ComponentName watchFace =
+ new ComponentName(
+ currentActivity, AnalogComplicationWatchFaceService.class);
+
+ currentActivity.startActivityForResult(
+ ComplicationHelperActivity.createProviderChooserHelperIntent(
+ currentActivity,
+ watchFace,
+ mSelectedComplicationId,
+ supportedTypes),
+ AnalogComplicationConfigActivity.COMPLICATION_CONFIG_REQUEST_CODE);
+
+ } else {
+ Log.d(TAG, "Complication not supported by watch face.");
+ }
}
}
-}
\ No newline at end of file
+}
diff --git a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/watchface/AnalogComplicationWatchFaceService.java b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/watchface/AnalogComplicationWatchFaceService.java
index 2779658..9a4cf44 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/watchface/AnalogComplicationWatchFaceService.java
+++ b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/watchface/AnalogComplicationWatchFaceService.java
@@ -39,8 +39,10 @@
import android.util.Log;
import android.util.SparseArray;
import android.view.SurfaceHolder;
+
import com.example.android.wearable.watchface.R;
import com.example.android.wearable.watchface.config.AnalogComplicationConfigRecyclerViewAdapter;
+
import java.util.Calendar;
import java.util.TimeZone;
import java.util.concurrent.TimeUnit;
@@ -51,14 +53,19 @@
// Unique IDs for each complication. The settings activity that supports allowing users
// to select their complication data provider requires numbers to be >= 0.
- private static final int LEFT_COMPLICATION_ID = 0;
- private static final int RIGHT_COMPLICATION_ID = 1;
+ private static final int BACKGROUND_COMPLICATION_ID = 0;
- // Left and right complication IDs as array for Complication API.
- private static final int[] COMPLICATION_IDS = {LEFT_COMPLICATION_ID, RIGHT_COMPLICATION_ID};
+ private static final int LEFT_COMPLICATION_ID = 100;
+ private static final int RIGHT_COMPLICATION_ID = 101;
+
+ // Background, Left and right complication IDs as array for Complication API.
+ private static final int[] COMPLICATION_IDS = {
+ BACKGROUND_COMPLICATION_ID, LEFT_COMPLICATION_ID, RIGHT_COMPLICATION_ID
+ };
// Left and right dial supported types.
private static final int[][] COMPLICATION_SUPPORTED_TYPES = {
+ {ComplicationData.TYPE_LARGE_IMAGE},
{
ComplicationData.TYPE_RANGED_VALUE,
ComplicationData.TYPE_ICON,
@@ -79,6 +86,8 @@
AnalogComplicationConfigRecyclerViewAdapter.ComplicationLocation complicationLocation) {
// Add any other supported locations here.
switch (complicationLocation) {
+ case BACKGROUND:
+ return BACKGROUND_COMPLICATION_ID;
case LEFT:
return LEFT_COMPLICATION_ID;
case RIGHT:
@@ -94,10 +103,12 @@
AnalogComplicationConfigRecyclerViewAdapter.ComplicationLocation complicationLocation) {
// Add any other supported locations here.
switch (complicationLocation) {
- case LEFT:
+ case BACKGROUND:
return COMPLICATION_SUPPORTED_TYPES[0];
- case RIGHT:
+ case LEFT:
return COMPLICATION_SUPPORTED_TYPES[1];
+ case RIGHT:
+ return COMPLICATION_SUPPORTED_TYPES[2];
default:
return new int[] {};
}
@@ -150,10 +161,6 @@
private Paint mBackgroundPaint;
- /* TODO (jewalker): code to be reused with followup CL for complication Background image.
- private Bitmap mBackgroundBitmap;
- private Bitmap mGrayBackgroundBitmap;*/
-
/* Maps active complication ids to the data for that complication. Note: Data will only be
* present if the user has chosen a provider via the settings activity for the watch face.
*/
@@ -227,8 +234,7 @@
.build());
loadSavedPreferences();
- initializeBackground();
- initializeComplication();
+ initializeComplicationsAndBackground();
initializeWatchFace();
}
@@ -261,36 +267,37 @@
mSharedPref.getBoolean(unreadNotificationPreferenceResourceName, true);
}
- private void initializeBackground() {
-
- mBackgroundPaint = new Paint();
- mBackgroundPaint.setColor(mBackgroundColor);
-
- /* TODO(jewalker): code to be reused with followup CL for complication Background image.
- mBackgroundBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg);*/
- }
-
- private void initializeComplication() {
+ private void initializeComplicationsAndBackground() {
if (Log.isLoggable(TAG, Log.DEBUG)) {
Log.d(TAG, "initializeComplications()");
}
+ // Initialize background color (in case background complication is inactive).
+ mBackgroundPaint = new Paint();
+ mBackgroundPaint.setColor(mBackgroundColor);
+
mActiveComplicationDataSparseArray = new SparseArray<>(COMPLICATION_IDS.length);
// Creates a ComplicationDrawable for each location where the user can render a
- // complication on the watch face. In this watch face, we only create left and right,
- // but you could add many more.
+ // complication on the watch face. In this watch face, we create one for left, right,
+ // and background, but you could add many more.
ComplicationDrawable leftComplicationDrawable =
new ComplicationDrawable(getApplicationContext());
ComplicationDrawable rightComplicationDrawable =
new ComplicationDrawable(getApplicationContext());
+ ComplicationDrawable backgroundComplicationDrawable =
+ new ComplicationDrawable(getApplicationContext());
+
// Adds new complications to a SparseArray to simplify setting styles and ambient
// properties for all complications, i.e., iterate over them all.
mComplicationDrawableSparseArray = new SparseArray<>(COMPLICATION_IDS.length);
+
mComplicationDrawableSparseArray.put(LEFT_COMPLICATION_ID, leftComplicationDrawable);
mComplicationDrawableSparseArray.put(RIGHT_COMPLICATION_ID, rightComplicationDrawable);
+ mComplicationDrawableSparseArray.put(
+ BACKGROUND_COMPLICATION_ID, backgroundComplicationDrawable);
setComplicationsActiveAndAmbientColors(mWatchHandHighlightColor);
setActiveComplications(COMPLICATION_IDS);
@@ -325,26 +332,6 @@
mTickAndCirclePaint.setAntiAlias(true);
mTickAndCirclePaint.setStyle(Paint.Style.STROKE);
mTickAndCirclePaint.setShadowLayer(SHADOW_RADIUS, 0, 0, mWatchHandShadowColor);
-
- /* TODO (jewalker): code to be reused with followup CL for complication Background image
- // Asynchronous call extract colors from background image to improve watch face style.
- Palette.from(mBackgroundBitmap).generate(
- new Palette.PaletteAsyncListener() {
- public void onGenerated(Palette palette) {
- */
- /*
- * Sometimes, palette is unable to generate a color palette
- * so we need to check that we have one.
- */
- /*
- if (palette != null) {
- Log.d("onGenerated", palette.toString());
- mWatchHandAndComplicationsColor = palette.getVibrantColor(Color.WHITE);
- mWatchHandShadowColor = palette.getDarkMutedColor(Color.BLACK);
- updateWatchPaintStyles();
- }
- }
- });*/
}
/* Sets active/ambient mode colors for all complications.
@@ -355,25 +342,26 @@
* again if the user changes the highlight color via AnalogComplicationConfigActivity.
*/
private void setComplicationsActiveAndAmbientColors(int primaryComplicationColor) {
-
+ int complicationId;
ComplicationDrawable complicationDrawable;
for (int i = 0; i < COMPLICATION_IDS.length; i++) {
- complicationDrawable = mComplicationDrawableSparseArray.get(COMPLICATION_IDS[i]);
+ complicationId = COMPLICATION_IDS[i];
+ complicationDrawable = mComplicationDrawableSparseArray.get(complicationId);
- // Active mode colors.
- complicationDrawable.setBorderColorActive(primaryComplicationColor);
- complicationDrawable.setIconColorActive(primaryComplicationColor);
- complicationDrawable.setTitleColorActive(primaryComplicationColor);
- complicationDrawable.setTextColorActive(primaryComplicationColor);
- complicationDrawable.setRangedValuePrimaryColorActive(primaryComplicationColor);
+ if (complicationId == BACKGROUND_COMPLICATION_ID) {
+ // It helps for the background color to be black in case the image used for the
+ // watch face's background takes some time to load.
+ complicationDrawable.setBackgroundColorActive(Color.BLACK);
+ } else {
+ // Active mode colors.
+ complicationDrawable.setBorderColorActive(primaryComplicationColor);
+ complicationDrawable.setRangedValuePrimaryColorActive(primaryComplicationColor);
- // Ambient mode colors.
- complicationDrawable.setBorderColorAmbient(Color.WHITE);
- complicationDrawable.setIconColorAmbient(Color.WHITE);
- complicationDrawable.setTitleColorAmbient(Color.WHITE);
- complicationDrawable.setTextColorAmbient(Color.WHITE);
- complicationDrawable.setRangedValuePrimaryColorAmbient(Color.WHITE);
+ // Ambient mode colors.
+ complicationDrawable.setBorderColorAmbient(Color.WHITE);
+ complicationDrawable.setRangedValuePrimaryColorAmbient(Color.WHITE);
+ }
}
}
@@ -453,6 +441,13 @@
if ((complicationData != null)
&& (complicationData.isActive(currentTimeMillis))
+ // The line below this comment block disables taps for background
+ // complications (usually not wanted by the user).
+ // If you do want to enable this, remove the line below and reverse order
+ // of the loop so it checks the last elements (non-background complications)
+ // first. Otherwise, the background complication (since it is the size of
+ // the whole watch face) will capture all taps.
+ && (complicationData.getType() != ComplicationData.TYPE_LARGE_IMAGE)
&& (complicationData.getType() != ComplicationData.TYPE_NOT_CONFIGURED)
&& (complicationData.getType() != ComplicationData.TYPE_EMPTY)) {
@@ -536,12 +531,10 @@
ComplicationDrawable complicationDrawable;
for (int i = 0; i < COMPLICATION_IDS.length; i++) {
- complicationDrawable =
- mComplicationDrawableSparseArray.get(COMPLICATION_IDS[i]);
+ complicationDrawable = mComplicationDrawableSparseArray.get(COMPLICATION_IDS[i]);
complicationDrawable.setInAmbientMode(mAmbient);
}
-
// Check and trigger whether or not timer should be running (only in active mode).
updateTimer();
}
@@ -662,43 +655,13 @@
mComplicationDrawableSparseArray.get(RIGHT_COMPLICATION_ID);
rightComplicationDrawable.setBounds(rightBounds);
- /* Scale loaded background image (more efficient) if surface dimensions change. */
- /* TODO (jewalker): code to be reused with followup CL for complication Background image
- float scale = ((float) width) / (float) mBackgroundBitmap.getWidth();
+ Rect screenForBackgroundBound =
+ // Left, Top, Right, Bottom
+ new Rect(0, 0, width, height);
- mBackgroundBitmap = Bitmap.createScaledBitmap(mBackgroundBitmap,
- (int) (mBackgroundBitmap.getWidth() * scale),
- (int) (mBackgroundBitmap.getHeight() * scale), true);*/
-
- /*
- * Create a gray version of the image only if it will look nice on the device in
- * ambient mode. That means we don't want devices that support burn-in
- * protection (slight movements in pixels, not great for images going all the way to
- * edges) and low ambient mode (degrades image quality).
- *
- * Also, if your watch face will know about all images ahead of time (users aren't
- * selecting their own photos for the watch face), it will be more
- * efficient to create a black/white version (png, etc.) and load that when you need it.
- */
- if (!mBurnInProtection && !mLowBitAmbient) {
- initGrayBackgroundBitmap();
- }
- }
-
- private void initGrayBackgroundBitmap() {
-
- /* TODO (jewalker): code to be reused with followup CL for complication Background image
- mGrayBackgroundBitmap = Bitmap.createBitmap(
- mBackgroundBitmap.getWidth(),
- mBackgroundBitmap.getHeight(),
- Bitmap.Config.ARGB_8888);
- Canvas canvas = new Canvas(mGrayBackgroundBitmap);
- Paint grayPaint = new Paint();
- ColorMatrix colorMatrix = new ColorMatrix();
- colorMatrix.setSaturation(0);
- ColorMatrixColorFilter filter = new ColorMatrixColorFilter(colorMatrix);
- grayPaint.setColorFilter(filter);
- canvas.drawBitmap(mBackgroundBitmap, 0, 0, grayPaint);*/
+ ComplicationDrawable backgroundComplicationDrawable =
+ mComplicationDrawableSparseArray.get(BACKGROUND_COMPLICATION_ID);
+ backgroundComplicationDrawable.setBounds(screenForBackgroundBound);
}
@Override
@@ -742,13 +705,6 @@
} else {
canvas.drawColor(mBackgroundColor);
}
-
- /* TODO (jewalker): code to be reused with followup CL for complication Background image
- } else if (mAmbient) {
- canvas.drawBitmap(mGrayBackgroundBitmap, 0, 0, mBackgroundPaint);
- } else {
- canvas.drawBitmap(mBackgroundBitmap, 0, 0, mBackgroundPaint);
- }*/
}
private void drawComplications(Canvas canvas, long currentTimeMillis) {
diff --git a/wearable/wear/WatchFace/Wearable/src/main/res/layout/config_list_background_complication_item.xml b/wearable/wear/WatchFace/Wearable/src/main/res/layout/config_list_background_complication_item.xml
index 66ae58d..a21bce5 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/res/layout/config_list_background_complication_item.xml
+++ b/wearable/wear/WatchFace/Wearable/src/main/res/layout/config_list_background_complication_item.xml
@@ -18,6 +18,6 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/background_complication_button"
android:layout_width="match_parent"
- android:layout_height="match_parent"
+ android:layout_height="wrap_content"
style="@style/ButtonConfigurationStyle"
android:text="Background Complication"/>
\ No newline at end of file
diff --git a/wearable/wear/WatchFace/Wearable/src/main/res/layout/config_list_color_item.xml b/wearable/wear/WatchFace/Wearable/src/main/res/layout/config_list_color_item.xml
index 39ca4a8..718712d 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/res/layout/config_list_color_item.xml
+++ b/wearable/wear/WatchFace/Wearable/src/main/res/layout/config_list_color_item.xml
@@ -18,6 +18,6 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/color_picker_button"
android:layout_width="match_parent"
- android:layout_height="match_parent"
+ android:layout_height="wrap_content"
style="@style/ButtonConfigurationStyle"
android:text="Color"/>
\ No newline at end of file
diff --git a/wearable/wear/WatchFace/Wearable/src/main/res/layout/config_list_unread_notif_item.xml b/wearable/wear/WatchFace/Wearable/src/main/res/layout/config_list_unread_notif_item.xml
index bd02be6..efdbdbb 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/res/layout/config_list_unread_notif_item.xml
+++ b/wearable/wear/WatchFace/Wearable/src/main/res/layout/config_list_unread_notif_item.xml
@@ -18,6 +18,6 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/unread_notification_switch"
android:layout_width="match_parent"
- android:layout_height="match_parent"
+ android:layout_height="wrap_content"
style="@style/ButtonConfigurationStyle"
android:text="Notification"/>
\ No newline at end of file