androidのview游戏框架1. view游戏框架介绍,首先需要建立一个Activity。
public class MainActivity extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //隐去标题栏(应用程序的名字)          this.requestWindowFeature(Window.FEATURE_NO_TITLE);        //隐去状态栏部分(电池等图标和一切修饰部分)        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);        //设置显示View实例        setContentView(new MyView(this));    }}
然后自定义一个视图类Myview继承View类。
public class MyView extends View {private int textX = 20, textY = 20;//重写父类构造函数public MyView(Context context) {super(context);setFocusable(true);}//重写父类绘图函数@Overrideprotected void onDraw(Canvas canvas) {//创建一个画笔的实例Paint paint = new Paint();//设置画笔的颜色paint.setColor(Color.WHITE);//绘制文本canvas.drawText("Game", textX, textY, paint);super.onDraw(canvas);}        //重写按键抬起事件函数@Overridepublic boolean onKeyUp(int keyCode, KeyEvent event) {return super.onKeyUp(keyCode, event);}@Overridepublic boolean onTouchEvent(MotionEvent event) {//获取用户手指触屏的X坐标赋值与文本的X坐标textX = (int)event.getX();//获取用户手指触屏的Y坐标赋值与文本的Y坐标textY = (int)event.getY();//重绘画布invalidate();//postInvalidate();return true;}}
加入log后,分析程序启动时候,view 中方法所走的流程。androidのview游戏框架_第1张图片
先走构造方法,然后启动onDraw(). 一般会执行两次onDraw(),跟 onMeature(), onLayout()方法有关。
invalidate() 跟 postInvalidate() 区别:invilidate() 方法不能在当前线程中循环调用执行,这里所说的线程不是系统的主UI线程,而是子线程,postInvalidate() 可以子线程中循环调用执行,如果不在当前view创建线程循环重绘画布就没有区别了。

更多相关文章

  1. android主线程中Looper.loop()为什么不会造成程序ANR
  2. 根据百度地图API得到坐标和地址并在地图上显示
  3. ListView中使用线程实现无限加载
  4. android利用handler回到主线程
  5. android(25)(android下实现多线程断点下载)
  6. android ddms查看线程

随机推荐

  1. Android 打勾显示输入的密码
  2. Android 开发环境安装配置手册
  3. Android(安卓)MonkeyRunner测试NotePad例
  4. MainFest.xml android
  5. 20个Android游戏源码,…
  6. js 判读是iPhone还是Android
  7. android tween动画效果
  8. android在google map上画出导航路线图
  9. Android APN
  10. Android免费课程分享