如何在两个片段之间共享onTouch MotionEvent?

时间:2018-05-02 23:21:48

标签: android android-fragments ontouchlistener

steps in application

我有两个片段。首先是一直运行(第一个屏幕)。当我点击并按住TextView时,我添加了第二个片段(第二个屏幕)。然后仍然抱着我拖动指针在第二个片段(第三个屏幕)拥有的红色TextView。当我输入红色TextView时,我想增加其alpha值。然后,当我ACTION_UP第二个片段破坏并点击第一个片段中的TextView时,消失(第四个屏幕)。

我的问题是如何在红色TextView的第二个片段中管理onTouchListener?

我试着听第二个片段中的onTouchListener甚至回复,但事实并非如此。

//second fragment
...
deleteTextView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent event) {
            event = MotionEvent.obtainNoHistory(event);

            //here testing if onTouch works
            if(event.getAction()>=0) {
                Log.v("UWAGA ZOOM", Integer.toString(event.getAction()));
                return true;
            }
            if(event.getAction() == MotionEvent.ACTION_HOVER_ENTER){
                deleteArea.setAlpha(1.0f);
                return true;
            }
            if(event.getAction() == MotionEvent.ACTION_HOVER_EXIT){
                deleteArea.setAlpha(0.5f);
                return true;
            }
            return false;
        }
    });

但来自第一个片段的onTouchListener响应!

//first fragment
...
linearLayout2.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            //here testing if onTouch works
            if(event.getAction()>=0) {
                Log.v("UWAGA", Integer.toString(event.getAction()));
                return true;
            }

            if(event.getAction() == MotionEvent.ACTION_DOWN){
                Fragment dayEventZoomFragment = new DayEventZoomFragment();
                FragmentManager fragmentManager = getFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.setCustomAnimations(android.R.animator.fade_in,
                        android.R.animator.fade_out);

                Bundle bundle = new Bundle();
                bundle.putString("event_title", dayEvent.getTitle());
                bundle.putInt("event_hour", dayEvent.getHour());
                dayEventZoomFragment.setArguments(bundle);

                fragmentTransaction.add(R.id.fragment_layout, dayEventZoomFragment, "dayEventZoomFragment").addToBackStack("fragmentDay")
                        .commit();
                return true;
            }

            if(event.getAction() == MotionEvent.ACTION_UP){
                getActivity().dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
                getActivity().dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));
                return true;
            }
            return false;
        }
    });

所以当我像第三个ss一样拖动指针时,我只得到LOG“UWAGA”并且我没有得到LOG“UWAGA ZOOM”。 如何在第二个事件开始之前仍然将手指放在屏幕上时,如何开始在第二个片段中监听事件?

0 个答案:

没有答案