【Android】自定义View、画布Canvas与画笔Paint
安卓自定义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相关推荐
- Android自定义View之Canvas绘制基本图形(二)-- 自定义时钟
前言 前面一篇主要是巩固Cavas绘制基本图形(如直线,矩形,点等等),今天同样是复习Cavas画圆,圆弧,等等,但是今天会多了一个path,以及Canvas画布的旋转.缩放.平移等等,画布的保存(s ...
- android 自定义view使用Canvas实现支付宝咻一咻功能
昨天写了一篇关于支付宝咻一咻的功能,但是一直想通过使用Canvas来实现它,之前有的地方没想通,今天突然想通了,今天就自定义继承view而不是继承ViewGroup或者容器view来实现,但是也有个缺 ...
- android 自定义多边形,Android:自定义view之Canvas绘制图形
前面讲解了onMeasure,接下来讲解onDraw,onDraw主要就是绘制,也就是我们真正关心的部分,使用的是Canvas绘图. @Override protected void onDraw(C ...
- android自定义游戏闯关图,Android自定义View(四) -- Canvas
本文计划根据HenCoder系列文章进行学习,所以代码风格及博文素材可能会摘自其中. 1 范围裁切 范围裁切有两个方法: clipRect() 和 clipPath().裁切方法之后的绘制代码,都会被 ...
- 【Android】自定义View、画家(画布)Canvas与画笔Paint的应用——画图、涂鸦板app的实现
利用一个简单的画图app来说明安卓的图形处理类与自定义View的应用. 如下图,有一个供用户自己任意画图.涂鸦的app, 这里不做那么花俏了,仅提供黑白两色,但可以改变笔尖的粗细. 实质上这里的橡皮擦 ...
- Android自定义View之Paint绘制文字和线
Android自定义View系列 Android自定义View注意事项 Android自定义View之图像的色彩处理 Android自定义View之Canvas Android自定义View之轻松实现 ...
- Android自定义View注意事项
Android自定义View系列 Android自定义View之Paint绘制文字和线 Android自定义View之图像的色彩处理 Android自定义View之Canvas Android自定义V ...
- Android 自定义View —— Canvas
上一篇在android 自定义view Paint 里面 说了几种常见的Point 属性 绘制图形的时候下面总有一个canvas ,Canvas 是是画布 上面可以绘制点,线,正方形,圆,等等,需要和 ...
- 自定义View之Canvas(画布)的详解
接下来学习一下自定义View之Canvas(画布)的详解 先来看看Canvas常用方法: 功能分类 Canvas常用方法 备注 绘制颜色 drawARGB 通过设置ARGB值绘制颜色 drawRGB ...
最新文章
- python opencv卡尺测量边缘距离
- Equinix公司在巴西圣保罗开通了一个数据中心
- 创建Vue实例传入的options||Vue的生命周期
- 没有PARAMETER ID,想 call TRANSACTION
- 阿里巴巴为什么主推HSF?比Dubbo有哪些优势?
- android动态显示键盘,动态修改EditText输入键盘并隐藏或显示密码
- uic计算机课程表,美国UIC大学研究生毕业率能达到多少?申请条件、专业课程汇总...
- 探秘盒马机器人餐厅:老外目瞪口呆,90岁奶奶狂点赞
- java并发 cpu高_java高并发核心要点|系列5|CPU内存伪共享
- Codeweavers的丰田模式
- 程序员如何与产品经理优雅的干架
- 编程大佬行为准则:一杯茶一包烟,一行代码写一天
- PHP 该网页无法正常运作情况原因记录 code 500
- 更改WPS云文档保存位置
- 深度学习之选择GPU或CPU方法
- JZOJ 7066. 【2021.4.24 NOI模拟】ehzeux与圆周(DP)
- 基于人脸识别和瞳孔检测的屏幕亮度自适应调节装置
- 核心路由器十项性能指标[ITAA网络实验室IT傻博士原创]
- 如何快速将AS2.0/AS3.0/fla/swf/ppt等课件产品转化为html5跨平台交互课件。
- AnyLogic第二讲行人仿真空间逻辑讲解
热门文章
- 2021年高教杯数学建模国赛C题的解题过程附全部代码以及参赛论文(百度网盘)
- android控件翻书效果,android ViewPager实现滑动翻页效果实例代码
- 程序员编程技术迅速提高终极攻略
- 吉林大学计算机专业扩招吗,我国有所“退步严重”的985大学,为了大盲目扩招,已被考生嫌弃...
- 漫画:程序员带娃日常(1)
- 社区团购小程序怎么做,全流程解析
- 人工智能教你识别口红色号
- eSIM卡和SIM卡的区别是什么?
- 我的ubuntu比windows xp欠缺的地方
- java 向量存储_关于java:使用AES-256和初始化向量进行加密