MultiTouchActivity Java代码 收藏代码
  1. packagecom.zhaokai.multitouch;
  2. importandroid.app.Activity;
  3. importandroid.os.Bundle;
  4. importandroid.view.Window;
  5. importandroid.view.WindowManager;
  6. publicclassMultiTouchActivityextendsActivity{
  7. /**Calledwhentheactivityisfirstcreated.*/
  8. /**Calledwhentheactivityisfirstcreated.*/
  9. @Override
  10. publicvoidonCreate(BundlesavedInstanceState){
  11. super.onCreate(savedInstanceState);
  12. //隐藏标题栏
  13. requestWindowFeature(Window.FEATURE_NO_TITLE);
  14. //设置成全屏
  15. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
  16. //设置为上面的MTView
  17. setContentView(newMySurfaceView(this));
  18. }
  19. }


SurfaceView类:

Java代码 收藏代码
  1. packagecom.zhaokai.multitouch;
  2. importandroid.content.Context;
  3. importandroid.graphics.Canvas;
  4. importandroid.graphics.Color;
  5. importandroid.graphics.Paint;
  6. importandroid.view.MotionEvent;
  7. importandroid.view.SurfaceHolder;
  8. importandroid.view.SurfaceHolder.Callback;
  9. importandroid.view.SurfaceView;
  10. publicclassMySurfaceViewextendsSurfaceViewimplementsCallback{
  11. privatestaticfinalintMAX_TOUCHPOINTS=10;
  12. privatestaticfinalStringSTART_TEXT="请随便触摸屏幕进行测试";
  13. privatePainttextPaint=newPaint();
  14. privatePainttouchPaints[]=newPaint[MAX_TOUCHPOINTS];
  15. privateintcolors[]=newint[MAX_TOUCHPOINTS];
  16. privateintwidth,height;
  17. privatefloatscale=1.0f;
  18. publicMySurfaceView(Contextcontext){
  19. super(context);
  20. SurfaceHolderholder=getHolder();
  21. holder.addCallback(this);
  22. setFocusable(true);//确保我们的View能获得输入焦点
  23. setFocusableInTouchMode(true);//确保能接收到触屏事件
  24. init();
  25. }
  26. publicvoidinit(){
  27. //初始化10个不同颜色的画笔
  28. textPaint.setColor(Color.WHITE);
  29. colors[0]=Color.BLUE;
  30. colors[1]=Color.RED;
  31. colors[2]=Color.GREEN;
  32. colors[3]=Color.YELLOW;
  33. colors[4]=Color.CYAN;
  34. colors[5]=Color.MAGENTA;
  35. colors[6]=Color.DKGRAY;
  36. colors[7]=Color.WHITE;
  37. colors[8]=Color.LTGRAY;
  38. colors[9]=Color.GRAY;
  39. for(inti=0;i<MAX_TOUCHPOINTS;i++){
  40. touchPaints[i]=newPaint();
  41. touchPaints[i].setColor(colors[i]);
  42. }
  43. }
  44. @Override
  45. publicbooleanonTouchEvent(MotionEventevent){
  46. intpointerCount=event.getPointerCount();
  47. if(pointerCount>MAX_TOUCHPOINTS){
  48. pointerCount=MAX_TOUCHPOINTS;
  49. }
  50. Canvasc=getHolder().lockCanvas();
  51. if(c!=null){
  52. c.drawColor(Color.BLACK);
  53. if(event.getAction()==MotionEvent.ACTION_UP){
  54. //当手离开屏幕时,清屏
  55. c.drawColor(Color.BLACK);
  56. }else{
  57. //先在屏幕上画一个十字,然后画一个圆
  58. for(inti=0;i<pointerCount;i++){
  59. //获取一个触点的坐标,然后开始绘制
  60. intid=event.getPointerId(i);
  61. intx=(int)event.getX(i);
  62. inty=(int)event.getY(i);
  63. drawCrosshairsAndText(x,y,touchPaints[id],i,id,c);
  64. }
  65. for(inti=0;i<pointerCount;i++){
  66. intid=event.getPointerId(i);
  67. intx=(int)event.getX(i);
  68. inty=(int)event.getY(i);
  69. drawCircle(x,y,touchPaints[id],c);
  70. }
  71. }
  72. getHolder().unlockCanvasAndPost(c);
  73. }
  74. returntrue;
  75. }
  76. privatevoiddrawCrosshairsAndText(intx,inty,Paintpaint,intptr,intid,Canvasc){
  77. c.drawLine(0,y,width,y,paint);
  78. c.drawLine(x,0,x,height,paint);
  79. inttextY=(int)((15+20*ptr)*scale);
  80. c.drawText("x"+ptr+"="+x,10*scale,textY,textPaint);
  81. c.drawText("y"+ptr+"="+y,70*scale,textY,textPaint);
  82. c.drawText("id"+ptr+"="+id,width-55*scale,textY,textPaint);
  83. }
  84. privatevoiddrawCircle(intx,inty,Paintpaint,Canvasc){
  85. c.drawCircle(x,y,40*scale,paint);
  86. }
  87. @Override
  88. publicvoidsurfaceChanged(SurfaceHolderholder,intformat,intwidth,
  89. intheight){
  90. this.width=width;
  91. this.height=height;
  92. if(width>height){
  93. this.scale=width/480f;
  94. }else{
  95. this.scale=height/480f;
  96. }
  97. textPaint.setTextSize(14*scale);
  98. Canvasc=getHolder().lockCanvas();
  99. if(c!=null){//背景黑色
  100. c.drawColor(Color.BLACK);
  101. floattWidth=textPaint.measureText(START_TEXT);
  102. c.drawText(START_TEXT,width/2-tWidth/2,height/2,textPaint);
  103. getHolder().unlockCanvasAndPost(c);
  104. }
  105. }
  106. @Override
  107. publicvoidsurfaceCreated(SurfaceHolderholder){
  108. //TODOAuto-generatedmethodstub
  109. }
  110. @Override
  111. publicvoidsurfaceDestroyed(SurfaceHolderholder){
  112. //TODOAuto-generatedmethodstub
  113. }
  114. }

更多相关文章

  1. 【Android】【基础】获取屏幕宽高
  2. Android:获取网页源代码
  3. Android软键盘之代码改变软键盘状态
  4. android 用代码设置margin属性,textView加粗
  5. Android调用百度地图API实现――实时定位代码
  6. android获取当前Canvas位图代码
  7. Android 代码获取手机ip地址(个人笔记)
  8. Android Studio 添加百分比布局库的依赖报错 第一行代码

随机推荐

  1. android 华为Mate 10 spinner 点击区域bu
  2. Android4.0中修改挂断键(ENDCALL)的默认行
  3. Android(安卓)利用handler传递数据
  4. android 显示 网络图片
  5. Android/Java仿微信按时间长短分类显示时
  6. android 源码的一些修改定制方案
  7. Android:JNI Local Reference Changes in
  8. Android(安卓)7.0调用系统相机返回路径问
  9. Android监听Dialog点击外部区域
  10. Android输入框中提示自动输入内容