android 自定义View研究(一)

对于一个手机的用户体验来说最重要的部分莫过于界面了,为此Android中提供了通过XML布局的方式来进行布局,各种布局方式和控件的使用就不多说了,如果有不会的可以参考下这个一个Demo让你掌握所有的控件。对于布局来说,个人感觉只用XML布局会有一定的局限性。所以就有了通过继承View以及其他控件来实现的Android布局。


首先让我们理解下Android平台中的显示类是View,但是还提供了底层图形类android.graphics,今天所说的这些均为graphics底层图形接口。

Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。
Drawable - 作为Android平下通用的图形对象,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。
Canvas - 名为画布,我们可以看作是一种处理过程,使用各种方法来管理Bitmap、GL或者Path路径,同时它可以配合Matrix矩阵类给图像做旋转、缩放等操作,同时Canvas类还提供了裁剪、选取等操作。
Paint - 我们可以把它看做一个画图工具,比如画笔、画刷。他管理了每个画图工具的字体、颜色、样式。


下面通过一个简单例子来演示一下


activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <com.example.customview01.MyView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</RelativeLayout>


MainActivity.java

package com.example.customview01;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	
}


自定义MyView.java

package com.example.customview01;

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 mPaint; //画笔,包含了画几何图形、文本等的样式和颜色信息  
	
	public MyView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}

	public MyView(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		
		mPaint = new Paint();
		mPaint.setColor(Color.RED);	//设置画笔的颜色
		
		canvas.drawRect(0, 0, 300, 300, mPaint);
		
		mPaint.setColor(Color.GREEN);
//		mPaint.setColor(Color.parseColor("#868686"));
		mPaint.setAntiAlias(true);
		mPaint.setTextSize(30);
		
		canvas.drawText("第一次使用画笔", 50, 150, mPaint);
		
	}
}


运行效果图:

android 自定义View研究(一)_第1张图片






你可能感兴趣的:(canvas,自定义view)