Android自定义控件绘制基本图形基础入门

发布时间 - 2026-01-10 22:48:00    点击率:

本文讲述绘制Android自定义各种图形效果,为自定义控件的入门篇

相关视频链接:

Android自定义控件系列
http://edu.csdn.net/course/detail/3719/65396
Android视频全系列
http://edu.csdn.net/course/detail/2741/43163

绘制点–这个控件只需要在布局中引用或者代码中new 即可,下面几个绘制只展示onDraw方法

package com.example.viewdemo1.view;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.view.View;

public class PointView extends View {

 public PointView(Context context, AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
 }

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

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

 @Override
 protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  // 对于画笔
  Paint paint = new Paint();
  // 设置抗锯齿
  paint.setAntiAlias(true);
  // 设置画笔颜色
  paint.setColor(Color.RED);
  // 三种样式
  paint.setStyle(Style.FILL_AND_STROKE);
  paint.setStrokeWidth(5);
  // 阴影
  paint.setShadowLayer(10, 0, 0, Color.CYAN);
  // 点的坐标 x0,y0,x1,y1......
  float[] pts = { 50, 50, 100, 100, 200, 200, 300, 300, 0, 100, 100, 0 };
  canvas.drawPoints(pts, paint);
  // 绘制点的时候,隔着几个点绘制几个,最多不到多少点
  canvas.drawPoints(pts, 1, 6, paint);
 }

}

绘制线

@Override
 protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  // 对于画笔
  Paint paint = new Paint();
  // 设置抗锯齿
  paint.setAntiAlias(true);
  // 设置画笔颜色
  paint.setColor(Color.RED);
  // 三种样式
  paint.setStyle(Style.FILL);
  paint.setStrokeWidth(0.5f);
  // 阴影
  // paint.setShadowLayer(10, 0, 0, Color.CYAN);
  // x0,y0,x1,y1
  float[] pts = { 100, 100, 200, 200, 200, 200, 300, 200, 300, 200, 300,
    400 };
  // 以上是6个点的x,y坐标,两两连成线段
  canvas.drawLines(pts, paint);
  // 画一条线
  canvas.drawLine(0, 0, 100, 100, paint);

  }

绘制圆

//指定圆心坐标,半径就OK
canvas.drawCircle(100, 100, 100, paint);

绘制文字

//设置文字大小
paint.setTextSize(40);
//指定坐标,最好指定文字大小
canvas.drawText("哈", 100, 500, paint);
//将文字设置到指定路径上
Path path = new Path();
paint.setTextSize(50);
path.addCircle(200, 200, 150, Direction.CCW);
canvas.drawTextOnPath("我爱你我的祖国,我爱你我亲爱的姑娘", path, 0, 0, paint);

绘制矩形

// 阴影
paint.setShadowLayer(10, 0, 0, Color.CYAN);
// x y 坐标 及半径值
// canvas.drawCircle(100, 100, 50, paint);
canvas.drawRect(50, 50, 300, 300, paint);

绘制圆弧 

 //指定放置圆弧的矩形
 RectF oval=new RectF(10,10,210,210);
 //绘制圆弧-0是指开始度数,270是指结束度数 false是指不连接圆心,paint是画笔
 canvas.drawArc(oval, 0, 270, false, paint);

绘制椭圆

//指定矩形,指定画笔
canvas.drawOval(oval, paint);

以上就是基本图形的绘制了…very easy。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android自定义控件绘制基本图形  # Android绘制基本图形  # Android基本图形绘制方法  # Android开发 OpenGL ES绘制3D 图形实例详解  # Android开发之OpenGL绘制2D图形的方法分析  # Android openGl 绘制简单图形的实现示例  # Android编程开发之在Canvas中利用Path绘制基本图形(圆形  # 矩形  # 椭圆  # 三角形等)  # Android编程之canvas绘制各种图形(点  # 直线  #   #   # 文字  # 多边形  # 曲线  # 圆角矩形)  # Android自定义View实现shape图形绘制  # Android开发实现各种图形绘制功能示例  # android绘制几何图形的实例代码  # Android shape 绘制图形的实例详解  # Android中常见的图形绘制方式总结  # 几个  # 是指  # 自定义  # 三种  # 抗锯齿  # 最多  # 只需  # 我爱  # 要在  # 你我  # 隔着  # 全系列  # 大家多多  # 画一  # 入门篇  # AttributeSet  # View  # util  # Canvas  # graphics 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  phpredis提高消息队列的实时性方法(推荐)  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Laravel如何实现多对多模型关联?(Eloquent教程)  如何用wdcp快速搭建高效网站?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  nginx修改上传文件大小限制的方法  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  高性能网站服务器部署指南:稳定运行与安全配置优化方案  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  nodejs redis 发布订阅机制封装实现方法及实例代码  Bootstrap整体框架之CSS12栅格系统  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  图册素材网站设计制作软件,图册的导出方式有几种?  Laravel Session怎么存储_Laravel Session驱动配置详解  Laravel如何配置任务调度?(Cron Job示例)  Laravel定时任务怎么设置_Laravel Crontab调度器配置  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  如何用虚拟主机快速搭建网站?详细步骤解析  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  重庆市网站制作公司,重庆招聘网站哪个好?  IOS倒计时设置UIButton标题title的抖动问题  佛山网站制作系统,佛山企业变更地址网上办理步骤?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  iOS正则表达式验证手机号、邮箱、身份证号等  如何在万网主机上快速搭建网站?  音响网站制作视频教程,隆霸音响官方网站?  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  如何续费美橙建站之星域名及服务?  UC浏览器如何设置启动页 UC浏览器启动页设置方法  js实现点击每个li节点,都弹出其文本值及修改  如何在阿里云服务器自主搭建网站?  如何在Windows 2008云服务器安全搭建网站?  EditPlus中的正则表达式 实战(4)  Laravel怎么判断请求类型_Laravel Request isMethod用法  如何批量查询域名的建站时间记录?  Laravel如何处理文件下载请求?(Response示例)  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  如何在阿里云域名上完成建站全流程?  北京企业网站设计制作公司,北京铁路集团官方网站?  Python进程池调度策略_任务分发说明【指导】  轻松掌握MySQL函数中的last_insert_id()