Подтвердить что ты не робот

Как обрабатывать сенсорные события на фрагменте?

Я создаю интерфейс, где мне нужно обрабатывать события касания. В частности, я мог бы включить их только в ограниченную область в фрагменте. Чтобы лучше понять проблему, соблюдать стандарты и цель моего приложения, я планировал ящик навигации, который предполагает наличие большого количества фрагментов (вместо действий). Активность с сенсорными событиями выполняется довольно легко, с другой стороны, я прочитал в Интернете, что с фрагментами может стать проблемой.

Мое приложение на архитектурном уровне выглядит следующим образом: - MainActivity.java - NavigationDrawer.java - TestFragment.java(для одного фрагмента теперь, ожидая решения проблемы)

Я не нашел решения или учебника, в котором объясняется, как это сделать (или как обходиться с проблемой). Затем я прошу вас, упрощая задачу только " включить событие касания в фрагменте (getPressure() в этом случае). Ниже приведены некоторые фрагменты кода, которые могут помочь решить проблему:

TestFragment

public class TestFragment extends Fragment {
    private static final String ARG_SECTION_NUMBER = "section_number";

    public static TestFragment newInstance(int sectionNumber) {
        TestFragment fragment = new TestFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

    public TestFragment() {}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_test, container, false);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // Here I want to return the press value (0 to 1)
    }
}

Как связать слушателя со всем фрагментом? А в случае конкретной области? Наконец, как я могу вернуть значение давления на экран?

Большое вам спасибо за советы!:)

4b9b3361

Ответ 1

Я не уверен, понял ли я вашу проблему, но я постараюсь ответить на это. Поэтому для получения сенсорных событий на фрагменте я бы сделал следующее:

- в вашем фрагменте onCreateView:

View view = inflater.inflate(R.layout.fragment_test, container, false);

    view.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {

                if(event.getAction() == MotionEvent.ACTION_MOVE){
                    //do something
                }
                return true;
            }
    });

//here the rest of your code

return view;

и вы можете проверить разные MotionEvents в onTouch, например:

MotionEvent.ACTION_DOWN, MotionEvent.ACTION_UP,...