1:添加炼仙传说功能
2:修改混淆,
This commit is contained in:
@@ -0,0 +1,199 @@
|
||||
package com.xscm.moduleutil.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.GradientDrawable;
|
||||
import android.graphics.drawable.StateListDrawable;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.Gravity;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.xscm.moduleutil.R;
|
||||
|
||||
|
||||
/**
|
||||
* 小熊猫展示的金额,是在炼仙传说中使用的
|
||||
*/
|
||||
|
||||
public class ShapeRedTextView extends TextView {
|
||||
private final int SHAPE_RECTANGEL = 0;
|
||||
private final int SHAPE_OVAL = 1;
|
||||
|
||||
private int shape;
|
||||
private int solidNormalColor;
|
||||
private int solidPressedColor;
|
||||
private float cornersRadius;
|
||||
private float cornersTopLeft;
|
||||
private float cornersTopRight;
|
||||
private float cornersBottomLeft;
|
||||
private float cornersBottomRight;
|
||||
|
||||
// 渐变颜色属性
|
||||
private int gradientNormalStartColor;
|
||||
private int gradientNormalCenterColor;
|
||||
private int gradientNormalEndColor;
|
||||
|
||||
private int gradientPressedStartColor;
|
||||
private int gradientPressedCenterColor;
|
||||
private int gradientPressedEndColor;
|
||||
|
||||
private int gradientOrientation;
|
||||
|
||||
private float strokeWidth;
|
||||
private int strokeColor;
|
||||
|
||||
private int defaultColor = Color.parseColor("#00000000");
|
||||
private GradientDrawable.Orientation[] orientations;
|
||||
|
||||
public ShapeRedTextView(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public ShapeRedTextView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
|
||||
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.ShapeTextView);
|
||||
shape = array.getInteger(R.styleable.ShapeTextView_shape, SHAPE_RECTANGEL);
|
||||
|
||||
|
||||
solidNormalColor = array.getColor(R.styleable.ShapeTextView_solidNormal, defaultColor);
|
||||
solidPressedColor = array.getColor(R.styleable.ShapeTextView_solidPressed, defaultColor);
|
||||
|
||||
|
||||
cornersRadius = array.getDimension(R.styleable.ShapeTextView_cornersRadius, 0);
|
||||
|
||||
cornersTopLeft = array.getDimension(R.styleable.ShapeTextView_cornerTopLeft, 0);
|
||||
cornersTopRight = array.getDimension(R.styleable.ShapeTextView_cornerTopRight, 0);
|
||||
cornersBottomLeft = array.getDimension(R.styleable.ShapeTextView_cornerBottomLeft, 0);
|
||||
cornersBottomRight = array.getDimension(R.styleable.ShapeTextView_cornerBottomRight, 0);
|
||||
|
||||
strokeWidth = array.getDimension(R.styleable.ShapeTextView_strokeWidth, 0);
|
||||
|
||||
strokeColor = array.getColor(R.styleable.ShapeTextView_strokeColor, defaultColor);
|
||||
|
||||
gradientNormalStartColor = array.getColor(R.styleable.ShapeTextView_gradientNormalStartColor, defaultColor);
|
||||
|
||||
gradientNormalCenterColor = array.getColor(R.styleable.ShapeTextView_gradientNormalCenterColor, defaultColor);
|
||||
|
||||
gradientNormalEndColor = array.getColor(R.styleable.ShapeTextView_gradientNormalEndColor, defaultColor);
|
||||
|
||||
|
||||
gradientPressedStartColor = array.getColor(R.styleable.ShapeTextView_gradientPressedStartColor, defaultColor);
|
||||
gradientPressedCenterColor = array.getColor(R.styleable.ShapeTextView_gradientPressedCenterColor, defaultColor);
|
||||
gradientPressedEndColor = array.getColor(R.styleable.ShapeTextView_gradientPressedEndColor, defaultColor);
|
||||
|
||||
|
||||
TypedArray orientationArray = context.obtainStyledAttributes(attrs, R.styleable.ShapeTextView);
|
||||
|
||||
gradientOrientation = orientationArray.getInteger(R.styleable.ShapeTextView_gradientOrientation, 6);
|
||||
|
||||
array.recycle();
|
||||
|
||||
|
||||
orientations = new GradientDrawable.Orientation[]{
|
||||
GradientDrawable.Orientation.TOP_BOTTOM,
|
||||
GradientDrawable.Orientation.TR_BL,
|
||||
GradientDrawable.Orientation.RIGHT_LEFT,
|
||||
GradientDrawable.Orientation.BR_TL,
|
||||
GradientDrawable.Orientation.BOTTOM_TOP,
|
||||
GradientDrawable.Orientation.BL_TR,
|
||||
GradientDrawable.Orientation.LEFT_RIGHT,
|
||||
GradientDrawable.Orientation.TL_BR
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
super.onDraw(canvas);
|
||||
setShape();
|
||||
}
|
||||
|
||||
private void setShape() {
|
||||
setGravity(Gravity.CENTER);
|
||||
setClickable(true);
|
||||
// normal state
|
||||
GradientDrawable drawableNormal = new GradientDrawable();
|
||||
// 设置Shape
|
||||
drawableNormal.setShape(shape);
|
||||
// 设置圆角半径
|
||||
drawableNormal.setCornerRadius(cornersRadius);
|
||||
// 圆角半径(每个圆角半径的值)
|
||||
if (cornersRadius == 0) {
|
||||
drawableNormal.setCornerRadii(new float[]{
|
||||
cornersTopLeft, cornersTopLeft,
|
||||
cornersTopRight, cornersTopRight,
|
||||
cornersBottomRight, cornersBottomRight,
|
||||
cornersBottomLeft, cornersBottomLeft});
|
||||
}
|
||||
//描边的宽度和颜色
|
||||
drawableNormal.setStroke((int) strokeWidth, strokeColor);
|
||||
//设置填充色
|
||||
if (solidNormalColor != defaultColor) {
|
||||
drawableNormal.setColor(solidNormalColor);
|
||||
} else {
|
||||
// 设置渐变色
|
||||
int[] gradientColors;
|
||||
if (gradientNormalStartColor != defaultColor && gradientNormalEndColor != defaultColor) {
|
||||
gradientColors = new int[]{gradientNormalStartColor, gradientNormalEndColor};
|
||||
if (gradientNormalCenterColor != defaultColor) {
|
||||
gradientColors = new int[]{gradientNormalStartColor, gradientNormalCenterColor, gradientNormalEndColor};
|
||||
}
|
||||
drawableNormal.setColors(gradientColors);
|
||||
|
||||
|
||||
drawableNormal.setOrientation(orientations[gradientOrientation]);
|
||||
} else {
|
||||
drawableNormal.setColor(solidNormalColor);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// pressed state
|
||||
GradientDrawable drawablePressed = new GradientDrawable();
|
||||
drawablePressed.setShape(shape);
|
||||
drawablePressed.setCornerRadius(cornersRadius);
|
||||
if (cornersRadius == 0) {
|
||||
drawablePressed.setCornerRadii(new float[]{
|
||||
cornersTopLeft, cornersTopLeft,
|
||||
cornersTopRight, cornersTopRight,
|
||||
cornersBottomRight, cornersBottomRight,
|
||||
cornersBottomLeft, cornersBottomLeft});
|
||||
}
|
||||
|
||||
drawablePressed.setStroke((int) strokeWidth, strokeColor);
|
||||
|
||||
drawablePressed.setColor(solidPressedColor);
|
||||
|
||||
// 设置背景选择器
|
||||
StateListDrawable stateListDrawable = new StateListDrawable();
|
||||
|
||||
if (solidPressedColor != defaultColor) {
|
||||
stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, drawablePressed);
|
||||
}
|
||||
int[] gradientPressdColors;
|
||||
if (gradientPressedStartColor != defaultColor && gradientPressedEndColor != defaultColor) {
|
||||
gradientPressdColors = new int[]{gradientPressedStartColor, gradientPressedEndColor};
|
||||
if (gradientPressedCenterColor != defaultColor) {
|
||||
gradientPressdColors = new int[]{gradientPressedStartColor, gradientPressedCenterColor, gradientPressedEndColor};
|
||||
}
|
||||
|
||||
drawablePressed.setColors(gradientPressdColors);
|
||||
drawablePressed.setOrientation(orientations[gradientOrientation]);
|
||||
stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, drawablePressed);
|
||||
|
||||
}
|
||||
|
||||
if (isEnabled()) {
|
||||
setAlpha(1.0f);
|
||||
} else {
|
||||
setAlpha(0.7f);
|
||||
}
|
||||
stateListDrawable.addState(new int[]{}, drawableNormal);
|
||||
|
||||
setBackground(stateListDrawable);
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user