am b42d72db: Clean up view tinting APIs, tileModeX/Y attribute docs

* commit 'b42d72dbd34fcf8c5ee40cce9823ff9df6b76f78':
  Clean up view tinting APIs, tileModeX/Y attribute docs
This commit is contained in:
Alan Viverette
2014-07-22 01:08:51 +00:00
committed by Android Git Automerger
11 changed files with 264 additions and 295 deletions

View File

@@ -380,6 +380,8 @@ package android {
field public static final int centerY = 16843171; // 0x10101a3
field public static final int checkBoxPreferenceStyle = 16842895; // 0x101008f
field public static final int checkMark = 16843016; // 0x1010108
field public static final int checkMarkTint = 16843949; // 0x10104ad
field public static final int checkMarkTintMode = 16843950; // 0x10104ae
field public static final int checkable = 16843237; // 0x10101e5
field public static final int checkableBehavior = 16843232; // 0x10101e0
field public static final int checkboxStyle = 16842860; // 0x101006c
@@ -37638,9 +37640,13 @@ package android.widget {
ctor public CheckedTextView(android.content.Context, android.util.AttributeSet, int);
ctor public CheckedTextView(android.content.Context, android.util.AttributeSet, int, int);
method public android.graphics.drawable.Drawable getCheckMarkDrawable();
method public android.content.res.ColorStateList getCheckMarkTint();
method public android.graphics.PorterDuff.Mode getCheckMarkTintMode();
method public boolean isChecked();
method public void setCheckMarkDrawable(int);
method public void setCheckMarkDrawable(android.graphics.drawable.Drawable);
method public void setCheckMarkTint(android.content.res.ColorStateList);
method public void setCheckMarkTintMode(android.graphics.PorterDuff.Mode);
method public void setChecked(boolean);
method public void toggle();
}

View File

@@ -15546,7 +15546,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
/**
* This function is called whenever the drawable hotspot changes.
* This function is called whenever the view hotspot changes and needs to
* be propagated to drawables managed by the view.
* <p>
* Be sure to call through to the superclass when overriding this function.
*
@@ -15887,30 +15888,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
return mBackground;
}
/**
* Applies a tint to the background drawable.
* <p>
* Subsequent calls to {@link #setBackground(Drawable)} will automatically
* mutate the drawable and apply the specified tint and tint mode using
* {@link Drawable#setTint(ColorStateList, PorterDuff.Mode)}.
*
* @param tint the tint to apply, may be {@code null} to clear tint
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
*
* @attr ref android.R.styleable#View_backgroundTint
* @attr ref android.R.styleable#View_backgroundTintMode
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
private void setBackgroundTint(@Nullable ColorStateList tint,
@Nullable PorterDuff.Mode tintMode) {
mBackgroundTint = tint;
mBackgroundTintMode = tintMode;
mHasBackgroundTint = true;
applyBackgroundTint();
}
/**
* Applies a tint to the background drawable. Does not modify the current tint
* mode, which is {@link PorterDuff.Mode#SRC_ATOP} by default.
@@ -15922,16 +15899,20 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* @param tint the tint to apply, may be {@code null} to clear tint
*
* @attr ref android.R.styleable#View_backgroundTint
* @see #setBackgroundTint(ColorStateList, PorterDuff.Mode)
* @see #getBackgroundTint()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setBackgroundTint(@Nullable ColorStateList tint) {
setBackgroundTint(tint, mBackgroundTintMode);
mBackgroundTint = tint;
mHasBackgroundTint = true;
applyBackgroundTint();
}
/**
* @return the tint applied to the background drawable
* @attr ref android.R.styleable#View_backgroundTint
* @see #setBackgroundTint(ColorStateList, PorterDuff.Mode)
* @see #setBackgroundTint(ColorStateList)
*/
@Nullable
public ColorStateList getBackgroundTint() {
@@ -15946,16 +15927,19 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
* @attr ref android.R.styleable#View_backgroundTintMode
* @see #setBackgroundTint(ColorStateList)
* @see #getBackgroundTintMode()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setBackgroundTintMode(@Nullable PorterDuff.Mode tintMode) {
setBackgroundTint(mBackgroundTint, tintMode);
mBackgroundTintMode = tintMode;
applyBackgroundTint();
}
/**
* @return the blending mode used to apply the tint to the background drawable
* @attr ref android.R.styleable#View_backgroundTintMode
* @see #setBackgroundTint(ColorStateList, PorterDuff.Mode)
* @see #setBackgroundTintMode(PorterDuff.Mode)
*/
@Nullable
public PorterDuff.Mode getBackgroundTintMode() {

View File

@@ -92,10 +92,11 @@ public abstract class AbsSeekBar extends ProgressBar {
final Drawable thumb = a.getDrawable(com.android.internal.R.styleable.SeekBar_thumb);
setThumb(thumb);
mThumbTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.SeekBar_thumbTintMode, -1), mThumbTintMode);
if (a.hasValue(R.styleable.SeekBar_thumbTint)) {
mThumbTint = a.getColorStateList(R.styleable.SeekBar_thumbTint);
mThumbTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.SeekBar_thumbTintMode, -1), mThumbTintMode);
mHasThumbTint = true;
applyThumbTint();
@@ -182,30 +183,6 @@ public abstract class AbsSeekBar extends ProgressBar {
return mThumb;
}
/**
* Applies a tint to the thumb drawable.
* <p>
* Subsequent calls to {@link #setThumb(Drawable)} will automatically
* mutate the drawable and apply the specified tint and tint mode using
* {@link Drawable#setTint(ColorStateList, PorterDuff.Mode)}.
*
* @param tint the tint to apply, may be {@code null} to clear tint
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
*
* @attr ref android.R.styleable#SeekBar_thumbTint
* @attr ref android.R.styleable#SeekBar_thumbTintMode
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
private void setThumbTint(@Nullable ColorStateList tint,
@Nullable PorterDuff.Mode tintMode) {
mThumbTint = tint;
mThumbTintMode = tintMode;
mHasThumbTint = true;
applyThumbTint();
}
/**
* Applies a tint to the thumb drawable. Does not modify the current tint
* mode, which is {@link PorterDuff.Mode#SRC_ATOP} by default.
@@ -217,16 +194,20 @@ public abstract class AbsSeekBar extends ProgressBar {
* @param tint the tint to apply, may be {@code null} to clear tint
*
* @attr ref android.R.styleable#SeekBar_thumbTint
* @see #setThumbTint(ColorStateList, PorterDuff.Mode)
* @see #getThumbTint()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setThumbTint(@Nullable ColorStateList tint) {
setThumbTint(tint, mThumbTintMode);
mThumbTint = tint;
mHasThumbTint = true;
applyThumbTint();
}
/**
* @return the tint applied to the thumb drawable
* @attr ref android.R.styleable#SeekBar_thumbTint
* @see #setThumbTint(ColorStateList, PorterDuff.Mode)
* @see #setThumbTint(ColorStateList)
*/
@Nullable
public ColorStateList getThumbTint() {
@@ -240,17 +221,21 @@ public abstract class AbsSeekBar extends ProgressBar {
*
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
*
* @attr ref android.R.styleable#SeekBar_thumbTintMode
* @see #setThumbTint(ColorStateList)
* @see #getThumbTintMode()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setThumbTintMode(@Nullable PorterDuff.Mode tintMode) {
setThumbTint(mThumbTint, tintMode);
mThumbTintMode = tintMode;
applyThumbTint();
}
/**
* @return the blending mode used to apply the tint to the thumb drawable
* @attr ref android.R.styleable#SeekBar_thumbTintMode
* @see #setThumbTint(ColorStateList, PorterDuff.Mode)
* @see #setThumbTintMode(PorterDuff.Mode)
*/
@Nullable
public PorterDuff.Mode getThumbTintMode() {

View File

@@ -18,9 +18,12 @@ package android.widget;
import com.android.internal.R;
import android.annotation.Nullable;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.Gravity;
@@ -41,8 +44,13 @@ import android.view.accessibility.AccessibilityNodeInfo;
*/
public class CheckedTextView extends TextView implements Checkable {
private boolean mChecked;
private int mCheckMarkResource;
private Drawable mCheckMarkDrawable;
private ColorStateList mCheckMarkTint = null;
private PorterDuff.Mode mCheckMarkTintMode = PorterDuff.Mode.SRC_ATOP;
private boolean mHasCheckMarkTint = false;
private int mBasePadding;
private int mCheckMarkWidth;
private boolean mNeedRequestlayout;
@@ -74,6 +82,16 @@ public class CheckedTextView extends TextView implements Checkable {
setCheckMarkDrawable(d);
}
mCheckMarkTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.CompoundButton_buttonTintMode, -1), mCheckMarkTintMode);
if (a.hasValue(R.styleable.CompoundButton_buttonTint)) {
mCheckMarkTint = a.getColorStateList(R.styleable.CompoundButton_buttonTint);
mHasCheckMarkTint = true;
applyCheckMarkTint();
}
boolean checked = a.getBoolean(R.styleable.CheckedTextView_checked, false);
setChecked(checked);
@@ -153,6 +171,7 @@ public class CheckedTextView extends TextView implements Checkable {
mCheckMarkWidth = d.getIntrinsicWidth();
d.setState(getDrawableState());
applyCheckMarkTint();
} else {
mCheckMarkWidth = 0;
}
@@ -163,6 +182,72 @@ public class CheckedTextView extends TextView implements Checkable {
resolvePadding();
}
/**
* Applies a tint to the check mark drawable. Does not modify the
* current tint mode, which is {@link PorterDuff.Mode#SRC_ATOP} by default.
* <p>
* Subsequent calls to {@link #setCheckMarkDrawable(Drawable)} will
* automatically mutate the drawable and apply the specified tint and
* tint mode using
* {@link Drawable#setTint(ColorStateList, PorterDuff.Mode)}.
*
* @param tint the tint to apply, may be {@code null} to clear tint
*
* @attr ref android.R.styleable#CheckedTextView_checkMarkTint
* @see #getCheckMarkTint()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setCheckMarkTint(@Nullable ColorStateList tint) {
mCheckMarkTint = tint;
mHasCheckMarkTint = true;
applyCheckMarkTint();
}
/**
* @return the tint applied to the check mark drawable
* @attr ref android.R.styleable#CheckedTextView_checkMarkTint
* @see #setCheckMarkTint(ColorStateList)
*/
@Nullable
public ColorStateList getCheckMarkTint() {
return mCheckMarkTint;
}
/**
* Specifies the blending mode used to apply the tint specified by
* {@link #setCheckMarkTint(ColorStateList)} to the check mark
* drawable. The default mode is {@link PorterDuff.Mode#SRC_ATOP}.
*
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
* @attr ref android.R.styleable#CheckedTextView_checkMarkTintMode
* @see #setCheckMarkTint(ColorStateList)
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setCheckMarkTintMode(@Nullable PorterDuff.Mode tintMode) {
mCheckMarkTintMode = tintMode;
applyCheckMarkTint();
}
/**
* @return the blending mode used to apply the tint to the check mark drawable
* @attr ref android.R.styleable#CheckedTextView_checkMarkTintMode
* @see #setCheckMarkTintMode(PorterDuff.Mode)
*/
@Nullable
public PorterDuff.Mode getCheckMarkTintMode() {
return mCheckMarkTintMode;
}
private void applyCheckMarkTint() {
if (mCheckMarkDrawable != null && mHasCheckMarkTint) {
mCheckMarkDrawable = mCheckMarkDrawable.mutate();
mCheckMarkDrawable.setTint(mCheckMarkTint, mCheckMarkTintMode);
}
}
@RemotableViewMethod
@Override
public void setVisibility(int visibility) {

View File

@@ -87,10 +87,11 @@ public abstract class CompoundButton extends Button implements Checkable {
setButtonDrawable(d);
}
mButtonTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.CompoundButton_buttonTintMode, -1), mButtonTintMode);
if (a.hasValue(R.styleable.CompoundButton_buttonTint)) {
mButtonTint = a.getColorStateList(R.styleable.CompoundButton_buttonTint);
mButtonTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.CompoundButton_buttonTintMode, -1), mButtonTintMode);
mHasButtonTint = true;
applyButtonTint();
@@ -237,31 +238,6 @@ public abstract class CompoundButton extends Button implements Checkable {
}
}
/**
* Applies a tint to the button drawable.
* <p>
* Subsequent calls to {@link #setButtonDrawable(Drawable)} will
* automatically mutate the drawable and apply the specified tint and tint
* mode using
* {@link Drawable#setTint(ColorStateList, android.graphics.PorterDuff.Mode)}.
*
* @param tint the tint to apply, may be {@code null} to clear tint
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
*
* @attr ref android.R.styleable#CompoundButton_buttonTint
* @attr ref android.R.styleable#CompoundButton_buttonTintMode
* @see Drawable#setTint(ColorStateList, android.graphics.PorterDuff.Mode)
*/
private void setButtonTint(@Nullable ColorStateList tint,
@Nullable PorterDuff.Mode tintMode) {
mButtonTint = tint;
mButtonTintMode = tintMode;
mHasButtonTint = true;
applyButtonTint();
}
/**
* Applies a tint to the button drawable. Does not modify the current tint
* mode, which is {@link PorterDuff.Mode#SRC_ATOP} by default.
@@ -269,21 +245,25 @@ public abstract class CompoundButton extends Button implements Checkable {
* Subsequent calls to {@link #setButtonDrawable(Drawable)} will
* automatically mutate the drawable and apply the specified tint and tint
* mode using
* {@link Drawable#setTint(ColorStateList, android.graphics.PorterDuff.Mode)}.
* {@link Drawable#setTint(ColorStateList, PorterDuff.Mode)}.
*
* @param tint the tint to apply, may be {@code null} to clear tint
*
* @attr ref android.R.styleable#CompoundButton_buttonTint
* @see #setButtonTint(ColorStateList, android.graphics.PorterDuff.Mode)
* @see #setButtonTint(ColorStateList)
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setButtonTint(@Nullable ColorStateList tint) {
setButtonTint(tint, mButtonTintMode);
mButtonTint = tint;
mHasButtonTint = true;
applyButtonTint();
}
/**
* @return the tint applied to the button drawable
* @attr ref android.R.styleable#CompoundButton_buttonTint
* @see #setButtonTint(ColorStateList, PorterDuff.Mode)
* @see #setButtonTint(ColorStateList)
*/
@Nullable
public ColorStateList getButtonTint() {
@@ -298,16 +278,19 @@ public abstract class CompoundButton extends Button implements Checkable {
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
* @attr ref android.R.styleable#CompoundButton_buttonTintMode
* @see #setButtonTint(ColorStateList)
* @see #getButtonTintMode()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setButtonTintMode(@Nullable PorterDuff.Mode tintMode) {
setButtonTint(mButtonTint, tintMode);
mButtonTintMode = tintMode;
applyButtonTint();
}
/**
* @return the blending mode used to apply the tint to the button drawable
* @attr ref android.R.styleable#CompoundButton_buttonTintMode
* @see #setButtonTint(ColorStateList, PorterDuff.Mode)
* @see #setButtonTintMode(PorterDuff.Mode)
*/
@Nullable
public PorterDuff.Mode getButtonTintMode() {

View File

@@ -127,10 +127,11 @@ public class FrameLayout extends ViewGroup {
setMeasureAllChildren(true);
}
mForegroundTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.FrameLayout_foregroundTintMode, -1), mForegroundTintMode);
if (a.hasValue(R.styleable.FrameLayout_foregroundTint)) {
mForegroundTint = a.getColorStateList(R.styleable.FrameLayout_foregroundTint);
mForegroundTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.FrameLayout_foregroundTintMode, -1), mForegroundTintMode);
mHasForegroundTint = true;
applyForegroundTint();
@@ -316,11 +317,6 @@ public class FrameLayout extends ViewGroup {
*/
private void setForegroundTint(@Nullable ColorStateList tint,
@Nullable PorterDuff.Mode tintMode) {
mForegroundTint = tint;
mForegroundTintMode = tintMode;
mHasForegroundTint = true;
applyForegroundTint();
}
/**
@@ -334,16 +330,20 @@ public class FrameLayout extends ViewGroup {
* @param tint the tint to apply, may be {@code null} to clear tint
*
* @attr ref android.R.styleable#FrameLayout_foregroundTint
* @see #setForegroundTint(ColorStateList, PorterDuff.Mode)
* @see #getForegroundTint()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setForegroundTint(@Nullable ColorStateList tint) {
setForegroundTint(tint, mForegroundTintMode);
mForegroundTint = tint;
mHasForegroundTint = true;
applyForegroundTint();
}
/**
* @return the tint applied to the foreground drawable
* @attr ref android.R.styleable#FrameLayout_foregroundTint
* @see #setForegroundTint(ColorStateList, PorterDuff.Mode)
* @see #setForegroundTint(ColorStateList)
*/
@Nullable
public ColorStateList getForegroundTint() {
@@ -358,17 +358,20 @@ public class FrameLayout extends ViewGroup {
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
* @attr ref android.R.styleable#FrameLayout_foregroundTintMode
* @see #setForegroundTint(ColorStateList)
* @see #getForegroundTintMode()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setForegroundTintMode(@Nullable PorterDuff.Mode tintMode) {
setForegroundTint(mForegroundTint, tintMode);
mForegroundTintMode = tintMode;
applyForegroundTint();
}
/**
* @return the blending mode used to apply the tint to the foreground
* drawable
* @attr ref android.R.styleable#FrameLayout_foregroundTintMode
* @see #setForegroundTint(ColorStateList, PorterDuff.Mode)
* @see #setForegroundTintMode(PorterDuff.Mode)
*/
@Nullable
public PorterDuff.Mode getForegroundTintMode() {

View File

@@ -168,10 +168,11 @@ public class ImageView extends View {
setScaleType(sScaleTypeArray[index]);
}
mDrawableTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.ImageView_tintMode, -1), mDrawableTintMode);
if (a.hasValue(R.styleable.ImageView_tint)) {
mDrawableTint = a.getColorStateList(R.styleable.ImageView_tint);
mDrawableTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.ImageView_tintMode, -1), mDrawableTintMode);
mHasDrawableTint = true;
applyDrawableTint();
@@ -447,30 +448,6 @@ public class ImageView extends View {
}
}
/**
* Applies a tint to the image drawable.
* <p>
* Subsequent calls to {@link #setImageDrawable(Drawable)} will automatically
* mutate the drawable and apply the specified tint and tint mode using
* {@link Drawable#setTint(ColorStateList, PorterDuff.Mode)}.
*
* @param tint the tint to apply, may be {@code null} to clear tint
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
*
* @attr ref android.R.styleable#ImageView_tint
* @attr ref android.R.styleable#ImageView_tintMode
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
private void setTint(@Nullable ColorStateList tint,
@Nullable PorterDuff.Mode tintMode) {
mDrawableTint = tint;
mDrawableTintMode = tintMode;
mHasDrawableTint = true;
applyDrawableTint();
}
/**
* Applies a tint to the image drawable. Does not modify the current tint
* mode, which is {@link PorterDuff.Mode#SRC_ATOP} by default.
@@ -482,16 +459,20 @@ public class ImageView extends View {
* @param tint the tint to apply, may be {@code null} to clear tint
*
* @attr ref android.R.styleable#ImageView_tint
* @see #getTint()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setTint(@Nullable ColorStateList tint) {
setTint(tint, mDrawableTintMode);
mDrawableTint = tint;
mHasDrawableTint = true;
applyDrawableTint();
}
/**
* @return the tint applied to the image drawable
* @attr ref android.R.styleable#ImageView_tint
* @see #setTint(ColorStateList, PorterDuff.Mode)
* @see #setTint(ColorStateList)
*/
@Nullable
public ColorStateList getTint() {
@@ -506,16 +487,19 @@ public class ImageView extends View {
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
* @attr ref android.R.styleable#ImageView_tintMode
* @see #setTint(ColorStateList)
* @see #getTintMode()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setTintMode(@Nullable PorterDuff.Mode tintMode) {
setTint(mDrawableTint, tintMode);
mDrawableTintMode = tintMode;
applyDrawableTint();
}
/**
* @return the blending mode used to apply the tint to the image drawable
* @attr ref android.R.styleable#ImageView_tintMode
* @see #setTint(ColorStateList, PorterDuff.Mode)
* @see #setTintMode(PorterDuff.Mode)
*/
@Nullable
public PorterDuff.Mode getTintMode() {

View File

@@ -326,48 +326,48 @@ public class ProgressBar extends View {
mMirrorForRtl = a.getBoolean(R.styleable.ProgressBar_mirrorForRtl, mMirrorForRtl);
mProgressTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.ProgressBar_progressBackgroundTintMode, -1), mProgressTintMode);
if (a.hasValue(R.styleable.ProgressBar_progressTint)) {
mProgressTint = a.getColorStateList(
R.styleable.ProgressBar_progressTint);
mProgressTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.ProgressBar_progressBackgroundTintMode, -1),
mProgressTintMode);
mHasProgressTint = true;
applyProgressLayerTint(R.id.progress, mProgressTint,
mProgressTintMode, true);
}
mProgressBackgroundTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.ProgressBar_progressTintMode, -1), mProgressBackgroundTintMode);
if (a.hasValue(R.styleable.ProgressBar_progressBackgroundTint)) {
mProgressBackgroundTint = a.getColorStateList(
R.styleable.ProgressBar_progressBackgroundTint);
mProgressBackgroundTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.ProgressBar_progressTintMode, -1),
mProgressBackgroundTintMode);
mHasProgressBackgroundTint = true;
applyProgressLayerTint(R.id.background, mProgressBackgroundTint,
mProgressBackgroundTintMode, false);
}
mSecondaryProgressTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.ProgressBar_secondaryProgressTintMode, -1), mSecondaryProgressTintMode);
if (a.hasValue(R.styleable.ProgressBar_secondaryProgressTint)) {
mSecondaryProgressTint = a.getColorStateList(
R.styleable.ProgressBar_secondaryProgressTint);
mSecondaryProgressTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.ProgressBar_secondaryProgressTintMode, -1),
mSecondaryProgressTintMode);
mHasSecondaryProgressTint = true;
applyProgressLayerTint(R.id.secondaryProgress, mSecondaryProgressTint,
mSecondaryProgressTintMode, false);
}
mIndeterminateTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.ProgressBar_indeterminateTintMode, -1), mIndeterminateTintMode);
if (a.hasValue(R.styleable.ProgressBar_indeterminateTint)) {
mIndeterminateTint = a.getColorStateList(
R.styleable.ProgressBar_indeterminateTint);
mIndeterminateTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.ProgressBar_indeterminateTintMode, -1),
mIndeterminateTintMode);
mHasIndeterminateTint = true;
applyIndeterminateTint();
@@ -573,31 +573,6 @@ public class ProgressBar extends View {
}
}
/**
* Applies a tint to the indeterminate drawable.
* <p>
* Subsequent calls to {@link #setVisibilminateDrawable(Drawable)} will
* automatically mutate the drawable and apply the specified tint and
* tint mode using
* {@link Drawable#setTint(ColorStateList, android.graphics.PorterDuff.Mode)}.
*
* @param tint the tint to apply, may be {@code null} to clear tint
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
*
* @attr ref android.R.styleable#ProgressBar_indeterminateTint
* @attr ref android.R.styleable#ProgressBar_indeterminateTintMode
* @see Drawable#setTint(ColorStateList, android.graphics.PorterDuff.Mode)
*/
private void setIndeterminateTint(@Nullable ColorStateList tint,
@Nullable PorterDuff.Mode tintMode) {
mIndeterminateTint = tint;
mIndeterminateTintMode = tintMode;
mHasIndeterminateTint = true;
applyIndeterminateTint();
}
/**
* Applies a tint to the indeterminate drawable. Does not modify the
* current tint mode, which is {@link PorterDuff.Mode#SRC_ATOP} by default.
@@ -610,16 +585,20 @@ public class ProgressBar extends View {
* @param tint the tint to apply, may be {@code null} to clear tint
*
* @attr ref android.R.styleable#ProgressBar_indeterminateTint
* @see #setIndeterminateTint(ColorStateList, PorterDuff.Mode)
* @see #getIndeterminateTint()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setIndeterminateTint(@Nullable ColorStateList tint) {
setIndeterminateTint(tint, mIndeterminateTintMode);
mIndeterminateTint = tint;
mHasIndeterminateTint = true;
applyIndeterminateTint();
}
/**
* @return the tint applied to the indeterminate drawable
* @attr ref android.R.styleable#ProgressBar_indeterminateTint
* @see #setIndeterminateTint(ColorStateList, PorterDuff.Mode)
* @see #setIndeterminateTint(ColorStateList)
*/
@Nullable
public ColorStateList getIndeterminateTint() {
@@ -635,15 +614,18 @@ public class ProgressBar extends View {
* {@code null} to clear tint
* @attr ref android.R.styleable#ProgressBar_indeterminateTintMode
* @see #setIndeterminateTint(ColorStateList)
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setIndeterminateTintMode(@Nullable PorterDuff.Mode tintMode) {
setIndeterminateTint(mIndeterminateTint, tintMode);
mIndeterminateTintMode = tintMode;
applyIndeterminateTint();
}
/**
* @return the blending mode used to apply the tint to the indeterminate drawable
* @attr ref android.R.styleable#ProgressBar_indeterminateTintMode
* @see #setIndeterminateTint(ColorStateList, PorterDuff.Mode)
* @see #setIndeterminateTintMode(PorterDuff.Mode)
*/
@Nullable
public PorterDuff.Mode getIndeterminateTintMode() {
@@ -747,36 +729,6 @@ public class ProgressBar extends View {
}
}
/**
* Applies a tint to the progress indicator, if one exists, or to the
* entire progress drawable otherwise.
* <p>
* The progress indicator should be specified as a layer with
* id {@link android.R.id#progress} in a {@link LayerDrawable}
* used as the progress drawable.
* <p>
* Subsequent calls to {@link #setProgressDrawable(Drawable)} will
* automatically mutate the drawable and apply the specified tint and
* tint mode using
* {@link Drawable#setTint(ColorStateList, android.graphics.PorterDuff.Mode)}.
*
* @param tint the tint to apply, may be {@code null} to clear tint
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
*
* @attr ref android.R.styleable#ProgressBar_progressTint
* @attr ref android.R.styleable#ProgressBar_progressTintMode
* @see Drawable#setTint(ColorStateList, android.graphics.PorterDuff.Mode)
*/
private void setProgressTint(@Nullable ColorStateList tint,
@Nullable PorterDuff.Mode tintMode) {
mProgressTint = tint;
mProgressTintMode = tintMode;
mHasProgressTint = true;
applyProgressLayerTint(R.id.progress, tint, tintMode, true);
}
/**
* Applies a tint to the progress indicator, if one exists, or to the
* entire progress drawable otherwise. Does not modify the current tint
@@ -794,16 +746,20 @@ public class ProgressBar extends View {
* @param tint the tint to apply, may be {@code null} to clear tint
*
* @attr ref android.R.styleable#ProgressBar_progressTint
* @see #setProgressTint(ColorStateList)
* @see #getProgressTint()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setProgressTint(@Nullable ColorStateList tint) {
setProgressTint(tint, mProgressTintMode);
mProgressTint = tint;
mHasProgressTint = true;
applyProgressLayerTint(R.id.progress, tint, mProgressTintMode, true);
}
/**
* @return the tint applied to the progress drawable
* @attr ref android.R.styleable#ProgressBar_progressTint
* @see #setProgressTint(ColorStateList, PorterDuff.Mode)
* @see #setProgressTint(ColorStateList)
*/
@Nullable
public ColorStateList getProgressTint() {
@@ -818,51 +774,25 @@ public class ProgressBar extends View {
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
* @attr ref android.R.styleable#ProgressBar_progressTintMode
* @see #setProgressTint(ColorStateList)
* @see #getProgressTintMode()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setProgressTintMode(@Nullable PorterDuff.Mode tintMode) {
setProgressTint(mProgressTint, tintMode);
mProgressTintMode = tintMode;
applyProgressLayerTint(R.id.progress, mProgressTint, tintMode, true);
}
/**
* @return the blending mode used to apply the tint to the progress drawable
* @attr ref android.R.styleable#ProgressBar_progressTintMode
* @see #setProgressTint(ColorStateList, PorterDuff.Mode)
* @see #setProgressTintMode(PorterDuff.Mode)
*/
@Nullable
public PorterDuff.Mode getProgressTintMode() {
return mProgressTintMode;
}
/**
* Applies a tint to the progress background, if one exists.
* <p>
* The progress background must be specified as a layer with
* id {@link android.R.id#background} in a {@link LayerDrawable}
* used as the progress drawable.
* <p>
* Subsequent calls to {@link #setProgressDrawable(Drawable)} where the
* drawable contains a progress background will automatically mutate the
* drawable and apply the specified tint and tint mode using
* {@link Drawable#setTint(ColorStateList, android.graphics.PorterDuff.Mode)}.
*
* @param tint the tint to apply, may be {@code null} to clear tint
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
*
* @attr ref android.R.styleable#ProgressBar_progressBackgroundTint
* @attr ref android.R.styleable#ProgressBar_progressBackgroundTintMode
* @see Drawable#setTint(ColorStateList, android.graphics.PorterDuff.Mode)
*/
private void setProgressBackgroundTint(@Nullable ColorStateList tint,
@Nullable PorterDuff.Mode tintMode) {
mProgressBackgroundTint = tint;
mProgressBackgroundTintMode = tintMode;
mHasProgressBackgroundTint = true;
applyProgressLayerTint(R.id.background, tint, tintMode, false);
}
/**
* Applies a tint to the progress background, if one exists. Does not
* modify the current tint mode, which is
@@ -880,16 +810,20 @@ public class ProgressBar extends View {
* @param tint the tint to apply, may be {@code null} to clear tint
*
* @attr ref android.R.styleable#ProgressBar_progressBackgroundTint
* @see #setProgressBackgroundTint(ColorStateList, PorterDuff.Mode)
* @see #getProgressBackgroundTint()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setProgressBackgroundTint(@Nullable ColorStateList tint) {
setProgressBackgroundTint(tint, mProgressBackgroundTintMode);
mProgressBackgroundTint = tint;
mHasProgressBackgroundTint = true;
applyProgressLayerTint(R.id.background, tint, mProgressBackgroundTintMode, false);
}
/**
* @return the tint applied to the progress background
* @attr ref android.R.styleable#ProgressBar_progressBackgroundTint
* @see #setProgressBackgroundTint(ColorStateList, PorterDuff.Mode)
* @see #setProgressBackgroundTint(ColorStateList)
*/
@Nullable
public ColorStateList getProgressBackgroundTint() {
@@ -905,51 +839,25 @@ public class ProgressBar extends View {
* {@code null} to clear tint
* @attr ref android.R.styleable#ProgressBar_progressBackgroundTintMode
* @see #setProgressBackgroundTint(ColorStateList)
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setProgressBackgroundTintMode(@Nullable PorterDuff.Mode tintMode) {
setProgressBackgroundTint(mProgressBackgroundTint, tintMode);
mProgressBackgroundTintMode = tintMode;
applyProgressLayerTint(R.id.background, mProgressBackgroundTint, tintMode, false);
}
/**
* @return the blending mode used to apply the tint to the progress
* background
* @attr ref android.R.styleable#ProgressBar_progressBackgroundTintMode
* @see #setProgressBackgroundTint(ColorStateList, PorterDuff.Mode)
* @see #setProgressBackgroundTintMode(PorterDuff.Mode)
*/
@Nullable
public PorterDuff.Mode getProgressBackgroundTintMode() {
return mProgressBackgroundTintMode;
}
/**
* Applies a tint to the secondary progress indicator, if one exists.
* <p>
* The secondary progress indicator must be specified as a layer with
* id {@link android.R.id#secondaryProgress} in a {@link LayerDrawable}
* used as the progress drawable.
* <p>
* Subsequent calls to {@link #setProgressDrawable(Drawable)} where the
* drawable contains a secondary progress indicator will automatically
* mutate the drawable and apply the specified tint and tint mode using
* {@link Drawable#setTint(ColorStateList, android.graphics.PorterDuff.Mode)}.
*
* @param tint the tint to apply, may be {@code null} to clear tint
* @param tintMode the blending mode used to apply the tint, may be
* {@code null} to clear tint
*
* @attr ref android.R.styleable#ProgressBar_secondaryProgressTint
* @attr ref android.R.styleable#ProgressBar_secondaryProgressTintMode
* @see Drawable#setTint(ColorStateList, android.graphics.PorterDuff.Mode)
*/
private void setSecondaryProgressTint(@Nullable ColorStateList tint,
@Nullable PorterDuff.Mode tintMode) {
mSecondaryProgressTint = tint;
mSecondaryProgressTintMode = tintMode;
mHasSecondaryProgressTint = true;
applyProgressLayerTint(R.id.secondaryProgress, tint, tintMode, false);
}
/**
* Applies a tint to the secondary progress indicator, if one exists.
* Does not modify the current tint mode, which is
@@ -967,16 +875,20 @@ public class ProgressBar extends View {
* @param tint the tint to apply, may be {@code null} to clear tint
*
* @attr ref android.R.styleable#ProgressBar_secondaryProgressTint
* @see #setSecondaryProgressTint(ColorStateList, PorterDuff.Mode)
* @see #getSecondaryProgressTint()
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setSecondaryProgressTint(@Nullable ColorStateList tint) {
setSecondaryProgressTint(tint, mSecondaryProgressTintMode);
mSecondaryProgressTint = tint;
mHasSecondaryProgressTint = true;
applyProgressLayerTint(R.id.secondaryProgress, tint, mSecondaryProgressTintMode, false);
}
/**
* @return the tint applied to the secondary progress drawable
* @attr ref android.R.styleable#ProgressBar_secondaryProgressTint
* @see #setSecondaryProgressTint(ColorStateList, PorterDuff.Mode)
* @see #setSecondaryProgressTint(ColorStateList)
*/
@Nullable
public ColorStateList getSecondaryProgressTint() {
@@ -993,16 +905,19 @@ public class ProgressBar extends View {
* {@code null} to clear tint
* @attr ref android.R.styleable#ProgressBar_secondaryProgressTintMode
* @see #setSecondaryProgressTint(ColorStateList)
* @see Drawable#setTint(ColorStateList, PorterDuff.Mode)
*/
public void setSecondaryProgressTintMode(@Nullable PorterDuff.Mode tintMode) {
setSecondaryProgressTint(mSecondaryProgressTint, tintMode);
mSecondaryProgressTintMode = tintMode;
applyProgressLayerTint(R.id.secondaryProgress, mSecondaryProgressTint, tintMode, false);
}
/**
* @return the blending mode used to apply the tint to the secondary
* progress drawable
* @attr ref android.R.styleable#ProgressBar_secondaryProgressTintMode
* @see #setSecondaryProgressTint(ColorStateList, PorterDuff.Mode)
* @see #setSecondaryProgressTintMode(PorterDuff.Mode)
*/
@Nullable
public PorterDuff.Mode getSecondaryProgressTintMode() {

View File

@@ -3114,6 +3114,28 @@
<attr name="checked" />
<!-- Drawable used for the check mark graphic. -->
<attr name="checkMark" format="reference"/>
<!-- Tint to apply to the check mark. -->
<attr name="checkMarkTint" format="color" />
<!-- Blending mode used to apply the check mark tint. -->
<attr name="checkMarkTintMode">
<!-- The tint is drawn on top of the drawable.
[Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
<enum name="src_over" value="3" />
<!-- The tint is masked by the alpha channel of the drawable. The drawable’s
color channels are thrown out. [Sa * Da, Sc * Da] -->
<enum name="src_in" value="5" />
<!-- The tint is drawn above the drawable, but with the drawable’s alpha
channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
<enum name="src_atop" value="9" />
<!-- Multiplies the color and alpha channels of the drawable with those of
the tint. [Sa * Da, Sc * Dc] -->
<enum name="multiply" value="14" />
<!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
<enum name="screen" value="15" />
<!-- Combines the tint and drawable color and alpha channels, clamping the
result to valid color values. Saturate(S + D) -->
<enum name="add" value="16" />
</attr>
</declare-styleable>
<declare-styleable name="EditText">
</declare-styleable>
@@ -3579,7 +3601,7 @@
result to valid color values. Saturate(S + D) -->
<enum name="add" value="16" />
</attr>
<!-- Tint to apply to the indepterminate progress indicator. -->
<!-- Tint to apply to the indeterminate progress indicator. -->
<attr name="indeterminateTint" format="color" />
<!-- Blending mode used to apply the indeterminate progress indicator tint. -->
<attr name="indeterminateTintMode">
@@ -4887,9 +4909,9 @@
<enum name="disabled" value="-1" />
<!-- Replicates the edge color. -->
<enum name="clamp" value="0" />
<!-- Repeats the bitmap in both direction. -->
<!-- Repeats the bitmap horizontally. -->
<enum name="repeat" value="1" />
<!-- Repeats the shader's image horizontally and vertically, alternating
<!-- Repeats the shader's image horizontally, alternating
mirror images so that adjacent images always seam. -->
<enum name="mirror" value="2" />
</attr>
@@ -4900,9 +4922,9 @@
<enum name="disabled" value="-1" />
<!-- Replicates the edge color. -->
<enum name="clamp" value="0" />
<!-- Repeats the bitmap in both direction. -->
<!-- Repeats the bitmap vertically. -->
<enum name="repeat" value="1" />
<!-- Repeats the shader's image horizontally and vertically, alternating
<!-- Repeats the shader's image vertically, alternating
mirror images so that adjacent images always seam. -->
<enum name="mirror" value="2" />
</attr>

View File

@@ -2240,7 +2240,7 @@
<public type="attr" name="launchTaskBehindSourceAnimation" />
<!-- Attribute specified in a restriction entry to denote the type of restriction. -->
<public type="attr" name="restrictionType" />
<!-- For the DatePicker -->
<public type="attr" name="dateSelectorDayOfWeekBackgroundColor" />
<public type="attr" name="dateSelectorDayOfWeekTextAppearance" />
<public type="attr" name="dateSelectorBackgroundColor" />
@@ -2251,7 +2251,6 @@
<public type="attr" name="dateSelectorYearListSelectedCircleColor" />
<public type="attr" name="calendarTextColor" />
<public type="attr" name="recognitionService" />
<!-- For the TimePicker -->
<public type="attr" name="timePickerStyle" />
<public type="attr" name="timePickerDialogTheme" />
@@ -2265,8 +2264,9 @@
<public type="attr" name="amPmTextColor" />
<public type="attr" name="amPmUnselectedBackgroundColor" />
<public type="attr" name="amPmSelectedBackgroundColor" />
<public type="attr" name="searchKeyphraseRecognitionFlags" />
<public type="attr" name="checkMarkTint" />
<public type="attr" name="checkMarkTintMode" />
<public-padding type="dimen" name="l_resource_pad" end="0x01050010" />

View File

@@ -386,6 +386,7 @@ public class BitmapDrawable extends Drawable {
*
* @see #setTileModeY(android.graphics.Shader.TileMode)
* @see #setTileModeXY(android.graphics.Shader.TileMode, android.graphics.Shader.TileMode)
* @attr ref android.R.styleable#BitmapDrawable_tileModeX
*/
public void setTileModeX(Shader.TileMode mode) {
setTileModeXY(mode, mBitmapState.mTileModeY);
@@ -401,6 +402,7 @@ public class BitmapDrawable extends Drawable {
*
* @see #setTileModeX(android.graphics.Shader.TileMode)
* @see #setTileModeXY(android.graphics.Shader.TileMode, android.graphics.Shader.TileMode)
* @attr ref android.R.styleable#BitmapDrawable_tileModeY
*/
public final void setTileModeY(Shader.TileMode mode) {
setTileModeXY(mBitmapState.mTileModeX, mode);