android自定义圆角矩形背景按钮,避免创建大量不可复用的shape.xml

圆角矩形背景,可变色,可左右方向渐变背景色,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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值