「Update」
1、增加isUseSkin属性,来针对性的开启换肤,防止大面积误伤其它View。原因是很多数据、图片都是动态设置的。会把设置的数据冲掉;
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
package com.mogo.skin;
|
||||
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.mogo.skin.utils.SkinThemeUtils;
|
||||
|
||||
@@ -30,6 +30,8 @@ public class SkinAttribute {
|
||||
|
||||
mAttributes.add("skinTypeface");
|
||||
|
||||
mAttributes.add("isUseSkin");
|
||||
|
||||
mAttributes.add("text");
|
||||
mAttributes.add("hint");
|
||||
}
|
||||
@@ -48,14 +50,18 @@ public class SkinAttribute {
|
||||
* 记录View中哪几个属性需要换肤,找到当前页面的所有属性
|
||||
*/
|
||||
public void load(View view, AttributeSet attrs) {
|
||||
// 记录View是否配置了isUseSkin属性
|
||||
boolean isUseSkin = false;
|
||||
List<SkinPair> skinPairs = new ArrayList<>();
|
||||
for (int i = 0; i < attrs.getAttributeCount(); i++) {
|
||||
//获得属性名
|
||||
String attributeName = attrs.getAttributeName(i);
|
||||
// 筛选配置了换肤属性的View,防止因为换肤导致。动态控制了状态的View被还原的问题;
|
||||
|
||||
if (attributeName.equals("isUseSkin")) {
|
||||
isUseSkin = true;
|
||||
}
|
||||
//是否符合 需要筛选的属性名
|
||||
if (mAttributes.contains(attributeName)) {
|
||||
else if (mAttributes.contains(attributeName)) {
|
||||
//属性名写法
|
||||
//#ffff
|
||||
//?attr/xxx
|
||||
@@ -95,11 +101,14 @@ public class SkinAttribute {
|
||||
}
|
||||
|
||||
//将View与之对应的可以动态替换的属性集合 放入 集合中
|
||||
if (!skinPairs.isEmpty() || view instanceof TextView || view instanceof SkinViewSupport) {
|
||||
//选择皮肤 更新
|
||||
SkinView skinView = new SkinView(view, skinPairs);
|
||||
skinView.applySkin();
|
||||
mSkinViews.add(skinView);
|
||||
if (isUseSkin) {
|
||||
Log.d(TAG, "View 开启了换肤……isUseSkin");
|
||||
if (!skinPairs.isEmpty() || view instanceof SkinViewSupport) {
|
||||
//选择皮肤 更新
|
||||
SkinView skinView = new SkinView(view, skinPairs);
|
||||
skinView.applySkin();
|
||||
mSkinViews.add(skinView);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user