自定义View绘制图形一(绘制静态图形)

本文介绍如何通过自定义View在Android应用中绘制文字、图片、圆形等元素,并提供了详细的代码示例。

首先定义一个CustomView继承View,然后加入两个构造方法:
public CustomView(Context context) {
//此构造方法是为了在代码中实例化对象使用
super(context);
}
public CustomView(Context context, AttributeSet attrs) {
//此方法是在布局文件中使用
super(context, attrs);
}
在添加完方法之后就算是一个简单的自定义View了,只不过这个自定义View除了拥有一些系统VIew自带的属性外什么都做不了!
今天我们主要说一下,onDraw(Canvas canvas)这个用来绘制View视图界面的方法!要想绘制图形,需要两个类,一个是Paint还有一个就是方法里面的那个Canvas,这个两个类一个相当于画笔一个相当于画布!下面是我代码写的一些实例代码,已经有很详细的注解了:
@Override
protected void onDraw(Canvas canvas) {
/**
* mPaint 画笔
*/
mPaint = new Paint();
mPaint.setTextSize(30);
mPaint.setColor(0xffff0000);
float size = mPaint.measureText(“自定义View”); //测量字符串的宽度

    /**
     * canvas 画布
     * 绘制文字
     * @NonNullString text,  要绘制的文字   “自定义View”
     * int start,  所要绘制文字的开始下标
     * int end,   所要绘制文字的结束下标
     * float x,   绘制文字所在view的X坐标
     * float y,   绘制文字所在view的Y坐标(以文字的基准线为准,就是说当Y坐标为0时,文字会超出View消失)!
     * @NonNull Paint paint  画笔 (The paint used for the text (e.g. color, size, style))
     *
     */

    canvas.drawText("自定义View", 0, 30, mPaint);
    canvas.drawText("自定义View", 0, 2, 0, 60, mPaint);

    mPaint.setStyle(Paint.Style.STROKE);  // 设置绘制图形为空心的

    /**
     * 绘制圆形
     * float cx, 原点X坐标
     * float cy, 原点Y坐标
     * float radius, 半径
     * @NonNull Paint paint
     */
    canvas.drawCircle(10, 80, 10, mPaint);
    /**
     * 绘制图片
     * @NonNull Bitmap bitmap,
     * float left,  X坐标
     * float top,  Y坐标
     * @Nullable Paint paint
     */
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
    canvas.drawBitmap(bitmap, 100, 100, mPaint);
    /**
     * float left,  矩形左侧相对view左侧的距离
     * float right,  矩形右侧相对view左侧的距离
     * float top,  矩形顶端相对view顶端的距离
     * float bottom,  矩形底端相对view底端的距离
     * 矩形的高 = bottom-top
     * 矩形的宽 = right - left
     * @NonNull Paint paint
     */
    canvas.drawRect(100, 200, 300, 400, mPaint);
    /**
     * float startX,
     * float startY,
     * float stopX,
     * float stopY,
     @NonNull Paint paint
     */
    canvas.drawLine(100, 450, 300, 500, mPaint);
}
canvas除了能绘制这些图形之外还能绘制很多的东西,有时间可以在自己尝试着去做绘制几种,使用的方法大致都相同,有不会的可以去百度或看看官方文档!
最后在XML布局资源中引用你这CustomView就可以了,或者直接在代码中实例化!
  <com.example.a20161005.custormview.v1.MyView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00ff00"
    android:visibility="gone"
    />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值