zoukankan      html  css  js  c++  java
  • Android 自定义 View 绘制

    在 Android 自定义View 里面,介绍了自定义的View的基本概念。

    在 Android 控件架构及View、ViewGroup的测量 里面介绍了 Android 的坐标系 View、ViewGroup的测量方面的内容。

    本文我们重点整理一下自定义View绘制的相关技术。

    重点:

    1. 掌握重写绘制方法,主要涉及到的方法是 onDraw()。 -- 本文说明

    2. 掌握Canvas 的使用,主要是掌握Canvas的绘制类方法:drawXXX() 涉及的关键绘制对象 Paint。-- 本文说明

    难点:

    1. 了解和学会Canvas的辅助类的使用,主要是范围裁切和几何变换。-- 参考后面的推荐博客

    2. 了解和学会使用不同的绘制方法来控制遮盖关系。 -- 参考后面的推荐博客

    自定义绘制步骤:

    1. 提前创建好 Paint 对象,重写 onDraw(),把绘制代码写在 onDraw() 里面,就是自定义绘制最基本的实现。

    Paint paint = new Paint();
    
    @Override
    protected void onDraw(Canvas canvas) {  
        super.onDraw(canvas); // 不能缺失
        // 绘制一个圆
        canvas.drawCircle(300, 300, 200, paint);
    }

    2. 创建Paint,其中几个最常用的方法:

    Paint.setStyle(Style style) // 设置绘制模式
    
    Paint.setColor(int color) // 设置颜色
    
    Paint.setStrokeWidth(float width) // 设置线条宽度
    
    Paint.setTextSize(float textSize) // 设置文字大小
    
    Paint.setAntiAlias(boolean aa) // 设置抗锯齿开关

    3. 执行 Canvas 下的相关 draw- 打头的方法,例如 drawCircle()、drawBitmap()

    drawColor(@ColorInt int color)  // 颜色填充 -- 在整个绘制区域统一涂上指定的颜色。
    
    drawCircle(float centerX, float centerY, float radius, Paint paint) // 画圆 -- 可以通过修改Paint的参数来画不同类型的圆形。
    
    drawRect(float left, float top, float right, float bottom, Paint paint) // 画矩形
    
    drawPoint(float x, float y, Paint paint)  // 画点 -- setStrokeCap() 可以设置点的形状(矩形/圆形)
    
    drawPoints(float[] pts, int offset, int count, Paint paint)  // drawPoints(float[] pts, Paint paint) 画点(多个)
    
    drawOval(float left, float top, float right, float bottom, Paint paint)  // 画椭圆
    
    drawLine(float startX, float startY, float stopX, float stopY, Paint paint) // 画线
    
    drawLines(float[] pts, int offset, int count, Paint paint) / drawLines(float[] pts, Paint paint)  // 画线(多个)
    
    drawRoundRect(float left, float top, float right, float bottom, float rx, float ry, Paint paint)  // 画圆角矩形
    
    drawArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean useCenter, Paint paint)  //绘制弧形或扇形
    
    drawPath(Path path, Paint paint)  // 画自定义图形

    因为时间关系,自定义View绘制就说到这里,基本上所有的图形绘制都是基于这三步的。

    如果需要比较高级的特效的,参考朱凯大神的博客,本人就不多在这里赘述了:

    视频教程地址: http://www.bilibili.com/video/av12937987/?zw

    文章教程地址如下:

    http://hencoder.com/ui-1-1/  绘制基础

    http://hencoder.com/ui-1-2/  Paint 详解

    http://hencoder.com/ui-1-3/  文字的绘制

    http://hencoder.com/ui-1-4/  Canvas 对绘制的辅助 

  • 相关阅读:
    自动化单元测试工具 EvoSuite 的简单使用
    Dialog lookup method
    微软Axapta中PDF支持中文
    Connected to Ax AOS by code
    Dialog control field event
    Find the tables extending a specific extended data type
    sqlplus不使用服务名,直接使用IP地址连接Oracle
    ATL编写的带窗口的控件,无论VC6(ATL3.0) VC7.1(ATL7.0) 在Windows 7 或 Server 2008 下,WinForm调用时发生的问题
    Ice的slice文件自定义编译命令
    VC9 SP1中新增加的标准 C++ 库中的新功能
  • 原文地址:https://www.cnblogs.com/renhui/p/7419827.html
Copyright © 2011-2022 走看看