Manuiq / ZoomableTextureView

Adding zoom and scroll gestures to video playback on Android
142 stars 33 forks source link

When zoom the video,controller of playerview is hide #10

Open makazemi opened 5 years ago

makazemi commented 5 years ago

I have a custom exoplayback control view layout for my playerview. I use ZoomableExoPlayerView class. When I zoom video linear_layout_play_pause and linear_layout_bottom hide. This is my custom control view:

`<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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:background="@drawable/bg_black_gradient" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/root_layout"> <android.support.constraint.ConstraintLayout android:id="@+id/constraint_layout_options" android:layout_width="match_parent" android:layout_height="36dp" android:padding="10dp" app:layout_constraintBottom_toTopOf="@+id/linear_layout_play_pause" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.115">

  <TextView
      android:id="@+id/exo_speed"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_marginEnd="16dp"
      android:scaleType="fitCenter"
      android:text="1.0X"
      android:textColor="#FFF"
      app:layout_constraintBottom_toBottomOf="parent"
      app:layout_constraintEnd_toEndOf="parent"
      app:layout_constraintHorizontal_bias="0.0"
      app:layout_constraintStart_toStartOf="parent"
      app:layout_constraintTop_toTopOf="parent"
      tools:ignore="ContentDescription" />

</android.support.constraint.ConstraintLayout>

<LinearLayout android:id="@+id/linear_layout_play_pause" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:orientation="horizontal" android:paddingTop="4dp" android:visibility="visible" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent">

  <!--<TextView-->
  <!--android:id="@+id/text_minus_10_seconds"-->
  <!--android:layout_width="wrap_content"-->
  <!--android:layout_height="wrap_content"-->
  <!--android:padding="14dp"-->
  <!--android:text="@string/minus_10"-->
  <!--android:textSize="18sp"-->
  <!--android:textColor="@color/colorWhite" />-->

  <ImageButton
      android:id="@id/exo_prev"
      style="@style/ExoMediaButton.Previous"
      tools:ignore="ContentDescription" />

  <ImageButton
      android:id="@id/exo_rew"
      style="@style/ExoMediaButton.Rewind" />

  <ImageButton
      android:id="@id/exo_play"
      style="@style/ExoMediaButton.Play"
      tools:ignore="ContentDescription" />

  <ImageButton
      android:id="@id/exo_pause"
      style="@style/ExoMediaButton.Pause"
      tools:ignore="ContentDescription" />

  <ImageButton
      android:id="@id/exo_ffwd"
      style="@style/ExoMediaButton.FastForward" />

  <ImageButton
      android:id="@id/exo_next"
      style="@style/ExoMediaButton.Next"
      tools:ignore="ContentDescription" />

  <!--<TextView-->
  <!--android:id="@+id/text_plus_10_seconds"-->
  <!--android:layout_width="wrap_content"-->
  <!--android:layout_height="wrap_content"-->
  <!--android:padding="14dp"-->
  <!--android:text="@string/plus_10"-->
  <!--android:textSize="18sp"-->
  <!--android:textColor="@color/colorWhite" />-->

<LinearLayout android:id="@+id/linear_layout_bottom" android:layout_width="match_parent" android:layout_height="wrap_content" android:layoutDirection="ltr" android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/linear_layout_play_pause" app:layout_constraintVertical_bias="1.0">

  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_marginTop="4dp"
      android:gravity="center_vertical"
      android:orientation="horizontal">

     <TextView
         android:id="@id/exo_position"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:includeFontPadding="false"
         android:paddingLeft="4dp"
         android:paddingRight="4dp"
         android:textColor="#FFBEBEBE"
         android:textSize="14sp"
         android:textStyle="bold" />

     <com.google.android.exoplayer2.ui.DefaultTimeBar
         android:id="@id/exo_progress"
         android:layout_width="0dp"
         android:layout_height="26dp"
         android:layout_weight="1"
         app:played_color="@color/colorPrimary" />

     <TextView
         android:id="@id/exo_duration"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:includeFontPadding="false"
         android:paddingLeft="4dp"
         android:paddingRight="4dp"
         android:textColor="#FFBEBEBE"
         android:textSize="14sp"
         android:textStyle="bold" />

     <ImageView
         android:id="@+id/exo_fullscreen_icon"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="8dp"
         android:layout_marginEnd="8dp"
         android:layout_marginBottom="8dp"
         android:src="@drawable/ic_fullscreen_expand"
         tools:ignore="ContentDescription" />

  </LinearLayout>

</android.support.constraint.ConstraintLayout>

NanyangTaiji commented 5 years ago

I have same issue. I think the gesture is intercepted by ZoomableTextureView.

Manuiq commented 5 years ago

Sorry for the late answer. Indeed handling exoplayer controls out-of-the-box is non-existant. I would recommend to set controllerHideOnTouch value to false inside ZoomableExoPlayerView(this will make sure the controls are never hidden). But now you would have to manually handle it. My advice: add another touchListener above the ZoomableTextureView just for this