圆角矩形背景,可变色,可左右方向渐变背景色,TextView
项目中常常用到圆角矩形按钮,空心的、实心的、纯圆角的、任意radius的、背景颜色各种的、甚至颜色渐变的
过去drawable中存在大量xml文件用来设置shape,这个自定义控件就是为了解决这个问题,避免在drawable中创建大量的shape/selector文件
源码
package xxx.xxx.xxx;
import com.silvrr.utils.CommonUtils;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.StateListDrawable;
import android.os.Build;
import android.support.v7.widget.AppCompatTextView;
import android.util.AttributeSet;
import android.view.Gravity;
import xxx.xxx.xxx.common.utils.ResUtil;
import xxx.xxx.xxx.R;
/**
* 圆角矩形背景,可变色TextView
* Created by zhangjianliang on 2018/4/26——
*/
public class TagTextView extends AppCompatTextView {
public static final int TAG_FILL_TYPE = 1;//背景填充满
public static final int TAG_STROKE_TYPE = 2;//背景空心带边缘
public static final int TAG_NOBG_TYPE = 3;//无背景
private GradientDrawable mDrawable;
private GradientDrawable mMaskDrawable;
private static final String DEFAULT_STROKE_COLOR = "#ff8c99";//默认背景边缘线颜色
private static final String DEFAULT_BACKGROUND_COLOR = "#00000000";
private static final String DEFAULT_MASK_COLOR = "#26000000";//遮罩颜色,默认是20%黑色
private static final int DEFAULT_STROKE_WIDTH = 1;
private static final int HORIZONTAL_PADDING = 6;//dp 默认左右边padding
private static final int VERTICAL_PADDING = 3;//dp 默认上下边padding
private int mStrokeWidth;
private float mRadius;//dp 默认圆角半径
private boolean isRoundRect;//是否圆角
private int mHozPadding;
private int mVertPadding;
private int mStrokeColor;
/** 按压颜色 */
private int mPressedColor;
private boolean mGradientType;
private int mStartTagColor;
private int mEndTagColor;
private int mTagType;
public TagTextView(Context context) {
this(context, null);
}
public TagTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
pu