安卓自定义View其实很简单。这个View可以像《【Android】利用Java代码布局,按钮添加点击事件》(点击打开链接)一样,利用Java代码生成一系列的组件。也可以配合画布Canvas与画笔Paint来使用。

下面用一个例子来说明。如下图,有一个自定义布局View,里面摆放着,利用画布Canvas与画笔Paint绘制出来的蓝色正方形与红色文字。

在res\layout\activity_main.xml中,直接像摆放安卓固有组件一样,可以直接使用这个我定义组件。里面有蓝色正方形与红色文字。虽然没有卵用,但是这个简单例子,说明了自定义View是怎么使用的。对于一些通过多个固有组件摆出来的视图可以多次复用。其中,这里com.define_view.MyView是我利用Java代码构造出来的类。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><com.define_view.MyViewandroid:layout_width="wrap_content"android:layout_height="wrap_content" /></FrameLayout>

也就是说,要自定义视图,必须先在src中新建一个Java文件。

这个Java文件名字叫MyView.java,继承android.view.View。

新建完MyView.java,Eclipse会马上提醒你需要建立构造方法。

如果以后这个自定义View以后需要被Java代码操作,则需要第一个构造方法,如果这个自定义View以后仅仅是在xml文件中静态摆放则只需要第二个构造方法。如果两者都需要,你可以同时建立这两个构造方法……这里使用第二个。

之后,通过右击空白处->Source->Override/Implement Methods,直接从Eclipse拿来父类onDraw的方法,进行改写。

把View.java的代码改写之后如下:

package com.define_view;import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;public class MyView extends View {private Paint paint;public MyView(Context context, AttributeSet attributeSet) {super(context, attributeSet);// 初始化画笔,任何初始化都不应在onDraw方法中,否则Eclipse会出现太过耗费内存的警告// 构造方法就是用来初始化各种工具的paint = new Paint();}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);paint.setColor(Color.BLUE);// 设置画笔颜色为蓝色canvas.drawRect(10, 10, 100, 100, paint); // 绘制左上角在(10,10),大小为100x100的矩形paint.setColor(Color.RED);// 设置画笔颜色为红色paint.setTextSize(24);// 设置文字大小为24canvas.drawText("我是被画出来的", 10, 120, paint);// 在(10,120)绘制文字}}

之后在res\values\strings.xml改改应用名称,这个app就完成了。自定义View已经在上面的res\layout\activity_main.xml布置。

<?xml version="1.0" encoding="utf-8"?>
<resources><string name="app_name">自定义view</string><string name="action_settings">Settings</string><string name="hello_world">Hello world!</string></resources>

【Android】自定义View、画布Canvas与画笔Paint相关推荐

  1. Android自定义View之Canvas绘制基本图形(二)-- 自定义时钟

    前言 前面一篇主要是巩固Cavas绘制基本图形(如直线,矩形,点等等),今天同样是复习Cavas画圆,圆弧,等等,但是今天会多了一个path,以及Canvas画布的旋转.缩放.平移等等,画布的保存(s ...

  2. android 自定义view使用Canvas实现支付宝咻一咻功能

    昨天写了一篇关于支付宝咻一咻的功能,但是一直想通过使用Canvas来实现它,之前有的地方没想通,今天突然想通了,今天就自定义继承view而不是继承ViewGroup或者容器view来实现,但是也有个缺 ...

  3. android 自定义多边形,Android:自定义view之Canvas绘制图形

    前面讲解了onMeasure,接下来讲解onDraw,onDraw主要就是绘制,也就是我们真正关心的部分,使用的是Canvas绘图. @Override protected void onDraw(C ...

  4. android自定义游戏闯关图,Android自定义View(四) -- Canvas

    本文计划根据HenCoder系列文章进行学习,所以代码风格及博文素材可能会摘自其中. 1 范围裁切 范围裁切有两个方法: clipRect() 和 clipPath().裁切方法之后的绘制代码,都会被 ...

  5. 【Android】自定义View、画家(画布)Canvas与画笔Paint的应用——画图、涂鸦板app的实现

    利用一个简单的画图app来说明安卓的图形处理类与自定义View的应用. 如下图,有一个供用户自己任意画图.涂鸦的app, 这里不做那么花俏了,仅提供黑白两色,但可以改变笔尖的粗细. 实质上这里的橡皮擦 ...

  6. Android自定义View之Paint绘制文字和线

    Android自定义View系列 Android自定义View注意事项 Android自定义View之图像的色彩处理 Android自定义View之Canvas Android自定义View之轻松实现 ...

  7. Android自定义View注意事项

    Android自定义View系列 Android自定义View之Paint绘制文字和线 Android自定义View之图像的色彩处理 Android自定义View之Canvas Android自定义V ...

  8. Android 自定义View —— Canvas

    上一篇在android 自定义view Paint 里面 说了几种常见的Point 属性 绘制图形的时候下面总有一个canvas ,Canvas 是是画布 上面可以绘制点,线,正方形,圆,等等,需要和 ...

  9. 自定义View之Canvas(画布)的详解

    接下来学习一下自定义View之Canvas(画布)的详解 先来看看Canvas常用方法: 功能分类 Canvas常用方法 备注 绘制颜色 drawARGB 通过设置ARGB值绘制颜色 drawRGB ...

最新文章

  1. python opencv卡尺测量边缘距离
  2. Equinix公司在巴西圣保罗开通了一个数据中心
  3. 创建Vue实例传入的options||Vue的生命周期
  4. 没有PARAMETER ID,想 call TRANSACTION
  5. 阿里巴巴为什么主推HSF?比Dubbo有哪些优势?
  6. android动态显示键盘,动态修改EditText输入键盘并隐藏或显示密码
  7. uic计算机课程表,美国UIC大学研究生毕业率能达到多少?申请条件、专业课程汇总...
  8. 探秘盒马机器人餐厅:老外目瞪口呆,90岁奶奶狂点赞
  9. java并发 cpu高_java高并发核心要点|系列5|CPU内存伪共享
  10. Codeweavers的丰田模式
  11. 程序员如何与产品经理优雅的干架
  12. 编程大佬行为准则:一杯茶一包烟,一行代码写一天
  13. PHP 该网页无法正常运作情况原因记录 code 500
  14. 更改WPS云文档保存位置
  15. 深度学习之选择GPU或CPU方法
  16. JZOJ 7066. 【2021.4.24 NOI模拟】ehzeux与圆周(DP)
  17. 基于人脸识别和瞳孔检测的屏幕亮度自适应调节装置
  18. 核心路由器十项性能指标[ITAA网络实验室IT傻博士原创]
  19. 如何快速将AS2.0/AS3.0/fla/swf/ppt等课件产品转化为html5跨平台交互课件。
  20. AnyLogic第二讲行人仿真空间逻辑讲解

热门文章

  1. 2021年高教杯数学建模国赛C题的解题过程附全部代码以及参赛论文(百度网盘)
  2. android控件翻书效果,android ViewPager实现滑动翻页效果实例代码
  3. 程序员编程技术迅速提高终极攻略
  4. 吉林大学计算机专业扩招吗,我国有所“退步严重”的985大学,为了大盲目扩招,已被考生嫌弃...
  5. 漫画:程序员带娃日常(1)
  6. 社区团购小程序怎么做,全流程解析
  7. 人工智能教你识别口红色号
  8. eSIM卡和SIM卡的区别是什么?
  9. 我的ubuntu比windows xp欠缺的地方
  10. java 向量存储_关于java:使用AES-256和初始化向量进行加密