So verbergen Sie Steuerschaltflächen in ExoPlayer2

Lesezeit: 3 Minuten

Benutzeravatar von Nurlan Kanimetov
Nurlan Kanimetow

So verstecken Sie alle Controller im ExoPlayer2 (Start-Button, Pause usw.), die nicht vorhanden waren und der Bildschirm immer voll war.

Ich habe geschaut, es gibt simpleExoPlayerView.setUseController(true) Methode;

Aber es deaktiviert den Player …

public void setUseController (boolean useController) {
    this.useController = useController;
if (useController) {
      controller.setPlayer(player);
    } else {
      controller.hide();
      controller.setPlayer(null);
    }
}

Wie verstecke oder lösche ich diese Komponenten?

  • Überprüfen Sie, ob dies für Jetpack Compose hilfreich sein kann: stackoverflow.com/a/71977304/3974530

    – Wahnsinnige Katze

    23. April 2022 um 6:14 Uhr

Benutzeravatar von Junsu Lee
Junsu Lee

ExoPlayer-r2.2.0 verwendet

videoView.hideController();
videoView.setControllerVisibilityListener(new PlaybackControlView.VisibilityListener() {
    @Override
    public void onVisibilityChange(int visibility) {
        if(visibility == View.VISIBLE) {
            videoView.hideController();
        }
    }
});

oder

app:use_controller=”false” im Layout

<...
    xmlns:app="http://schemas.android.com/apk/res-auto"
    ...>

    <com.google.android.exoplayer2.ui.SimpleExoPlayerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:use_controller="false"/>

  • Wenn Sie app:use_controller=”false” verwenden, klicken Sie auf das Ereignis, das auf dem Exoplayer2 nicht funktioniert

    – Amit Verma

    8. April 2020 um 15:19 Uhr

  • Ich möchte nur ein Video abspielen, der Clicklistener zeigt immer noch das Steuerelement an, selbst wenn use_controller auf false gesetzt ist

    – JPM

    10. August 2021 um 15:48 Uhr

  • Überprüfen Sie, ob dies für Jetpack Compose hilfreich sein kann: stackoverflow.com/a/71977304/3974530

    – Wahnsinnige Katze

    23. April 2022 um 6:14 Uhr

Verwenden Sie einfach diese

exoPlayerView.setUseController(false);

  • Wie verstecke ich die nächste Schaltfläche nur vor dem Controller?

    – Muhammed Haris

    25. März 2020 um 11:13 Uhr

  • @MuhammedHaris versuchen Sie, das in einer neuen Frage zu stellen

    – Westy92

    16. September 2020 um 15:08 Uhr

  • Überprüfen Sie, ob dies für Jetpack Compose hilfreich sein kann: stackoverflow.com/a/71977304/3974530

    – Wahnsinnige Katze

    23. April 2022 um 6:14 Uhr

  • Nach der Bewerbung setUseController(false);. Die onclicklistener-Methode funktioniert nicht.

    – Prinz Dholakiya

    27. August 2022 um 11:33 Uhr


Benutzeravatar von Westy92
Westy92

Kotlin:

exoPlayerView.useController = false

Java:

exoPlayerView.setUseController(false);

XML:

app:use_controller="false"

Dokumentation:
https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/ui/PlayerView.html#setUseController-boolean-

exoPlayerView.setUseController(false);

PlayerView hat eine hideController-Methode. du kannst es so nennen:


mPlayerView.hideController();

Benutzeravatar von MarceloSouza
Marcelo Souza

Um dieses Problem zu lösen, habe ich Folgendes getan:

Code in Kotlin

simpleExoPlayerView.setControllerVisibilityListener { visibility ->
        val layout = activity.findViewById<LinearLayout>(R.id.ll_customPlayBackControlView)
        if (layout.tag != "IN_ANIMATION") {
            when (visibility) {
                View.GONE -> {
                    layout.tag = "IN_ANIMATION"
                    ex_fragmentVideoView.showController()
                    layout.animate().alpha(0F).setDuration(450L).withEndAction({ ex_fragmentVideoView.hideController(); layout.tag = "" }).start()
                }
                View.VISIBLE -> {
                    layout.animate().alpha(1F).setDuration(450L).start()
                }
            }
        }
    }

Benutzeravatar von voghDev
voghDev

Eine einfache Anpassung an Jetpack besteht aus dieser Antwort

@Composable
fun VideoPlayer(myVideo: MyVideo, modifier: Modifier = Modifier) {
    val context = LocalContext.current
    val exoPlayer = remember {
        ExoPlayer.Builder(context).build().apply {
            setMediaItem(myVideo.asMediaItem())
            repeatMode = ExoPlayer.REPEAT_MODE_ALL
            playWhenReady = true
            prepare()
            play()
        }
    }
    DisposableEffect(
        AndroidView(
            modifier = modifier,
            factory = {
                PlayerView(context).apply {
                    player = exoPlayer
                    useController = false
                    FrameLayout.LayoutParams(
                        ViewGroup.LayoutParams
                            .MATCH_PARENT,
                        ViewGroup.LayoutParams
                            .MATCH_PARENT
                    )
                }
            }
        )
    ) {
        onDispose {
            exoPlayer.release()
        }
    }
}

Das wäre asMediaItem() Erweiterungsfunktion

private fun MyVideo.asMediaItem() =
    MediaItem.Builder()
        .setUri(url)
        .setMediaId("some-media-id")
        .setTag("some-video-tag")
        .setMediaMetadata(
            MediaMetadata.Builder().setDisplayTitle("Video").build()
        )
        .build()

und MyVideo-Klasse, die ein wirklich einfaches Video modelliert

data class MyVideo(val url: String, val previewImage: String)

Die Schlüsselzeile zum Entfernen der Steuerelemente hier ist useController = false

  • Die VideoPlayer-Methode funktioniert für mich, um Videos mit onDispose() zu stoppen. Danke! Meine einfache Methode ist so etwas wie: stackoverflow.com/a/71977304/3974530

    – Wahnsinnige Katze

    23. April 2022 um 6:13 Uhr

1442920cookie-checkSo verbergen Sie Steuerschaltflächen in ExoPlayer2

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy