您的位置:首页 > 其它

消息提醒---带阴影的圆形小球

2018-02-13 11:36 260 查看
自定义的属性

<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="RedDotTextView">
<attr name="shadowWidth" format="dimension" />
<attr name="circleBackground" format="reference|color" />
</declare-styleable>
</resources>


java代码

public class RedDotTextView extends AppCompatTextView {

private Paint mPaint;
private RectF mBgRect;
private int mShadowWidth;
private int mBgColor;

public RedDotTextView(Context context) {
super(context);
init(context, null);
}

public RedDotTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}

public RedDotTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context, attrs);
}

private void init(Context context, AttributeSet attrs){
if (attrs != null) {
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RedDotTextView, 0, 0);
try {
if (a.hasValue(R.styleable.RedDotTextView_shadowWidth)) {
mShadowWidth = a.getDimensionPixelSize(R.styleable.RedDotTextView_shadowWidth, -1);
}
if (a.hasValue(R.styleable.RedDotTextView_circleBackground)) {
mBgColor = a.getColor(R.styleable.RedDotTextView_circleBackground, 0);
}
} finally {
a.recycle();
}
}

mPaint = new Paint();
mPaint.setStyle(Paint.Style.FILL);
mPaint.setAntiAlias(true);
mPaint.setColor(mBgColor);
mPaint.setShadowLayer(1, 0, mShadowWidth, Color.parseColor("#7f565656"));
setLayerType(LAYER_TYPE_SOFTWARE, mPaint);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
int width = getWidth();
mBgRect = new RectF(0, 0, width, width);
}

@Override
protected void onDraw(Canvas canvas) {
canvas.drawArc(mBgRect, 0, 360, false, mPaint);
super.onDraw(canvas);
}
}


使用:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.test.reddottextview.MainActivity">

<com.test.reddottextview.RedDotTextView
android:layout_width="50dp"
android:layout_height="51dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:shadowWidth="1dp"
app:circleBackground="@color/colorAccent"
android:text="hello"
android:gravity="center"/>

</android.support.constraint.ConstraintLayout>


效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: