Как передать сенсорное событие в другое представление, возвращая True и не используя событие - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь получить координаты касания из представления, содержащего PDF.Представление pdf создается с использованием библиотеки PDFViewer, и если я пытаюсь переопределить функцию onTouch для этого представления, я не могу с ней взаимодействовать.Мое решение состояло в том, чтобы текстовое представление действовало как наложение и получало от него координаты, но если я верну True, чтобы получить также ACTION_MOVE и ACTION_UP, сенсорное событие будет использовано, и взаимодействие с представлением PDF не будет выполнено.Если я возвращаю False, я могу взаимодействовать с PDF, но только ACTION_DOWN регистрируется.

Это мой код:

    pdfView = findViewById(R.id.pdfView);
    pdfView.fromAsset("Hamster_racing.pdf").load();
    final View overlay = findViewById(R.id.overlay);
    overlay.setOnTouchListener(new View.OnTouchListener() {
       @Override
        public boolean onTouch(View v, MotionEvent event) {
           tX = event.getX();
           tY = event.getY();
           tZ = event.getPressure();
           Date curTime = Calendar.getInstance().getTime();
           if(event.getAction() == event.ACTION_DOWN){
               String logstr = curTime + "ID:"+ ID +","+"Action_down, " +"X:"+ String.valueOf(tX) + ", Y:" + String.valueOf(tY) + ", Pressure:" + String.valueOf(tZ);
               Log.i("inputLog", logstr);
               toastThis(logstr);
           }

           if(event.getAction() == event.ACTION_MOVE){
               String logstr = curTime + "ID:"+ ID +","+"Action_move, " +"X:"+ String.valueOf(tX) + ", Y:" + String.valueOf(tY) + ", Pressure:" + String.valueOf(tZ);
               Log.i("inputLog", logstr);
               toastThis(logstr);
           }

           if(event.getAction() == event.ACTION_UP){
               String logstr = curTime + "ID:"+ ID +","+"Action_up, " +"X:"+ String.valueOf(tX) + ", Y:" + String.valueOf(tY) + ", Pressure:" + String.valueOf(tZ);
               Log.i("inputLog", logstr);
               toastThis(logstr);
           }
           MotionEvent eventToPass = event;
           return true;
       }

    });


}

Есть ли способ передать MotionEvent в другое представление безпотреблять его, а также получать все события ACTION?

...