关闭

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

标签: canvas安卓布局paint自定义view
2446人阅读 评论(0) 收藏 举报
分类:

安卓自定义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>

2
1
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

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

利用一个简单的画图app来说明安卓的图形处理类与自定义View的应用。 如下图,有一个供用户自己任意画图、涂鸦的app, 这里不做那么花俏了,仅提供黑白两色,但可以改变笔尖的粗细。 实质...
  • yongh701
  • yongh701
  • 2015-07-15 09:03
  • 4844

Android 自定义View 画渐变色

这个是在自定义View时才用到。 主要设置paint,为paint设置一个Shader,定义填充色。 填充色主要参数: colors[] positions[] 即每个position定义一个colo...
  • iamshaofa
  • iamshaofa
  • 2013-12-26 10:31
  • 6744

自定义View(二)、Canvas和Paint的用法、BitMap

领卓教育培训第六十六天 自定义View首先我们接着上一篇博客,再写两个自定义View的应用,一个类似电池充电的方形进度条和一个弧形进度条。用自定义View展示一个方形进度条首先创建MyProgress...
  • aiynmimi
  • aiynmimi
  • 2015-09-17 21:37
  • 1912

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

利用一个简单的画图app来说明安卓的图形处理类与自定义View的应用。 如下图,有一个供用户自己任意画图、涂鸦的app, 这里不做那么花俏了,仅提供黑白两色,但可以改变笔尖的粗细。 实质...
  • yongh701
  • yongh701
  • 2015-07-15 09:03
  • 4844

android 中的绘制类Paint 画笔,Canvas 画布,Bitmap 类和BitmapFactory及自定义属性

常用的绘图类是Paint 画笔,Canvas 画布,Bitmap 类和BitmapFactoryPaint类Paint类代表画笔,用来描述图形的颜色和风格,如线宽,颜色,透明度,和填充效果等信 息,...
  • Dr_abandon
  • Dr_abandon
  • 2016-11-23 09:24
  • 1621

android canvas\paint\path简单使用(自定义view必学)

  • 2016-04-01 10:29
  • 6.24MB
  • 下载

Android自定义View之画笔与画布

现在做的这个项目需要一个折线图的功能,当时想着使用第三方库来实现,结果总不能令我满意,只能通过自定义View用画笔去画了,这才发现 妈的 这东西我不会 赶紧去百度下,后来李大神把他画的折线图给我了,我...
  • u010069940
  • u010069940
  • 2016-07-29 17:43
  • 2195

Android自定义View之画笔与画布

现在做的这个项目需要一个折线图的功能,当时想着使用第三方库来实现,结果总不能令我满意,只能通过自定义View用画笔去画了,这才发现 妈的 这东西我不会 赶紧去百度下,后来李大神把他画的折线图给我了...
  • qq_28963915
  • qq_28963915
  • 2016-07-15 15:35
  • 2011

Android自定义View之画笔与画布

在这里边有三个对象非常重要 Paint画笔 Canvas画布 Path路径 不多说了 代码撸起来 1.Paint画笔和Canvas画布 import android.content.Cont...
  • qq_30324295
  • qq_30324295
  • 2017-12-06 12:39
  • 23

android canvas画布 和 Paint画笔

Paint画笔 Paint paint=new Paint(); 1.图形绘制 paint.setAntiAlias(true); //设置画笔为无锯齿 设置是否使用抗锯齿功能,...
  • mingmingaid
  • mingmingaid
  • 2016-09-07 16:47
  • 360
    个人资料
    • 访问:1867844次
    • 积分:25153
    • 等级:
    • 排名:第285名
    • 原创:750篇
    • 转载:0篇
    • 译文:0篇
    • 评论:370条
    文章分类
    【备注】博文GIF动画的录制方法
    先用屏幕录制软件Freez Screen Video Capture录制屏幕,再把得到的AVI,利用GIF Movie Gear转化成GIF
    【友情链接】亲笔小说