Я хочу перетащить свои всплывающие окна. Поэтому я попытался реализовать демонстрационное приложение, чтобы перетащить простое всплывающее окно отсюда:
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?
Большое спасибо за любые идеи и за ваш интерес.