Android的View类使用
来源:互联网 发布:intellij java doc 编辑:程序博客网 时间:2024/05/22 10:10
View类是Android的一个超类,这个类几乎包含了所有的屏幕类型。每一个View都有一个用于绘画的画布,这个画布可以进行任意的扩展。在Android中,任何一个View类都只需要重写onDraw方法来实现界面显示,视图可以显示简单的文本,也可以显示复杂的3D。游戏的核心就是不断的刷新界面和绘制界面,Android提供了invalidate方法来实现界面的刷新,在Android中经常借助Handler实现界面的刷新。废话就不多说了,请下面的例子。
效果图如下:
入口Activity代码如下:
package nyl.viewdemo1; import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message; public class MainActivity extends Activity {private GameView mGameView;public static final int REFRESH = 0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //显示GameView游戏窗体 mGameView = new GameView(this); setContentView(mGameView); //开启线程 new Thread(new GameThread()).start(); } /** * 线程的实现有两种方式: * 第一:实现Runnable接口,重新run()方法; * 第二:继承Thread类,重写run()方法; * @author Administrator */ class GameThread implements Runnable {@Overridepublic void run() {/** * currentThread() 返回当前正在执行的线程的对象的引用 * isInterrupted() 测试线程是否中断 */while (!Thread.currentThread().isInterrupted()) {//发送消息Message message = new Message();message.what = REFRESH;mHandler.sendMessage(message);try {//等待一百毫秒Thread.sleep(100);} catch (InterruptedException e){Thread.currentThread().interrupt();}}} } Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {//处理消息switch (msg.what){case REFRESH://刷新游戏窗体mGameView.invalidate();break;}super.handleMessage(msg);} };}
游戏界面代码如下:
package nyl.viewdemo1; import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.view.View; public class GameView extends View {private int miCount = 0;int y = 0;public GameView(Context context) {super(context);} @Overrideprotected void onDraw(Canvas canvas) {super.onDraw(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;}//绘制矩形canvas.drawRect(200, 100, 400, 300, mPaint);}}
- Android的View类使用
- Android的View类使用
- Android中View类DrawingCache的使用
- Android 中View类DrawingCache的使用
- Android 中View类DrawingCache的使用
- Android 中View类DrawingCache的使用
- Android 中View类DrawingCache的使用
- Android 中View类DrawingCache的使用
- Android 自定义View的使用
- Android自定义View的使用
- android!自定义view的使用
- Android-自定义View的使用
- android的XML布局文件上使用自定义View类
- [Android基础知识] 之十一: View类的原理与使用
- 【view】Android中自定义View的MeasureSpec使用
- 使用android.view.TouchDelegate扩大View的触摸点击区域
- 使用android.view.TouchDelegate扩大View的触摸点击区域
- Android surface view 的一些使用
- 重新规划,希望是转机
- RHL配置VNC Server
- 诺基亚之死
- 藏书阁
- 如何制定有效的产品测试计划
- Android的View类使用
- 我们为何需要用户角色
- 功能和界面测试用例设计方法整理
- C#添加删除IIS的主机头
- Android类似于滚动的通知栏实现
- 阅读代码要像阅读犹太法典
- 电脑开机基本提示语全解
- CEGUI加载layout文件出错
- Java中的DAO设计模式应用举例 ------> 来自Java WEB 开发实战经典