zoukankan      html  css  js  c++  java
  • 【Android】自己定义View、画布Canvas与画笔Paint

    安卓自己定义View事实上非常easy。

    这个View能够像《【Android】利用Java代码布局,button加入点击事件》(点击打开链接)一样。利用Java代码生成一系列的组件。

    也能够配合画布Canvas与画笔Paint来使用。

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


    在reslayoutactivity_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)绘制文字
    	}
    
    }
    
    之后在resvaluesstrings.xml改改应用名称,这个app就完毕了。自己定义View已经在上面的reslayoutactivity_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>


  • 相关阅读:
    web安全性测试用例
    国内可用的网络时间服务器
    selenium需要的浏览器驱动程序下载
    杂齐杂八
    检查是否网络端口占用问题
    python入到到实战--第十章----文件
    python入到到实战--第九章
    python入到到实战--第八章
    python入到到实战--第七章
    python入到到实战--第六章
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/6749020.html
Copyright © 2011-2022 走看看