【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.MyView
        android: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();

	}

	@Override
	protected 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);// 设置文字大小为24
		canvas.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>

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 06:18:37

【Android】自定义View、画布Canvas与画笔Paint的相关文章

【Android】自己定义View、画布Canvas与画笔Paint

安卓自己定义View事实上非常easy. 这个View能够像<[Android]利用Java代码布局,button加入点击事件>(点击打开链接)一样.利用Java代码生成一系列的组件. 也能够配合画布Canvas与画笔Paint来使用. 以下用一个样例来说明.例如以下图,有一个自己定义布局View.里面摆放着,利用画布Canvas与画笔Paint绘制出来的蓝色正方形与红色文字. 在res\layout\activity_main.xml中.直接像摆放安卓固有组件一样,能够直接使用这个我定义组件

Android自定义View和Canvas绘图解析

自定义view的流程分为measure. layout.draw三个主要步骤,今天我们通过源码来分下下measure的过程 我们从顶级view开始,顶级view即DecorView, view的事件都是先经过这个DecorView, 接下来我们来看看这个DecorView的MeasureSpec的创建过程: ViewRoot 对应 ViewRootImpl类,  是连接WindowManager 和 DecorView的纽带,   进入ViewRootImpl中,查看measureHierarc

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

利用一个简单的绘图app来说明安卓的图形处理类与自己定义View的应用. 例如以下图,有一个供用户自己随意绘图.涂鸦的app. 这里不做那么花俏了,仅提供黑白两色.但能够改变笔尖的粗细. 实质上这里的橡皮擦就是白色的画笔,根本不用使用到画笔的setXfermode方法,要搞一堆复杂的project. 用户画完图之后能够保存图像.图像的文件名称是当前的时间.保存的位置是sdcard的根文件夹. 制作步骤例如以下: 1.先设置好字体文件res\values\strings.xml,主要是app的名称

Android自定义View【实战教程】5??---Canvas详解及代码绘制安卓机器人

友情链接: Canvas API Android自定义View[实战教程]3??--Paint类.Path类以及PathEffect类详解 神马是Canvas 基本概念 Canvas:可以理解为是一个为我们提供了各种工具的画布,我们可以在上面尽情的绘制(旋转,平移,缩放等等).可以理解为系统分配给我们一个一个内存空间,然后提供了一些对这个内存空间操作的方法(API), 实际存储是在下面的bitmap. 两种画布 这里canvas可以绘制两种类型的画图,分别是view和surfaceView. V

android 自定义view 前的基础知识

本篇文章是自己自学自定义view前的准备,具体参考资料来自 Android LayoutInflater原理分析,带你一步步深入了解View(一) Android视图绘制流程完全解析,带你一步步深入了解View(二) Android视图状态及重绘流程分析,带你一步步深入了解View(三) Android自定义View的实现方法,带你一步步深入了解View(四) 这位大哥的系列博文,相当于自己看这些的一个思考吧. 一.首先学layoutInflater. 相信接触Android久一点的朋友对于La

Android 自定义View的一些总结

Android 自定义View的一些总结 Paint与Canvas 下面先说下Paint的基本设置函数: paint.setAntiAlias(true);//抗锯齿功能 paint.setColor(Color.RED); //设置画笔颜色 paint.setStyle(Style.FILL);//设置填充样式 paint.setStrokeWidth(30);//设置画笔宽度 paint.setShadowLayer(10, 15, 15, Color.GREEN);//设置阴影 (1)vo

Android 自定义View视图

创建全新的视图将满足我们独特的UI需求. 本文介绍在指南针开发中会用到的罗盘的界面UI,通过继承View类实现的自定义视图,以此来深刻了解自定义视图. 实现效果图: 源代码: 布局文件activity_main(其中CompassView继承View类): <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.

Android自定义View——圆形进度条式按钮

介绍 今天上班的时候有个哥们问我怎么去实现一个按钮式的进度条,先来看看他需要实现的效果图. 和普通的圆形进度条类似,只是中间的地方有两个状态表示,未开始,暂停状态.而且他说圆形进度的功能已经实现了.那么我们只需要对中间的两个状态做处理就行了. 先来看看实现的效果图: 上面说了我们只需要处理中间状态的变化就可以了,对于进度的处理直接使用了弘洋文章中实现: http://blog.csdn.net/lmj623565791/article/details/43371299 下面开始具体实现. 具体实

android 自定义View【2】对话框取色&amp;色盘取色的实现

android 自定义View[2]对话框取色&色盘取色的实现    上一篇文章基本介绍了android自定义view的流程:继承view,复写view的一些方法.实现简单的自定义view.这篇文章主要介绍的是系统对话框取色功能,然后顺便介绍升级版,色盘取色[类似于ps中的吸管,对图片点击相应位置,获取那个位置的颜色]. 一.概述:通过该例子了解以下内容: 1.进一步了解android 自定义view. 2.知道如何获取图片上的颜色值. 3.监听屏幕touch,实现移动的时候自动取色.[onDr