Android中的View简介

原创 2016年05月30日 15:16:09

     View类是Android的一个超类,找个类几乎包含了所有的屏幕类型。每一个View都有一个拥有绘图的画布,这个画布可以进行任意扩展。

在游戏开发中也可以自定义View,这个画布功能更能满足我们在游戏开发中的需要。在Android中任何一个View类都只需要重写onDraw方法

来实现界面显示,自定义的师徒可以是复杂的3D实现,也可以是非常简单的文本形式等。

    Android中提供了onKeyUp,onKeyDown,onKeyMultiple,onKeyPrelme,onTouchEvent等方法,可以轻松处理游戏中的事件信息。


   下面是一个例子,画了一个在屏幕上不停变换颜色的矩形(当然你也可以画圆形。。),我们定义一些事件可以通过模拟器的上下键调节矩形

的位置,比如上移或下移。

    效果图:




下面是代码

  自定义GameView类:

public class GameView extends View {

	int miCount=0;
	int y=0;
	
	public GameView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}
	
	//画图类
	@Override
	protected void onDraw(Canvas canvas) {
		if(miCount<100){
			miCount++;
		}else {
			miCount=0;
		}
		//绘图
		Paint mPaint=new Paint();
		
		switch(miCount%4){
		case 0:
			mPaint.setColor(Color.BLUE);
		    break;
		case 1:
			mPaint.setColor(Color.GREEN);
		    break;
		case 2:
			mPaint.setColor(Color.RED);
			break;
		case 3:
			mPaint.setColor(Color.WHITE);
			break;
	    default:
	    	mPaint.setColor(Color.WHITE);
				break;
		}
		
		//绘制矩形
		canvas.drawRect((320-80)/2,y,(320-80)/2+80,y+40, mPaint);
	}
	
}

刷新视图的类:

public class MainActivity extends Activity {

	private static final int REFRESH = 0X00001;
	// 声明GameView类对象
	private GameView mGameView = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 实例化GameView对象
		this.mGameView = new GameView(this);
		// 设置显示自定义的View
		setContentView(mGameView);
		// 开始线程
		new Thread(new GameThread()).start();
	}

	Handler mHandler = new Handler() {
		// 接收到消息后处理
		public void handleMessage(android.os.Message msg) {
			switch (msg.what) {
			case MainActivity.REFRESH:
				mGameView.invalidate();
				break;
			}
			super.handleMessage(msg);
		}
	};

	class GameThread implements Runnable {

		@Override
		public void run() {
			while (!Thread.currentThread().isInterrupted()) {
				Message message = new Message();
				message.what = MainActivity.REFRESH;
				// 发送消息
				mHandler.sendMessage(message);
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}

	}

	// 触笔事件
	public boolean onTouchEvent(MotionEvent event) {

		return true;
	}

	// 按键按下事件
	public boolean onKeyDown(int keyCode, KeyEvent event) {

		return true;
	}

	// 按键弹起事件
	@Override
	public boolean onKeyUp(int keyCode, KeyEvent event) {
		switch (keyCode) {
		// 上方向键
		case KeyEvent.KEYCODE_DPAD_UP:
			mGameView.y -= 3;
			break;
		// 下方向键
		case KeyEvent.KEYCODE_DPAD_DOWN:
			mGameView.y += 3;
			break;
		}
		return false;
	}
	
	@Override
	public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) {
		
		return true;
	}

}



                                                      

                                                                                                                                                                                                                                                                    注:根据网络资料总结编写                                       

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

Android中的自绘View的那些事儿(三)之 颜色渐变渲染器:LinearGradient、RadialGradient 和 SweepGradient的简介

我们在上一篇文章《Android中的自绘View的那些事儿(二)之 Shader简介和BitmapShader位图渲染器的使用》介绍了渲染器基类Shader以及它五个子类中的BitmapShader位...
  • lyz_zyx
  • lyz_zyx
  • 2017年11月27日 20:09
  • 34

Android自定义View实现简介

Android系统原生的为我们提供很多的功能强大的基础view控件,但即使如此,很多时候,他们还是不能够满足我们的需求,那么我们就需要通过自定义View来实现自己的view。在Android系统种已经...
  • ccbuluo
  • ccbuluo
  • 2016年09月25日 19:38
  • 396

Android开发中的View简介

1          Views 1.1         一个View是屏幕上的用来展示内容的长方形。它可以是图片,文本或者按钮。 1.2        这些View的命名按照...
  • txgrzy
  • txgrzy
  • 2016年04月23日 08:08
  • 51

Android View绘制和显示原理简介

现在越来越多的应用开始重视流畅度方面的测试,了解Android应用程序是如何在屏幕上显示的则是基础中的基础,就让我们一起看看小小屏幕中大大的学问。这也是我下篇文章——《Android应用流畅度测试分析...

Android中的自绘View的那些事儿(二)之 Shader渲染器和BitmapShader位图渲染器的简介

Shader Shader直译是着色器,或者也叫颜色渲染器。Android中对应有Shader类,它是一个基类对象,它在图形绘制过程中返回一段颜色值,通过调用Paint.setShader(Shade...
  • lyz_zyx
  • lyz_zyx
  • 2017年11月27日 19:53
  • 42

Android中的自绘View的那些事儿(四)之 ComposeShader组合渲染器的简介

我们已经在之前的文章:  《Android中的自绘View的那些事儿(二)之Shader渲染器和BitmapShader位图渲染器的简介》 《Android中的自绘View的那些事儿(三)之 颜色渐...
  • lyz_zyx
  • lyz_zyx
  • 2017年11月28日 17:38
  • 49

Android中的自绘View的那些事儿(五)之 遮罩滤镜:BlurMaskFilter 和 EmbossMaskFilter 的简介

MaskFilter MaskFilter翻译过来叫遮罩滤镜,它可以为Paint边缘的alpha通道应用转换。目前有两个子类:BlurMaskFilter 和 EmbossMaskFilter。它们...
  • lyz_zyx
  • lyz_zyx
  • 2017年12月12日 17:21
  • 18

android界面View简介及android界面绘制过程

本文转自:http://www.2cto.com/kf/201109/104633.html 2.1.0 View及ViewGroup类关系 Android View和ViewGroup从组成架构...

view变化监听器ViewTreeObserver的使用简介

ViewTreeObserver是一个用来监听视图树的全局改变的观察者类,这种改变事件不仅仅局限于整个视图树的布局,还包括绘制、触摸模式的改变等事件。ViewTreeObserver在我们日常开发中其...
  • Wang_WY
  • Wang_WY
  • 2017年08月29日 09:34
  • 661

自定义View简介 - onMeasure,onDraw,自定义属性

1. 概述  自定义View这东西很多哥们比较畏惧,如果你认为他比较难关键还是缺少实践写得少;如果你认为很简单,那可能是你没有遇到过那些奇葩的效果,需要高等数学和各种算法。当然我想要做的就是让大家觉得...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中的View简介
举报原因:
原因补充:

(最多只允许输入30个字)