/**
* Updates tint of a layer with the specified <var>layerId</var> of the wrapped drawable
* depends on the specified <var>stateSet</var>.
*
* @param layerId Id of the desired layer of which tint to update.
* @param stateSet State set to properly resolve tint color.
* @return {@code True} if tint has ben updated, {@code false} otherwise.
*/
private boolean updateDrawableLayerTint(int layerId, int[] stateSet) {
if ((mPrivateFlags & PFLAG_HAS_COLOR_FILTER) == 0) {
final Drawable drawable = ((LayerDrawable) mDrawable).findDrawableByLayerId(layerId);
if (drawable == null) {
return false;
}
final DrawableLayerTint layerTint = mDrawableLayerTints != null ? mDrawableLayerTints.get(layerId) : null;
if (layerTint != null && layerTint.tintList != null && layerTint.tintMode != null) {
final int tintColor = layerTint.tintList.getColorForState(stateSet, layerTint.currentTint);
if (tintColor != layerTint.currentTint || (mPrivateFlags & PFLAG_TINT_COLOR_CACHING_ENABLED) == 0) {
drawable.setColorFilter(new PorterDuffColorFilter(tintColor, layerTint.tintMode));
layerTint.currentTint = tintColor;
}
} else {
drawable.clearColorFilter();
}
return true;
}
return false;
}
TintLayerDrawable.java 文件源码
java
阅读 42
收藏 0
点赞 0
评论 0
项目:android_ui
作者:
评论列表
文章目录