diff --git a/build.gradle b/build.gradle index baeffec..46081f2 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:1.3.0' + classpath 'com.android.tools.build:gradle:2.3.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0c71e76..287f748 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Apr 10 15:27:10 PDT 2013 +#Tue Aug 08 08:49:24 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip diff --git a/library/build.gradle b/library/build.gradle index 70c42a7..a596c57 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' android { compileSdkVersion 23 - buildToolsVersion "23.0.1" + buildToolsVersion '25.0.2' defaultConfig { minSdkVersion 20 diff --git a/library/src/main/AndroidManifest.xml b/library/src/main/AndroidManifest.xml index c1256d1..3dfa170 100644 --- a/library/src/main/AndroidManifest.xml +++ b/library/src/main/AndroidManifest.xml @@ -5,12 +5,12 @@ diff --git a/library/src/main/java/preference/WearListPreference.java b/library/src/main/java/me/denley/wearpreferenceactivity/preference/WearListPreference.java similarity index 91% rename from library/src/main/java/preference/WearListPreference.java rename to library/src/main/java/me/denley/wearpreferenceactivity/preference/WearListPreference.java index 14baa5a..6dd569d 100644 --- a/library/src/main/java/preference/WearListPreference.java +++ b/library/src/main/java/me/denley/wearpreferenceactivity/preference/WearListPreference.java @@ -1,15 +1,16 @@ -package preference; +package me.denley.wearpreferenceactivity.preference;; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.TypedArray; import android.preference.PreferenceManager; +import android.support.annotation.ColorRes; import android.support.annotation.NonNull; import android.util.AttributeSet; import me.denley.wearpreferenceactivity.R; -import preference.internal.ListChooserActivity; +import me.denley.wearpreferenceactivity.preference.internal.ListChooserActivity; /** * A simple list preference type. @@ -23,6 +24,9 @@ public class WearListPreference extends WearPreference { private CharSequence[] entries, entryValues; private int[] icons; private boolean useEntryAsSummary = true; + @ColorRes + private int background; + public WearListPreference(Context context, AttributeSet attrs) { super(context, attrs); @@ -40,6 +44,7 @@ public WearListPreference(Context context, AttributeSet attrs) { TypedArray array = context.getTheme().obtainStyledAttributes(attrs, R.styleable.ListPreference, 0, 0); try { useEntryAsSummary = array.getBoolean(R.styleable.ListPreference_wear_entryAsSummary, true); + background = array.getResourceId(R.styleable.ListPreference_wear_listBackground, -1); if(array.hasValue(R.styleable.ListPreference_wear_entryIcons)) { final int resId = array.getResourceId(R.styleable.ListPreference_wear_entryIcons, 0); @@ -111,6 +116,8 @@ private CharSequence getCurrentEntry(@NonNull final Context context) { getKey(), super.getTitle(context).toString(), super.getIcon(context), + super.getTintColor(context), + background, entries, entryValues, icons, diff --git a/library/src/main/java/preference/WearPreference.java b/library/src/main/java/me/denley/wearpreferenceactivity/preference/WearPreference.java similarity index 90% rename from library/src/main/java/preference/WearPreference.java rename to library/src/main/java/me/denley/wearpreferenceactivity/preference/WearPreference.java index b06dc32..887b492 100644 --- a/library/src/main/java/preference/WearPreference.java +++ b/library/src/main/java/me/denley/wearpreferenceactivity/preference/WearPreference.java @@ -1,11 +1,11 @@ -package preference; +package me.denley.wearpreferenceactivity.preference; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.AttributeSet; -import preference.internal.WearPreferenceItem; +import me.denley.wearpreferenceactivity.preference.internal.WearPreferenceItem; /** * This is the base class for all other preference types. diff --git a/library/src/main/java/preference/WearPreferenceActivity.java b/library/src/main/java/me/denley/wearpreferenceactivity/preference/WearPreferenceActivity.java similarity index 72% rename from library/src/main/java/preference/WearPreferenceActivity.java rename to library/src/main/java/me/denley/wearpreferenceactivity/preference/WearPreferenceActivity.java index 8ea918c..37f8ca5 100644 --- a/library/src/main/java/preference/WearPreferenceActivity.java +++ b/library/src/main/java/me/denley/wearpreferenceactivity/preference/WearPreferenceActivity.java @@ -1,6 +1,7 @@ -package preference; +package me.denley.wearpreferenceactivity.preference; import android.os.Bundle; +import android.support.annotation.ColorRes; import android.support.annotation.NonNull; import android.support.annotation.XmlRes; import android.support.wearable.view.WearableListView; @@ -10,10 +11,10 @@ import java.util.List; import me.denley.wearpreferenceactivity.R; -import preference.internal.ListItemLayout; -import preference.internal.TitledWearActivity; -import preference.internal.WearPreferenceItem; -import preference.internal.WearPreferenceScreen; +import me.denley.wearpreferenceactivity.preference.internal.ListItemLayout; +import me.denley.wearpreferenceactivity.preference.internal.TitledWearActivity; +import me.denley.wearpreferenceactivity.preference.internal.WearPreferenceItem; +import me.denley.wearpreferenceactivity.preference.internal.WearPreferenceScreen; /** * An Activity that will show preferences items in a list. @@ -24,6 +25,7 @@ public abstract class WearPreferenceActivity extends TitledWearActivity { private WearableListView list; private List preferences = new ArrayList<>(); + protected WearPreferenceScreen prefsRoot; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -46,17 +48,38 @@ protected void addPreferencesFromResource(@XmlRes int prefsResId) { * @param parser A parser used to parse custom preference types */ protected void addPreferencesFromResource(@XmlRes int prefsResId, @NonNull XmlPreferenceParser parser) { - final WearPreferenceScreen prefsRoot = parser.parse(this, prefsResId); - addPreferencesFromPreferenceScreen(prefsRoot); + WearPreferenceScreen prefScr = parser.parse(this, prefsResId); + addPreferencesFromPreferenceScreen(prefScr); } /** DO NOT USE - For internal use only */ protected void addPreferencesFromPreferenceScreen(WearPreferenceScreen preferenceScreen){ + prefsRoot = preferenceScreen; addPreferences(preferenceScreen.getChildren()); } private void addPreferences(List newPreferences){ preferences = newPreferences; + setAdapter(); + } + + protected void readPreferencesFromResource(@XmlRes int prefsResId) { + XmlPreferenceParser parser = new XmlPreferenceParser(); + prefsRoot = parser.parse(this, prefsResId); + preferences = prefsRoot.getChildren(); + } + + public void setScreenBackground(@ColorRes int color) { + if(color > 0) { + getWindow().getDecorView().setBackgroundColor(getColor(color)); + } + } + + public void setAdapter() { + if (prefsRoot != null && prefsRoot.getBackground() > 0) { + setScreenBackground(prefsRoot.getBackground()); + } + list.setAdapter(new SettingsAdapter()); list.setClickListener(new WearableListView.ClickListener() { @@ -91,4 +114,7 @@ private class SettingsAdapter extends WearableListView.Adapter { } } + public List getPreferences() { + return preferences; + } } diff --git a/library/src/main/java/preference/WearTwoStatePreference.java b/library/src/main/java/me/denley/wearpreferenceactivity/preference/WearTwoStatePreference.java similarity index 98% rename from library/src/main/java/preference/WearTwoStatePreference.java rename to library/src/main/java/me/denley/wearpreferenceactivity/preference/WearTwoStatePreference.java index 411ac04..75dc55e 100644 --- a/library/src/main/java/preference/WearTwoStatePreference.java +++ b/library/src/main/java/me/denley/wearpreferenceactivity/preference/WearTwoStatePreference.java @@ -1,4 +1,4 @@ -package preference; +package me.denley.wearpreferenceactivity.preference; import android.content.Context; import android.content.SharedPreferences; diff --git a/library/src/main/java/preference/XmlPreferenceParser.java b/library/src/main/java/me/denley/wearpreferenceactivity/preference/XmlPreferenceParser.java similarity index 97% rename from library/src/main/java/preference/XmlPreferenceParser.java rename to library/src/main/java/me/denley/wearpreferenceactivity/preference/XmlPreferenceParser.java index 6fb91e8..3d3d89f 100644 --- a/library/src/main/java/preference/XmlPreferenceParser.java +++ b/library/src/main/java/me/denley/wearpreferenceactivity/preference/XmlPreferenceParser.java @@ -1,4 +1,4 @@ -package preference; +package me.denley.wearpreferenceactivity.preference; import android.content.Context; import android.content.res.XmlResourceParser; @@ -13,7 +13,7 @@ import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; -import preference.internal.WearPreferenceScreen; +import me.denley.wearpreferenceactivity.preference.internal.WearPreferenceScreen; /** * Used to parse preferences xml files into an object model. diff --git a/library/src/main/java/preference/internal/CircleSizeAnimation.java b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/CircleSizeAnimation.java similarity index 95% rename from library/src/main/java/preference/internal/CircleSizeAnimation.java rename to library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/CircleSizeAnimation.java index e58a549..eb9ce41 100644 --- a/library/src/main/java/preference/internal/CircleSizeAnimation.java +++ b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/CircleSizeAnimation.java @@ -1,4 +1,4 @@ -package preference.internal; +package me.denley.wearpreferenceactivity.preference.internal; import android.support.annotation.NonNull; import android.support.wearable.view.CircledImageView; diff --git a/library/src/main/java/preference/internal/HeadingListView.java b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/HeadingListView.java similarity index 96% rename from library/src/main/java/preference/internal/HeadingListView.java rename to library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/HeadingListView.java index 29d1376..1f87a8e 100644 --- a/library/src/main/java/preference/internal/HeadingListView.java +++ b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/HeadingListView.java @@ -1,4 +1,4 @@ -package preference.internal; +package me.denley.wearpreferenceactivity.preference.internal; import android.annotation.TargetApi; import android.content.Context; @@ -12,6 +12,7 @@ import me.denley.wearpreferenceactivity.R; + public class HeadingListView extends RelativeLayout implements WearableListView.OnScrollListener { TextView heading; @@ -44,6 +45,7 @@ public HeadingListView(final Context context, final AttributeSet attrs, final in } @Override public WindowInsets onApplyWindowInsets(final WindowInsets insets) { + heading.setTextColor(-1); if(insets.isRound()) { heading.setGravity(Gravity.CENTER_HORIZONTAL); diff --git a/library/src/main/java/preference/internal/ListChooserActivity.java b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/ListChooserActivity.java similarity index 75% rename from library/src/main/java/preference/internal/ListChooserActivity.java rename to library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/ListChooserActivity.java index ad9b4cc..7283a4d 100644 --- a/library/src/main/java/preference/internal/ListChooserActivity.java +++ b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/ListChooserActivity.java @@ -1,10 +1,11 @@ -package preference.internal; +package me.denley.wearpreferenceactivity.preference.internal; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.annotation.ColorRes; import android.support.annotation.DrawableRes; import android.support.wearable.view.WearableListView; import android.view.ViewGroup; @@ -13,8 +14,8 @@ public class ListChooserActivity extends TitledWearActivity implements WearableListView.ClickListener { - public static Intent createIntent(Context context, String key, String title, int icon, - CharSequence[] entries, CharSequence[] entryValues, + public static Intent createIntent(Context context, String key, String title, int icon, int tint, + int background, CharSequence[] entries, CharSequence[] entryValues, int[] entryIcons, int currentValue){ @@ -22,6 +23,8 @@ public static Intent createIntent(Context context, String key, String title, int launcherIntent.putExtra(EXTRA_PREF_KEY, key); launcherIntent.putExtra(EXTRA_TITLE, title); launcherIntent.putExtra(EXTRA_ICON, icon); + launcherIntent.putExtra(EXTRA_BACKGROUND, background); + launcherIntent.putExtra(EXTRA_TINT, tint); launcherIntent.putExtra(EXTRA_ENTRIES, entries); launcherIntent.putExtra(EXTRA_ENTRY_VALUES, entryValues); launcherIntent.putExtra(EXTRA_ENTRY_ICONS, entryIcons); @@ -31,7 +34,9 @@ public static Intent createIntent(Context context, String key, String title, int public static final String EXTRA_PREF_KEY = "key"; public static final String EXTRA_TITLE = "title"; + public static final String EXTRA_BACKGROUND = "background"; public static final String EXTRA_ICON = "icon"; + public static final String EXTRA_TINT = "tint"; public static final String EXTRA_ENTRIES = "entries"; public static final String EXTRA_ENTRY_VALUES = "values"; public static final String EXTRA_ENTRY_ICONS = "icons"; @@ -41,8 +46,11 @@ public static Intent createIntent(Context context, String key, String title, int String key; @DrawableRes private int icon; + @ColorRes + private int tint; CharSequence[] entries; CharSequence[] values; + @ColorRes private int background; int[] icons; @Override protected void onCreate(Bundle savedInstanceState) { @@ -52,6 +60,10 @@ public static Intent createIntent(Context context, String key, String title, int loadIntentExtras(); checkRequiredExtras(); + if(background > 0) { + getWindow().getDecorView().setBackgroundColor(getColor(background)); + } + final WearableListView list = (WearableListView) findViewById(android.R.id.list); list.setAdapter(new PreferenceEntriesAdapter()); list.scrollToPosition(getIntent().getIntExtra(EXTRA_CURRENT_VALUE, 0)); @@ -61,8 +73,9 @@ public static Intent createIntent(Context context, String key, String title, int private void loadIntentExtras(){ key = getIntent().getStringExtra(EXTRA_PREF_KEY); setTitle(getIntent().getStringExtra(EXTRA_TITLE)); + background = getIntent().getIntExtra(EXTRA_BACKGROUND, -1); icon = getIntent().getIntExtra(EXTRA_ICON, 0); - entries = getIntent().getCharSequenceArrayExtra(EXTRA_ENTRIES); + tint = getIntent().getIntExtra(EXTRA_TINT, 0); entries = getIntent().getCharSequenceArrayExtra(EXTRA_ENTRIES); values = getIntent().getCharSequenceArrayExtra(EXTRA_ENTRY_VALUES); icons = getIntent().getIntArrayExtra(EXTRA_ENTRY_ICONS); } @@ -99,8 +112,17 @@ public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int view @Override public void onBindViewHolder(WearableListView.ViewHolder holder, int position) { final ListItemLayout itemView = (ListItemLayout)holder.itemView; - itemView.bindView(icons != null ? icons[position] : icon, entries[position], null); - itemView.onNonCenterPosition(false); + if(icons != null) { + itemView.bindView(icons[position], entries[position], null, -1); + } + else { + if(tint > 0) { + itemView.bindView(icon, entries[position], null, tint); + } + else { + itemView.bindView(icon, entries[position], null, -1); + } + } itemView.onNonCenterPosition(false); } @Override public int getItemCount() { diff --git a/library/src/main/java/preference/internal/ListItemLayout.java b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/ListItemLayout.java similarity index 85% rename from library/src/main/java/preference/internal/ListItemLayout.java rename to library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/ListItemLayout.java index c8f3724..005e978 100644 --- a/library/src/main/java/preference/internal/ListItemLayout.java +++ b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/ListItemLayout.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package preference.internal; +package me.denley.wearpreferenceactivity.preference.internal; import android.annotation.TargetApi; import android.content.Context; @@ -23,6 +23,7 @@ import android.graphics.Color; import android.os.Build; import android.preference.PreferenceManager; +import android.support.annotation.ColorRes; import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -35,7 +36,8 @@ import android.widget.TextView; import me.denley.wearpreferenceactivity.R; -import preference.WearPreference; +import me.denley.wearpreferenceactivity.preference.WearPreference; + @TargetApi(Build.VERSION_CODES.KITKAT_WATCH) public class ListItemLayout extends FrameLayout implements WearableListView.OnCenterProximityListener, SharedPreferences.OnSharedPreferenceChangeListener { @@ -56,8 +58,8 @@ public class ListItemLayout extends FrameLayout implements WearableListView.OnCe @Nullable private TextView title, summary; private float circleRadiusCenter, circleRadiusNonCenter; - private int circleColorCenter = Color.TRANSPARENT; - private int circleColorNonCenter = Color.TRANSPARENT; + //private int circleColorCenter = Color.TRANSPARENT; + //private int circleColorNonCenter = Color.TRANSPARENT; private CircleSizeAnimation circleGrowAnimation = null; private CircleSizeAnimation circleShrinkAnimation = null; @@ -113,8 +115,8 @@ private void initCircle(@NonNull Context context, AttributeSet attrs, int defSty circleRadiusNonCenter = array.getDimension(R.styleable.ListItemLayout_pref_icon_circle_radius, density * CIRCLE_RADIUS_NON_CENTER_DP); final float borderWidth = array.getDimension(R.styleable.ListItemLayout_pref_icon_circle_border_width, 0); - circleColorCenter = array.getColor(R.styleable.ListItemLayout_pref_icon_circle_color_selected, Color.TRANSPARENT); - circleColorNonCenter = array.getColor(R.styleable.ListItemLayout_pref_icon_circle_color, Color.TRANSPARENT); + //circleColorCenter = array.getColor(R.styleable.ListItemLayout_pref_icon_circle_color_selected, Color.TRANSPARENT); + //circleColorNonCenter = array.getColor(R.styleable.ListItemLayout_pref_icon_circle_color, Color.TRANSPARENT); final int borderColor = array.getColor(R.styleable.ListItemLayout_pref_icon_circle_border_color, Color.TRANSPARENT); array.recycle(); @@ -123,7 +125,7 @@ private void initCircle(@NonNull Context context, AttributeSet attrs, int defSty icon.setCircleBorderWidth(borderWidth); } - icon.setCircleColor(circleColorCenter); + //icon.setCircleColor(circleColorCenter); icon.setCircleRadiusPressed(circleRadiusCenter); circleGrowAnimation = new CircleSizeAnimation(icon, circleRadiusCenter); circleShrinkAnimation = new CircleSizeAnimation(icon, circleRadiusNonCenter); @@ -146,13 +148,13 @@ public void setCircleRadiusNonCenter(float circleRadiusNonCenter) { this.circleRadiusNonCenter = circleRadiusNonCenter; } - public void setCircleColorCenter(int circleColorCenter) { + /*public void setCircleColorCenter(int circleColorCenter) { this.circleColorCenter = circleColorCenter; - } + }*/ - public void setCircleColorNonCenter(int circleColorNonCenter) { + /*public void setCircleColorNonCenter(int circleColorNonCenter) { this.circleColorNonCenter = circleColorNonCenter; - } + }*/ public void bindPreference(@NonNull final WearPreferenceItem preference){ bindedPreference = preference; @@ -167,14 +169,18 @@ public void releaseBinding(){ private void bindPreferenceView(@NonNull final WearPreferenceItem preference){ final Context context = getContext(); - bindView(preference.getIcon(context), preference.getTitle(context), preference.getSummary(context)); + bindView(preference.getIcon(context), preference.getTitle(context), preference.getSummary(context), preference.getTintColor(context)); } public void bindView(@DrawableRes final int iconId, @Nullable final CharSequence titleText, - @Nullable final CharSequence summaryText) { - if(icon !=null) { + @Nullable final CharSequence summaryText, + @ColorRes final int tintId) { + if(icon != null) { icon.setImageResource(iconId); + if (tintId > 0) { + icon.setImageTint(getResources().getColor(tintId)); + } } if(title!=null) { title.setText(titleText); @@ -190,7 +196,8 @@ public void bindView(@DrawableRes final int iconId, } @Override public void onSharedPreferenceChanged(@NonNull SharedPreferences sharedPreferences, @NonNull String key) { - if(bindedPreference instanceof WearPreference && key.equals(((WearPreference) bindedPreference).getKey())){ + //if(bindedPreference instanceof WearPreference && key.equals(((WearPreference) bindedPreference).getKey())){ + if(bindedPreference instanceof WearPreference && ((WearPreference) bindedPreference).getKey().equals(key)){ bindPreferenceView(bindedPreference); } } @@ -198,7 +205,7 @@ public void bindView(@DrawableRes final int iconId, @Override public void onCenterPosition(boolean animate) { if(icon!=null) { icon.setAlpha(1); - icon.setCircleColor(circleColorCenter); + //icon.setCircleColor(circleColorCenter); if (animate) { circleGrowAnimation.animate(); @@ -218,7 +225,7 @@ public void bindView(@DrawableRes final int iconId, @Override public void onNonCenterPosition(boolean animate) { if(icon!=null) { icon.setAlpha(ALPHA_NON_CENTER); - icon.setCircleColor(circleColorNonCenter); + //icon.setCircleColor(circleColorNonCenter); if (animate) { circleShrinkAnimation.animate(); diff --git a/library/src/main/java/preference/internal/PreferenceScreenActivity.java b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/PreferenceScreenActivity.java similarity index 82% rename from library/src/main/java/preference/internal/PreferenceScreenActivity.java rename to library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/PreferenceScreenActivity.java index 1568caf..7d1ef91 100644 --- a/library/src/main/java/preference/internal/PreferenceScreenActivity.java +++ b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/PreferenceScreenActivity.java @@ -1,8 +1,8 @@ -package preference.internal; +package me.denley.wearpreferenceactivity.preference.internal; import android.os.Bundle; -import preference.WearPreferenceActivity; +import me.denley.wearpreferenceactivity.preference.WearPreferenceActivity; public class PreferenceScreenActivity extends WearPreferenceActivity { diff --git a/library/src/main/java/preference/internal/TitledWearActivity.java b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/TitledWearActivity.java similarity index 82% rename from library/src/main/java/preference/internal/TitledWearActivity.java rename to library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/TitledWearActivity.java index 040f8a0..6e061d3 100644 --- a/library/src/main/java/preference/internal/TitledWearActivity.java +++ b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/TitledWearActivity.java @@ -1,4 +1,4 @@ -package preference.internal; +package me.denley.wearpreferenceactivity.preference.internal; import android.app.Activity; import android.os.Bundle; @@ -15,6 +15,7 @@ public abstract class TitledWearActivity extends Activity { heading = (TextView) findViewById(R.id.heading); heading.setText(getTitle()); + heading.setTextColor(-1); } @Override public void setTitle(final CharSequence title) { @@ -22,6 +23,7 @@ public abstract class TitledWearActivity extends Activity { if(heading != null) { heading.setText(title); + heading.setTextColor(-1); } } diff --git a/library/src/main/java/preference/internal/WearPreferenceItem.java b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/WearPreferenceItem.java similarity index 80% rename from library/src/main/java/preference/internal/WearPreferenceItem.java rename to library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/WearPreferenceItem.java index e4ef2ad..d236922 100644 --- a/library/src/main/java/preference/internal/WearPreferenceItem.java +++ b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/WearPreferenceItem.java @@ -1,7 +1,8 @@ -package preference.internal; +package me.denley.wearpreferenceactivity.preference.internal; import android.content.Context; import android.content.res.TypedArray; +import android.support.annotation.ColorRes; import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; import android.util.AttributeSet; @@ -18,6 +19,7 @@ public abstract class WearPreferenceItem implements Serializable { @DrawableRes private int icon; private String title; private String summary; + @ColorRes private int tintColor = -1; public WearPreferenceItem(@NonNull final Context context, @NonNull final AttributeSet attrs) { obtainAndroidAttributes(context, attrs); @@ -28,6 +30,7 @@ private void obtainAndroidAttributes(@NonNull final Context context, @NonNull fi icon = attrs.getAttributeResourceValue(NAMESPACE_ANDROID, "icon", 0); title = loadAndroidStringAttr(context, attrs, "title"); summary = loadAndroidStringAttr(context, attrs, "summary"); + tintColor = attrs.getAttributeResourceValue(NAMESPACE_ANDROID, "tint", 0); } private void obtainCustomAttributes(@NonNull final Context context, @NonNull final AttributeSet attrs) { @@ -45,6 +48,10 @@ private void obtainCustomAttributes(@NonNull final Context context, @NonNull fin summary = array.getString(R.styleable.Preference_wear_summary); } + if(array.hasValue(R.styleable.Preference_wear_tint)) { + tintColor = array.getResourceId(R.styleable.Preference_wear_tint, -1); + } + array.recycle(); } @@ -91,4 +98,23 @@ public CharSequence getSummary(@NonNull final Context context) { } -} + public int getTintColor(@NonNull final Context context) { + return tintColor; + } + + public void setIcon(int icon) { + this.icon = icon; + } + + public void setTitle(String title) { + this.title = title; + } + + public void setSummary(String summary) { + this.summary = summary; + } + + public void setTintColor(int tintColor) { + this.tintColor = tintColor; + } +} \ No newline at end of file diff --git a/library/src/main/java/preference/internal/WearPreferenceScreen.java b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/WearPreferenceScreen.java similarity index 64% rename from library/src/main/java/preference/internal/WearPreferenceScreen.java rename to library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/WearPreferenceScreen.java index 4ba12a0..da07fd5 100644 --- a/library/src/main/java/preference/internal/WearPreferenceScreen.java +++ b/library/src/main/java/me/denley/wearpreferenceactivity/preference/internal/WearPreferenceScreen.java @@ -1,7 +1,9 @@ -package preference.internal; +package me.denley.wearpreferenceactivity.preference.internal; import android.content.Context; import android.content.Intent; +import android.content.res.TypedArray; +import android.support.annotation.ColorRes; import android.support.annotation.NonNull; import android.util.AttributeSet; import android.util.Log; @@ -9,12 +11,27 @@ import java.util.ArrayList; import java.util.List; +import me.denley.wearpreferenceactivity.R; + + public class WearPreferenceScreen extends WearPreferenceItem { private final List childItems = new ArrayList<>(); + @ColorRes private int background = -1; public WearPreferenceScreen(@NonNull final Context context, @NonNull final AttributeSet attrs) { super(context, attrs); + + TypedArray array = context.getTheme().obtainStyledAttributes(attrs, R.styleable.PreferenceScreen, 0, 0); + try { + background = array.getResourceId(R.styleable.PreferenceScreen_wear_screenBackground, -1); + } finally { + array.recycle(); + } + } + + public int getBackground() { + return background; } public void addChild(WearPreferenceItem preference) { @@ -37,4 +54,4 @@ public List getChildren() { } } -} +} \ No newline at end of file diff --git a/library/src/main/res/layout/preference_item.xml b/library/src/main/res/layout/preference_item.xml index c8e50b0..fe643cb 100644 --- a/library/src/main/res/layout/preference_item.xml +++ b/library/src/main/res/layout/preference_item.xml @@ -12,10 +12,10 @@ android:id="@android:id/icon" android:layout_height="72dp" android:layout_width="72dp" - app:circle_color="@android:color/transparent" - app:circle_border_color="?android:attr/colorForeground" - app:circle_border_width="1dp" - /> + app:circle_color="@color/white" + app:image_tint="@color/dark_grey" + app:circle_radius="35dp" + app:circle_radius_pressed="35dp"/> diff --git a/library/src/main/res/layout/preference_list.xml b/library/src/main/res/layout/preference_list.xml index 5b96f49..7714358 100644 --- a/library/src/main/res/layout/preference_list.xml +++ b/library/src/main/res/layout/preference_list.xml @@ -1,9 +1,8 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml index b905559..c37e25e 100644 --- a/library/src/main/res/values/attrs.xml +++ b/library/src/main/res/values/attrs.xml @@ -5,11 +5,17 @@ + /> + + + + + diff --git a/library/src/main/res/values/colors.xml b/library/src/main/res/values/colors.xml index fb72b2b..093ef3c 100644 --- a/library/src/main/res/values/colors.xml +++ b/library/src/main/res/values/colors.xml @@ -1,6 +1,7 @@ - #404040 + #000000 + #ffffff \ No newline at end of file diff --git a/sample/build.gradle b/sample/build.gradle index 5c4d251..edd0b3b 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -3,12 +3,12 @@ apply plugin: 'com.android.application' android { compileSdkVersion 23 - buildToolsVersion "23.0.1" + buildToolsVersion '25.0.2' defaultConfig { applicationId project.GROUP_ID + '.sample' - minSdkVersion 20 - targetSdkVersion 23 + minSdkVersion 23 + targetSdkVersion 26 versionCode project.VERSION_CODE versionName project.VERSION_NAME } diff --git a/sample/src/main/java/me/denley/wearpreferenceactivity/sample/MainActivity.java b/sample/src/main/java/me/denley/wearpreferenceactivity/sample/MainActivity.java index 18dfecf..f226577 100644 --- a/sample/src/main/java/me/denley/wearpreferenceactivity/sample/MainActivity.java +++ b/sample/src/main/java/me/denley/wearpreferenceactivity/sample/MainActivity.java @@ -2,7 +2,7 @@ import android.os.Bundle; -import preference.WearPreferenceActivity; +import me.denley.wearpreferenceactivity.preference.WearPreferenceActivity; public class MainActivity extends WearPreferenceActivity {