Я не могу реализовать OnTouchListener для перетаскивания всплывающего окна - PullRequest
0 голосов
/ 03 мая 2018

Я хочу перетащить свои всплывающие окна. Поэтому я попытался реализовать демонстрационное приложение, чтобы перетащить простое всплывающее окно отсюда:

https://questdot.com/android-popup-floating-window-tutorial/

Проблема возникает, когда я добавляю слушателя в представление

popVideospeedView.setOnTouchListener (новый View.OnTouchListener () :

затем View.OnTouchListener () отображается с красным подчеркиванием и предупреждает:

Класс «Анонимный класс, производный от OnTouchListener» должен быть объявлен как абстрактный или реализовать абстрактный метод «onTouch (View, MotionEvent)» в «OnTouchListener»

он также отклоняет @ Override , говоря, что он не может быть переопределен, и также говорит, что не может разрешить MotionEvent

Также библиотека android.view.View.OnTouchListener из:

import android.view.View.OnTouchListener; не используется

Мой код очень похож на код, который запускается по указанной ссылке, а их мини-приложение компилируется и прекрасно работает в Android Studio SDK. Но мой код отклоняет Реализация сенсорного слушателя. Что я могу делать не так?

Код для моей реализации всплывающего окна:

public void functionVideospeedPopupWindow() {
    try {
        LayoutInflater popVideospeedLayoutInflater = (LayoutInflater) LMMoviesMainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View popVideospeedView = popVideospeedLayoutInflater.inflate(R.layout.popvideospeed, null);
        final PopupWindow popVideospeedPopupWindow = new PopupWindow(popVideospeedView, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);

        popVideospeedPopupWindow.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.colorStone)));
        popVideospeedPopupWindow.setOutsideTouchable(false);
        popVideospeedPopupWindow.setFocusable(false);

        Button videospeedCloseButton = (Button) popVideospeedView.findViewById(R.id.popvideospeed_closeButton);
        popVideospeedPopupWindow.showAtLocation(popVideospeedView, Gravity.CENTER, 0, 0); // 8:Margin to the left?. 18 comienza el texto utube

        popVideospeedView.setOnTouchListener(new View.OnTouchListener() {
             @Override
                public boolean onTouch(View v, MotionEvent event) {
                    // event code...
                    return true;
                }
         });

        videospeedCloseButton.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {
                popVideospeedPopupWindow.dismiss();
            }
        });

    } catch (Exception e){}
} // End of functionVideospeedPopupWindow()

Единственное отличие, которое я замечаю в примере, который выполняется, заключается в том, что их код PopUp объявлен в секторе onCreate класса, в то время как код моего окна PopUp находится в методе, который запускается Пользователь позже в приложении. Это существенная разница? если так, то как или почему?

Наконец, в случае, если я добавлю: OnTouchListener (или это View.OnTouchListener ?) В: реализует класса, как в: публичный класс ... и т. Д. ... реализует OnTouchListener , подчеркивает красным и предупреждает:

Класс 'MyMainActivity' должен быть объявлен как абстрактный или реализовывать абстрактный метод 'onTouch (View, MotionEvent)' в 'OnTouchListener'

Я знаю, что для реализации интерфейса OnTouchListener я должен добавить такую ​​структуру:

public boolean onTouch (Просмотр v, событие MotionEvent) {...

но как поступить с всплывающим окном с onTouc h, объявленным вне метода PopUp? Большое спасибо за любые идеи и за ваш интерес.

1 Ответ

0 голосов
/ 04 мая 2018

Решено! Оказывается, Android Studio не добавлял библиотеку для MotionEvent, когда я пытался использовать Alt+Enter. Поэтому я вручную добавил библиотеку : import android.view.MotionEvent;, и теперь View.OnTouchListener не выдает никаких предупреждений. Большое спасибо за вашу помощь, и я надеюсь, что этот случай может помочь кому-то еще преодолеть эту глупую ошибку. Приветствия

...