2015-11-09 14 views
7

Video oynatmak için ExoPlayer kullanan bir etkinliğim var. Tam ekrana geçtiğimde, cihazın en boy oranı videonunkine eşit değilse, videonun üstünde ve altında küçük siyah çubuklar olur. BenAndroid'de, exoplayer kullanarak yüzey görünümü, cihazla aynı en boy oranına sahip olmayan bir videoyla nasıl doldurulur?

aspectRatioFrameLayout.setAspectRatio(mVideo.getAspectRatio()); 

sorunu çözmek umuyordum ama hiçbir başarı elde etti

<com.google.android.exoplayer.AspectRatioFrameLayout 
    android:id="@+id/video_frame" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentBottom="true"> 

    <SurfaceView android:id="@+id/surface_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="fill_vertical"/> 

    <View android:id="@+id/shutter" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@android:color/black"/> 

</com.google.android.exoplayer.AspectRatioFrameLayout> 

:

Bu düzen böyle görünüyor. Videonun bir kısmı ekrandan kesilse bile videoyu ekranla doldurmanın bir yolu var mı?

cevap

6

'u com.google.android.exoplayer.AspectRatioFrameLayout'dan kaldırabilirsiniz.

Daha sonra ürününü genişlik ve yükseklik ile match_parent ürününe yerleştirin.

SurfaceView'un genişlik ve yükseklikte kalması gerektiğini unutmayın = match_parent.

Açıklama: AspectRatioFrameLayout, gerçek video oranına (genişlik, yükseklik ve pikselRatio'ya göre hesaplanan) göre görünümün doğru yüksekliğini ayarlıyor. Bunu yapmazsanız, Exoplayer daha önce yaptığı gibi SurfaceView'daki görünümü görüntüleyebilir. SurfaceView, @Override değilse, en boy oranına sahip olmaz.

+0

Teşekkür ederiz! Geç cevap için özür dilerim ... işe yaradı! Çok kolay, sadece çerçeve düzenine geçmek için – kimv

6

Ekranı video ile doldurmanın en hızlı yolu var. SimpleExoPlayerView.java sınıfına gidin, resizeMode'u AspectRatioFrameLayout.RESIZE_MODE_FIT'dan AspectRatioFrameLayout.RESIZE_MODE_FILL'a değiştirin. RESIZE_MODE_FILL belirtilen en boy oranını dikkate almayacaktır. ExoPlayer'ı projenizde bir modül olarak kullanıyorsanız, bu şekilde kullanın.

GÜNCELLEME bir kütüphanede olarak ExoPlayer kullanırsanız , bunlar setResizeMode() için bir yöntem var. Görünümünüzde sadece AspectRatioFrameLayout.RESIZE_MODE_FILL olarak ayarlanmışsınız: simpleExoPlayerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL) Hepsi bu kadar!

+0

htmExExPlayerView.setResizeMode (AspectRatioFrameLayout.RESIZE_MODE_FILL); Ebeveyn görünümünü oyuncuyla doldurmaya yardımcı olur. – SANAT

+0

En boy oranını ayarlamak istiyorum –

+0

Videonun en boy oranını korumak, ancak tam görünüm boyutuna genişletmek istiyorsanız, videonuz genişse (portre) veya sabit olduğundan daha genişse, sabit_seçeneğini kullanın. uzun boylu (manzara) – Gmeister4

İlgili konular