В моей деятельности у меня есть ListView, который заполнен ArrayList, и он реализует Android MediaPlayerControl.Вызовите onTouchEvent() перед listView
MusicController использует поведение по умолчанию, поэтому оно исчезает после 3000 мс, и я хотел бы показывать его в любое время, когда пользователь коснется экрана один раз. В момент, когда пользователь касается экрана, выбирается элемент в ListView. Я хотел бы просто вызвать controller.show(). К сожалению, код ниже не работает. Он просто активирует любой элемент, выбранный в списке.
Нужно ли добавить какой-либо накладной к моей деятельности? Мне просто нужен какой-то «супер-сенсорный прослушиватель», который слушает событие касания в любом месте экрана, отвечает с помощью controller.show().
Я добавил это к моему MainActivity:
import android.widget.MediaController.MediaPlayerControl;
import android.view.MotionEvent;
private MusicController controller;
@Override
public boolean onTouchEvent(MotionEvent event) {
//the MediaController will hide after 3 seconds - tap the screen to make it appear again
controller.show();
return false;
}
EDIT: Это после того, как я попытался, что Маркус предложил
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:id="@+id/wholeScreenLayout">
<ListView
android:id="@+id/media_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</ListView>
mainActivity. java-фрагмент. Добавлено в OnCreate() метод
// когда пользователь касается экрана показывает управление
RelativeLayout wholeScreen = (RelativeLayout) findViewById(R.id.wholeScreenLayout);
wholeScreen.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
controller.show();
return false;
}
});
Я думаю, вы можете установить 'id' на свой макет, а затем установить' OnTouchListener' в свой макет приложения enitre. – Marcus
@ Маркус - ты дал мне представление, но я боюсь, что это не сработало. Я создал новый метод pubic void showControls (View view) {controller.show()} и создал атрибут onClick в моем RelativeLayout. Возможно, мне нужно вместо этого добавить onClick? Тем не менее мои ограниченные знания об Android затормозили меня. Я буду исследовать, как реализовать OnTouchListener. Благодарим за ваше предложение. – user43633
Я добавил ответ, который даст вам подсказку о том, как делать то, что вы описали. Попробуйте и дайте мне знать! – Marcus