Android自定义控件基础

1.  使用android api   ShapeDrawable 【图形绘制】  drawText  【文本绘制】

package mk.denganzhi.com.shapemodel;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.OvalShape;
import android.graphics.drawable.shapes.RectShape;
import android.graphics.drawable.shapes.RoundRectShape;
import android.graphics.drawable.shapes.Shape;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;

/**
 * Created by denganzhi on 2020/3/2.
 */

public class MyView extends View {
    public MyView(Context context) {
        super(context);
    }


    ShapeDrawable shapeDrawable=null;
    Paint paint=null;

    public MyView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        /**
         * ArcShape:     圆弧
         * OvalShape:  椭圆形    默认
         * RectShape    矩形
         * RoundRectShape  圆角矩形
         */
        // 绘制一个矩形
        shapeDrawable=new ShapeDrawable(new OvalShape());
        // 指定背景颜色
        shapeDrawable.getPaint().setColor(Color.RED);
        // 指定路径在View中的
        // int left, int top, int right, int bottom
        //  right,bottom是右下角相对于左边,上边距离
        shapeDrawable.setBounds(10,10,100,100);

        //设置画笔
        paint=new Paint();
        paint.setColor(Color.BLACK);
        paint.setTextSize(20);
        paint.setTypeface(Typeface.DEFAULT_BOLD);  // 设置粗体
        paint.setAntiAlias(true);  // 消除锯齿
    }


    public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }


    @Override
    protected void onDraw(Canvas canvas) {
         super.onDraw(canvas);
        // canvas 画板,背景色
        canvas.drawColor(Color.GREEN);


        // 画笔, 这个坐标是左下角的坐标
        canvas.drawText("hello.view",10,120,paint);


        // 可以自己把自己画到画布上去
        shapeDrawable.draw(canvas);

    }
}

   使用:

<mk.denganzhi.com.shapemodel.MyView
         android:layout_width="200dp"
         android:layout_height="200dp" />

发布了70 篇原创文章 · 获赞 63 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/dreams_deng/article/details/104616803
今日推荐