android - 多点触控 Android - 一个手指使用一半屏幕,另一个手指使用一半屏幕

标签 android multi-touch

嗨,我正在制作一款分屏游戏,但我不知道如何降低控件。现在,如果只有一个人触摸屏幕,它们就可以正常工作,但一旦多人触摸屏幕,第一个触摸的人就是唯一可以控制的人。所以我需要实现多点触控。我不知道该怎么做,所以一旦一根手指向下控制屏幕上半部分的对象,另一根手指就可以放下来控制屏幕的下半部分。我应该怎么做?

编辑: 我更改了它,但它仍然不起作用,但有人能告诉我为什么吗

我的尝试无效:

  public boolean onTouch(View v, MotionEvent event){
      //needs multitouch
      if(checkInGame()){

                if(event.getY() < this.getMeasuredHeight() / 2){  
                    pointerId1 = event.getPointerId(event.getActionIndex());
                }else{
                    pointerId2 = event.getPointerId(event.getActionIndex());    
                }

                switch(event.getAction() & MotionEvent.ACTION_MASK){

                    case MotionEvent.ACTION_MOVE:{

                        if(event.getPointerId(event.getActionIndex()) == pointerId1){  
                            Log.d("Touch","Move1");
                              int pointerIndex = event.getActionIndex();
                          int moveX = 0;
                          int moveY = 0;
                          moveX = (int) event.getX(pointerIndex) - sX;
                          moveY = (int) event.getY(pointerIndex) - sY;

                          ship1.setLoc(moveX, moveY);
                          sX = sX + moveX;
                          sY = sY + moveY;
                        }else if(event.getPointerId(event.getActionIndex()) == pointerId2){
                              int pointerIndex = event.getActionIndex();
                            Log.d("Touch","Move2");
                              int moveX = 0;
                              int moveY = 0;
                              moveX = (int) event.getX(pointerIndex) - sX2;
                              moveY = (int) event.getY(pointerIndex) - sY2;

                              ship2.setLoc(moveX, moveY);
                              sX2 = sX2 + moveX;
                              sY2 = sY2 + moveY;
                        }
                          return true;


                    }
                      case MotionEvent.ACTION_DOWN: {

                            if(event.getPointerId(event.getActionIndex()) == pointerId1){
                                Log.d("Touch","Top1");
                                int pointerIndex = event.getActionIndex();
                                sX = (int) event.getX(pointerIndex);
                                sY = (int) event.getY(pointerIndex);
                            }else if(event.getPointerId(event.getActionIndex()) == pointerId2){
                                int pointerIndex = event.getActionIndex();
                                Log.d("Touch","Bottom1");
                                 sX2 = (int) event.getX(pointerIndex);
                                 sY2 = (int) event.getY(pointerIndex);
                            }
                            return true;
                        }

                      case MotionEvent.ACTION_POINTER_DOWN:{
                            if(event.getPointerId(event.getActionIndex()) == pointerId1){
                                Log.d("Touch","Top2");
                                int pointerIndex = event.getActionIndex();
                                sX = (int) event.getX(pointerIndex);
                                sY = (int) event.getY(pointerIndex);
                            }else if(event.getPointerId(event.getActionIndex()) == pointerId2){
                                int pointerIndex = event.getActionIndex();
                                Log.d("Touch","Bottom2");
                                 sX2 = (int) event.getX(pointerIndex);
                                 sY2 = (int) event.getY(pointerIndex);
                            }
                            return true;
                      }


                }

最佳答案

您可能希望通过其 ID 跟踪每个指针。在指针向下时,检查 ID,这样您就知道 ID 为 1 的指针正在控制对象 1。请阅读这篇 Android 博客文章,它可能会有所帮助:http://android-developers.blogspot.co.uk/2010/06/making-sense-of-multitouch.html

关于android - 多点触控 Android - 一个手指使用一半屏幕,另一个手指使用一半屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10543737/

相关文章:

android - 如何从第 3/4/5 fragment 返回到根 fragment ?

android - 使用 Fragments 为 Android 中的每个选项卡单独返回堆栈

android - DeviceInfo native 模块未正确安装在 React Native 中

android - 如何将本地c++共享库.so导入Android studio 1.5?

ios - 如何在不产生触摸事件的情况下从触摸屏上抬起手指?

android - Gradle 性能是否与 CPU 内核数量成比例?

ios - 使用 swift 2 消除 ios 8.4 中连续绘制期间的滞后延迟

ios - 为多点触控继承 UIControl 的 endTracking

iphone - 有什么方法可以确定触摸运动的速度

android - MotionEvent.ACTION_POINTER_DOWN 不检测位置