תחילת העבודה עם ממשק משתמש שמבוסס על תצוגות

הוספת יחסי התלות

Kotlin

implementation("androidx.media3:media3-ui:1.7.1")

מגניב

implementation "androidx.media3:media3-ui:1.7.1"

PlayerView

הרכיב הכי חשוב הוא PlayerView, תצוגה להפעלת מדיה. ‫PlayerView מציג סרטון, תמונות, כתוביות ועטיפת אלבום במהלך ההפעלה, וגם את אמצעי הבקרה של ההפעלה.

ל-PlayerView יש שיטה setPlayer() לצירוף ולניתוק (על ידי העברת null) של מופעים של Player.

אפשר להשתמש ב-PlayerView להפעלת וידאו, תמונות ואודיו. הוא מציג סרטונים וכתוביות במקרה של הפעלת סרטון, מפות סיביות להפעלת תמונה ויכול להציג יצירות אמנות שנכללות כמטא-נתונים בקובצי אודיו. אפשר לכלול אותו בקובצי הפריסה כמו כל רכיב אחר בממשק המשתמש. לדוגמה, אפשר לכלול PlayerView עם ה-XML הבא:

<androidx.media3.ui.PlayerView
    android:id="@+id/player_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:show_buffering="when_playing"
    app:show_shuffle_button="true"/>

קטע הקוד שלמעלה ממחיש ש-PlayerView מספק כמה מאפיינים. אפשר להשתמש במאפיינים האלה כדי להתאים אישית את ההתנהגות של התצוגה, וגם את המראה והתחושה שלה. לרוב המאפיינים האלה יש שיטות setter מקבילות, שאפשר להשתמש בהן כדי להתאים אישית את התצוגה בזמן הריצה. במסמכי התיעוד של PlayerView מפורטים המאפיינים ושיטות ההגדרה האלה.

כדי לשפר את חוויית המשתמש, מומלץ להוסיף את מאפיין keepScreenOn Android או להגדיר נעילת השהיה, אם אתם משתמשים ב-ExoPlayer. אפשר לבדוק פעולות אחרות שגורמות למכשיר להישאר פעיל בדפים של עבודה ברקע.

android:keepScreenOn="true"

אחרי שמצהירים על התצוגה בקובץ הפריסה, אפשר לחפש אותה בשיטה onCreate של הפעילות:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  // ...
  playerView = findViewById(R.id.player_view)
}

Java

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // ...
  playerView = findViewById(R.id.player_view);
}

אחרי שמאתחלים נגן, אפשר לצרף אותו לתצוגה באמצעות הקריאה setPlayer:

Kotlin

// Instantiate the player.
val player = ExoPlayer.Builder(context).build()
// Attach player to the view.
playerView.player = player
// Set the media item to be played.
player.setMediaItem(mediaItem)
// Prepare the player.
player.prepare()

Java

// Instantiate the player.
player = new ExoPlayer.Builder(context).build();
// Attach player to the view.
playerView.setPlayer(player);
// Set the media item to be played.
player.setMediaItem(mediaItem);
// Prepare the player.
player.prepare();

PlayerControlView

PlayerControlView הוא אחד מתוך PlayerView תת-תצוגות שמכילות את סרגל ההתקדמות ואת הלחצנים לשליטה בהפעלה. הערה: הרכיב PlayerControlView לא מיועד לשימוש כרכיב עצמאי מחוץ ל-PlayerView. אפשר להתאים אותו אישית על ידי הגדרת מאפיינים ב-PlayerView (שיועברו אל PlayerControlView) או על ידי אספקת בקר בהתאמה אישית עם android:id="@id/exo_controller.

בחירת סוג הפלטפורמה

המאפיין surface_type של PlayerView מאפשר להגדיר את סוג הפלטפורמה שבה הסרטון מוצג. הערכים המותרים הם surface_view, ‏ texture_view,‏ spherical_gl_surface_view (ערך מיוחד להפעלה של סרטון פנורמי), ‏ video_decoder_gl_surface_view (לרינדור של סרטון באמצעות תוספים לרינדור) ו-none (להפעלה של אודיו בלבד). בדף הפלטפורמות יש מידע נוסף על סוג הפלטפורמה שכדאי לבחור.