Android开发自定义view

释放双眼,带上耳机,听听看~!

效果:

public class CustomView extends View {
private Paint mPaint,mtextPaint;
int radius,mtextColor,mtextSize;
String mtext;
//这个构造方法,是new对象,实例化对象的时候调用的
public CustomView(Context context) {
super(context);
}
//这个构造方法,是在你的xml文件中调用的方法,就是在xml文件里写上全类名,当作组件用
public CustomView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
//实例化画笔,并同时设置抗锯齿
mPaint=new Paint(Paint.ANTI_ALIAS_FLAG);
mtextPaint=new Paint(Paint.ANTI_ALIAS_FLAG);
//获取自定义属性数组
TypedArray array = context.getTheme().obtainStyledAttributes(attrs,R.styleable.CustomView,0,0);
//获取具体的自定义属性
int color=array.getColor(R.styleable.CustomView_paintColor,0x000000);
radius=array.getInt(R.styleable.CustomView_radius,10);
//使用xml里自定义属性的值
mPaint.setColor(color);
mtextColor=array.getColor(R.styleable.CustomView_textColor,0x000000);
mtextSize=array.getInt(R.styleable.CustomView_textsize,10);
mtext=array.getString(R.styleable.CustomView_text);
}
public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
//测量的方法
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
//布局的方法
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
}
//画组件的方法
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//设置画笔属性
mPaint.setStyle(Paint.Style.FILL);
mPaint.setStrokeWidth(8);
//画圆
canvas.drawCircle(getWidth() / 2, getHeight() / 2, radius, mPaint);
//设置画笔属性
mtextPaint.setColor(mtextColor);
mtextPaint.setTextSize(mtextSize);
//写文字
canvas.drawText(mtext,180,320,mtextPaint);
}
}
//在res/values/attrs.xml里添加
<declare-styleable name="CustomView">
<attr name="left" format="integer"/>
<attr name="paintColor" format="color"/>
<attr name="textColor" format="color"/>
<attr name="radius" format="integer"/>
<attr name="textsize" format="integer"/>
<attr name="text" format="string"/>
</declare-styleable>
//定义一个命名控件
xmlns:app="http://schemas.android.com/apk/res-auto"
//使用自定义view
<*********.view.CustomView
android:layout_width="200dp"
android:layout_height="200dp"
app:paintColor="#000"
app:radius="200"
app:textColor="#eff60b"
app:textsize="100"
app:text="中国"
>
</*********.view.CustomView>

人已赞赏
Android文章

android开发接入支付宝支付加沙箱环境测试

2021-2-1 14:15:24

Android文章

Android开发接入ShareSdk分享

2021-2-1 15:09:55

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索