diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 8e9756d758..b59a552525 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -77,6 +77,7 @@ diff --git a/modules/mogo-module-authorize/src/main/res/values/colors.xml b/modules/mogo-module-authorize/src/main/res/values/colors.xml index 5886e84810..e32111d451 100644 --- a/modules/mogo-module-authorize/src/main/res/values/colors.xml +++ b/modules/mogo-module-authorize/src/main/res/values/colors.xml @@ -3,5 +3,5 @@ #99FFFFFF #FFFFFF #FFFFFF - #7F000000 + #99000000 \ No newline at end of file diff --git a/modules/mogo-module-common/src/main/res/values/colors.xml b/modules/mogo-module-common/src/main/res/values/colors.xml index 0856fc721d..3b0ff8796d 100644 --- a/modules/mogo-module-common/src/main/res/values/colors.xml +++ b/modules/mogo-module-common/src/main/res/values/colors.xml @@ -1,6 +1,6 @@ - #7f000000 + #99000000 #FFFFFF #FFFFFF #FFFFFF diff --git a/modules/mogo-module-common/src/main/res/values/styles.xml b/modules/mogo-module-common/src/main/res/values/styles.xml index e12e13d325..047f2a7f55 100644 --- a/modules/mogo-module-common/src/main/res/values/styles.xml +++ b/modules/mogo-module-common/src/main/res/values/styles.xml @@ -5,7 +5,7 @@ @null true @android:color/transparent - 0.4 + 0.6 true @null @android:color/transparent diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/StrokeTextView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/StrokeTextView.java new file mode 100644 index 0000000000..65e37ad663 --- /dev/null +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/StrokeTextView.java @@ -0,0 +1,101 @@ +package com.mogo.module.extensions.weather; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.text.Layout; +import android.text.TextPaint; +import android.util.AttributeSet; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.appcompat.widget.AppCompatTextView; + +import com.mogo.skin.support.IMogoSkinCompatSupportable; +import com.mogo.skin.support.helper.MogoSkinCompatTextHelperDelegate; + +import java.lang.reflect.Field; + +/** + * 带边框的textView + * + * @author tongchenfei + */ +public class StrokeTextView extends AppCompatTextView implements IMogoSkinCompatSupportable { + + private MogoSkinCompatTextHelperDelegate textHelperDelegate; + + public StrokeTextView(Context context) { + this(context,null); + } + + public StrokeTextView(Context context, @Nullable AttributeSet attrs) { + this(context, attrs, 0); + } + + public StrokeTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + textHelperDelegate = new MogoSkinCompatTextHelperDelegate(this); + } + + @Override + public void setTextAppearance(Context context, int resId) { + super.setTextAppearance(context, resId); + textHelperDelegate.onSetTextAppearance(context, resId); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + int widthMode = MeasureSpec.getMode(widthMeasureSpec); + int widthSize = getMeasuredWidth(); + if (widthMode == MeasureSpec.AT_MOST) { + widthSize += 20; + Layout mLayout = getLayout(); + if (mLayout != null) { + mLayout.increaseWidthTo(widthSize); + } + setMeasuredDimension(widthSize, getMeasuredHeight()); + } + } + + @Override + protected void onDraw(Canvas canvas) { + int oriColor = getCurrentTextColor(); + // 先画边框 + TextPaint paint = getPaint(); + setCurTextColor(Color.YELLOW); + paint.setStyle(Paint.Style.STROKE); + paint.setShadowLayer(10F, 0F, 0F, Color.YELLOW); + float b = getTextSize() / 20; + float shadowWidth = Math.max(b, 2f); + paint.setStrokeWidth(shadowWidth); + super.onDraw(canvas); + // 再画文字 + setCurTextColor(oriColor); + paint.setStyle(Paint.Style.FILL); + super.onDraw(canvas); + } + + /** + * 通过反射直接设置mCurTextColor这个变量,直接调用{@link #setTextColor(int)}会出现重复递归的问题 + * + * @param color 要设置的颜色值 + */ + private void setCurTextColor(int color) { + try { + Field mCurTextColor = TextView.class.getDeclaredField("mCurTextColor"); + mCurTextColor.setAccessible(true); + mCurTextColor.set(this,color); + mCurTextColor.setAccessible(false); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } + } + + @Override + public void applySkin() { + textHelperDelegate.applySkin(); + } +} diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml index 4446c317a0..9e11dc3fce 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml @@ -291,4 +291,17 @@ android:visibility="gone" app:constraint_referenced_ids="btnShowDrawableTipNoSize,btnShowDrawableTip,btnShowTextTip,btnDebugCtrlNaviView,btnDebugCtrlSubView,btnDebugCtrlTopView,btnDebugAddBottomLayerView" /> + \ No newline at end of file