androidのview游戏框架
16lz
2021-01-23
androidのview游戏框架1. view游戏框架介绍,首先需要建立一个Activity。
先走构造方法,然后启动onDraw(). 一般会执行两次onDraw(),跟 onMeature(), onLayout()方法有关。
invalidate() 跟 postInvalidate() 区别:invilidate() 方法不能在当前线程中循环调用执行,这里所说的线程不是系统的主UI线程,而是子线程,postInvalidate() 可以子线程中循环调用执行,如果不在当前view创建线程循环重绘画布就没有区别了。
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 中方法所走的流程。
先走构造方法,然后启动onDraw(). 一般会执行两次onDraw(),跟 onMeature(), onLayout()方法有关。
invalidate() 跟 postInvalidate() 区别:invilidate() 方法不能在当前线程中循环调用执行,这里所说的线程不是系统的主UI线程,而是子线程,postInvalidate() 可以子线程中循环调用执行,如果不在当前view创建线程循环重绘画布就没有区别了。
更多相关文章
- android主线程中Looper.loop()为什么不会造成程序ANR
- 根据百度地图API得到坐标和地址并在地图上显示
- ListView中使用线程实现无限加载
- android利用handler回到主线程
- android(25)(android下实现多线程断点下载)
- android ddms查看线程