自定义View学习笔记(1)->绘图技术详解

基本布局

这篇简单介绍下如何利用Android API进行一些简单图形的绘制,绘图的前提是需要继承自View,然后重写它的 onDraw(Canvas canvas) 方法即可。

首先我们新建一个类继承自View,并重写onDraw方法:


public class CustomView extends View {


    public CustomView(Context context) {
        super(context);
    }

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

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

    }
}


然后在Layout中进行添加此View:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.snow.viewfirst.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

    <com.snow.viewfirst.CustomView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.snow.viewfirst.CustomView>
</RelativeLayout>


这样一个大体的自定义View的流程就搭建起来了,当然现在运行会显示一片空白,因为我们还没在onDraw方法进行任何的绘制,进行绘制前需要了解两个API:Canvas 和 Paint


Canvas与Paint

Canvas翻译成中文就是画布的意思,Canvas负责进行绘制各种各样的图形,它有如下的一些绘制图形方法:

    drawArc 绘制弧

    drawBitmap 绘制位图

    drawCircle 绘制圆形

    drawLine 绘制线

    drawOval 绘制椭圆

    drawPath 绘制路径

    drawPoint 绘制一个点

    drawPoints 绘制多个点

    drawRect 绘制矩形

    drawRoundRect 绘制圆角矩形

    drawText 绘制字符串

    drawTextOnPath 沿着路径绘制字符串


更多的绘制方法参考:

    https://developer.android.com/reference/android/graphics/Canvas.html


Paint翻译成中文有油漆涂料的意思,Paint主要负责设置绘图的风格,包括画笔的颜色,粗细,填充风格等,它有如下的一些设置方法:


    setARGB/setColor 设置颜色

    setAlpha 设置透明度

    setAntiAlias 设置是否抗锯齿

    setShader 设置画笔的填充效果

    setShadowLayer 设置阴影

    setStyle 设置画笔风格

    setStrokeWidth 设置空心边框的宽度

    setTextSize 设置绘制文本时文字的大小


更多的设置方法参考:

    https://developer.android.com/reference/android/graphics/Paint.html


下面我们利用上面的API进行一些简单的绘图。


圆形

绘制圆形:drawCircle(float cx, float cy, float radius, Paint paint)

cx: 圆心的x坐标
cy: 圆心的y坐标
radius: 圆的半径
paint: 绘制风格


@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    Paint paint = new Paint();

    //去锯齿
    paint.setAntiAlias(true);
    paint.setColor(getResources().getColor(android.R.color.holo_blue_bright));
    //绘制普通圆
    canvas.drawCircle(200,200,100,paint);
    //设置空心Style
    paint.setStyle(Paint.Style.STROKE);
    //设置空心边框的宽度
    paint.setStrokeWidth(20);
    //绘制空心圆
    canvas.drawCircle(200,500,90,paint);

}

运行效果



矩形

绘制矩形:drawRect(float left, float top, float right, float bottom, Paint paint)

                 / drawRect(RectF rect, Paint paint)


left: 矩形left的x坐标
top: 矩形top的y坐标
right: 矩形right的x坐标
bottom: 矩形bottom的y坐标
paint: 绘制风格





@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    Paint paint = new Paint();

    //去锯齿
    paint.setAntiAlias(true);
    //设置颜色
    paint.setColor(getResources().getColor(android.R.color.holo_blue_light));
    //绘制正方形
    canvas.drawRect(100, 100, 300, 300, paint);;

    //设置空心Style
    paint.setStyle(Paint.Style.STROKE);
    //设置空心边框的宽度
    paint.setStrokeWidth(20);
    //绘制空心矩形
    canvas.drawRect(100, 400, 600, 800, paint);
}



后续还有椭圆、圆角矩形,方法类似就没有调试了。


本文转载:http://blog.csdn.net/leejizhou/article/details/51524948#rd



























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值