Android 中View.onDraw(Canvas canvas)的使用方法

发布时间 - 2026-01-11 03:24:13    点击率:

Android 中View.onDraw(Canvas canvas)的使用方法

View通过View.onDraw(Canvas canvas)来Draw.

我们可以定义自己的继承于View的TestView,然后重载View.onDraw(Canvas canvas).

对于自定义的TestView如何与Activity关联?有以下两种方式:

  1. 直接在setContentView(View view)里面加进去自定义的View:setContentView(new TestView(this)).
  2. 另外,可以在layout文件里面可以使用自定义的View(如何自定义的View为内部类,就会失效),

如:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  xmlns:android="http://schemas.android.com/apk/res/android"> 
  <com.android.test.TestView 
    android:id="@+id/testview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"/> 
</FrameLayout> 

 以下为使用onDraw(Canvas canvas)画矩形区域,及在其上画文本的实例(通过使用内部类使程序显得更加简洁,紧凑):

package com.android.test; 
import android.app.Activity; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Rect; 
import android.graphics.Typeface; 
import android.os.Bundle; 
import android.view.View; 
public class TestActivity extends Activity { 
  /** Called when the activity is first created. */ 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(new TestView(this)); 
  } 
  public class TestView extends View { 
    private Paint mPaint = new Paint(); 
    public TestView(Context context) { 
      super(context); 
    } 
     
    @Override 
    protected void onDraw(Canvas canvas) { 
      // TODO Auto-generated method stub 
      super.onDraw(canvas); 
       
      String text = "Android - 机器人";      
      mPaint.setColor(Color.WHITE); 
       
      Paint paint = new Paint(); 
      paint.setColor(Color.RED); 
       
      String familyName = "宋体"; 
      Typeface font = Typeface.create(familyName,Typeface.BOLD); 
      paint.setTypeface(font); 
       
      paint.setTextSize(22); 
       
      canvas.drawRect(new Rect(0, 0, 320, 240), mPaint); 
      canvas.drawText(text, 0, 100, paint); 
    } 
  } 
} 

 运行效果如下图:

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # Canvas的使用  # Canvas中View.onDraw使用方法  # Android 重写ViewGroup 分析onMeasure()和onLayout()方法  # Android View.onMeasure方法详解及实例  # Android ListView 和ScroolView 出现onmeasure空指针的解决办法  # Android 通过onDraw实现在View中绘图操作的示例  # Android onMeasure与onDraw及自定义属性使用示例  # 自定义  # 自己的  # 就会  # 如有  # 两种  # 我们可以  # 希望能  # 可以使用  # 谢谢大家  # 如下图  # 宋体  # 上画  # 疑问请  # layout_width 


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


相关推荐: 成都网站制作公司哪家好,四川省职工服务网是做什么用?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  怎样使用JSON进行数据交换_它有什么限制  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  免费网站制作appp,免费制作app哪个平台好?  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel怎么调用外部API_Laravel Http Client客户端使用  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  Laravel如何使用withoutEvents方法临时禁用模型事件  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  详解Android——蓝牙技术 带你实现终端间数据传输  JS中对数组元素进行增删改移的方法总结  QQ浏览器网页版登录入口 个人中心在线进入  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  使用Dockerfile构建java web环境  微信小程序 闭包写法详细介绍  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  Python制作简易注册登录系统  动图在线制作网站有哪些,滑动动图图集怎么做?  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  网站页面设计需要考虑到这些问题  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  如何在阿里云服务器自主搭建网站?  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  如何在Windows环境下新建FTP站点并设置权限?  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  高端建站三要素:定制模板、企业官网与响应式设计优化  实现点击下箭头变上箭头来回切换的两种方法【推荐】  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  微信小程序 scroll-view组件实现列表页实例代码  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  如何在香港服务器上快速搭建免备案网站?  网站建设要注意的标准 促进网站用户好感度!  三星、SK海力士获美批准:可向中国出口芯片制造设备  如何快速登录WAP自助建站平台?  清除minerd进程的简单方法  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  Python数据仓库与ETL构建实战_Airflow调度流程详解  ,交易猫的商品怎么发布到网站上去?  高端智能建站公司优选:品牌定制与SEO优化一站式服务