Я использую иммерсивный режим для активности с видеопросмотром внутри.
Моя цель - когда касание экрана, медиа-контроллер и панель управления системой отображаются или исчезают вместе. Теперь все работает нормально.
Проблема в том, что я не могу выйти из активности должным образом. Когда я нажимаю кнопку «Назад» один раз, системная панель просто снова скрывается, и ничего не происходит. Я должен нажать дважды, чтобы выйти из активности. Я не знаю почему.
Вот мой код.
Я использую действие FullScreenActivity() для определения IMMERSIVE MODE:
@TargetApi(Build.VERSION_CODES.KITKAT)
private void FullScreenActivity() {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav // bar
| View.SYSTEM_UI_FLAG_FULLSCREEN// hide status bar;
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
в OnCreate():
@Override
protected void onCreate(Bundle savedInstanceState) {
//getActionBar().setDisplayShowTitleEnabled(false);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
FullScreenActivity();
И в медиа-контроллере я снова определяю IMMERSIVE MODE, потому что, если я этого не сделаю после того, как контроллер покажет, панель действий и системная панель снова вернутся.
private class MyController extends MediaController {
public MyController(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public boolean onTouchEvent(MotionEvent event) {
//........
}
@Override
public void show() {
super.show();
FullScreenActivity();
}
@Override
public void hide() {
super.hide();
FullScreenActivity();
}
}
и, наконец, в onBackPressed() я реализовал свою функцию:
@Override
public void onBackPressed() {
Toast.makeText(getApplicationContext(), "onbackpressed", Toast.LENGTH_SHORT).show();
super.onBackPressed();
if (tgtIDArr != null && tgtIDArr.size() > 0) {
new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("Exit Player!")
.setMessage("Are you sure you want to leave Player?")
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
.......
finish();
}
}).setNegativeButton("No", null).show();
}else{
........
finish();
}
}
Я не знаю почему, но только когда я дважды нажимаю кнопку «Назад», вызывается эта функция onBackPressed().
Кто-нибудь знает, почему? спасибо!!