Pertanyaan Bagaimana Kita Meninggalkan Mode Gambar-Dalam-Gambar?


Kita punya enterPictureInPictureMode() untuk memindahkan aktivitas dari bentuknya yang sekarang menjadi representasi gambar-dalam-gambar.

Apa sarana yang kita gunakan untuk mengembalikannya, mengembalikan aktivitas ke keadaan normal, selain menghancurkan aktivitas? Tidak ada exitPictureInPictureMode(), leavePictureInPictureMode(), atau janeGetMeOffThisCrazyPictureInPictureModeThing() metode aktif Activity, dan dokumentasi tampaknya tidak mencakup alternatif.

Saya tertarik dengan solusi untuk Android O, untuk mode gambar-dalam-gambar di perangkat seluler, meskipun jika itu berfungsi untuk Android TV juga, luar biasa!

PERBARUI 2017-04-08: Jika yang Anda inginkan adalah kembali ke mode normal ketika pengguna mengklik tombol X untuk keluar dari mode gambar-dalam-gambar, Anda dapat melakukan sesuatu seperti ini:

  @Override
  public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
    super.onPictureInPictureModeChanged(isInPictureInPictureMode);

    if (!isInPictureInPictureMode) {
      getApplication().startActivity(new Intent(this, getClass())
        .addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
    }
  }

Bit-bit kunci harus dipanggil startActivity() untuk memulai aktivitas saat ini lagi dengan FLAG_ACTIVITY_REORDER_TO_FRONT. Dengan singleTask aktivitas, Anda perlu memanggilnya pada beberapaActivity konteks, seperti Application tunggal. Ini tampaknya tidak memicu onStop() atau onStart(), tetapi itu memicu onNewIntent() (dengan apa pun Intent Anda lolos startActivity()).


32
2018-04-02 23:07


asal


Jawaban:


  1. Pindahkan aktivitas ke belakang

    activity.moveTaskToBack(false /* nonRoot */);
    
  2. memulihkan aktivitas ke depan

    Intent startIntent = new Intent(PipActivity.this, PipActivity.class);
    startIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    activity.startActivity(startIntent);
    

7
2018-04-07 23:35



Saya tidak berpikir kegiatan dapat memutuskan untuk meninggalkan mode Gambar-dalam-gambar.

Dari Dokumen pratinjau Android O API:

Aktivitas yang memasuki mode PIP masuk ke status berhenti sementara, tetapi tetap dimulai. Jika pengguna mengetuk aktivitas PIP, sistem menampilkan menu bagi pengguna untuk berinteraksi; tidak ada aktivitas sentuh yang mencapai aktivitas saat berada dalam status PIP.

Aktivitas akan diberitahukan oleh onPictureInPictureModeChanged().


2
2018-04-07 17:40



Dokumentasi resmi kata PIP window muncul dengan menu yang memungkinkan Anda beralih ke layar penuh.

Jendela PIP berukuran 240x135 dp dan ditampilkan di lapisan paling atas dalam satu   dari empat sudut layar, dipilih oleh sistem. Pengguna bisa   memunculkan Menu PIP yang memungkinkan mereka beralih ke jendela PIP untuk   layar penuh, atau tutup jendela PIP, dengan menahan tombol Beranda   pada remote. Jika video lain mulai diputar di layar utama,   Jendela PIP ditutup secara otomatis.

Dan Anda dapat mengganti PIP mengubah acara untuk menangani elemen UI setiap kali pengguna beralih mode PIP.

tautan ke onPictureInPictureModeChanged

@Override
public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
    if (isInPictureInPictureMode) {
        // Hide the controls in picture-in-picture mode.
        ...
    } else {
        // Restore the playback UI based on the playback status.
        ...
    }
}

1
2018-04-02 23:50