2017-09-26 2 views
0

Ich arbeite in einer App, um Videos zu vergleichen, und ich habe diesen Anwendungsfall. So sieht es ausWie zwei Videos nebeneinander die Hälfte ihrer Breite verstecken?

Ich habe versucht, mit einer benutzerdefinierten Ansicht, die von Relative Layout erweitert und die Videoansichten hinein, aber ich kann dieses Ergebnis nicht erreichen.

Sie müssen berücksichtigen, dass die Videobreite gleich der Breite des Bildschirms sein muss, denn wenn jemand einige der Videos antippt, muss er übersetzt werden, bis er vollständig sichtbar ist. Ich denke, dass das linke Video um die Hälfte der Breite nach links übersetzt werden sollte und die gleiche Logik muss auf das richtige Video angewendet werden.

+0

Pls einige Code schreiben. – iMDroid

+0

Auch die Details des Ergebnisses erhalten Sie. – iMDroid

+0

Verwenden Sie die Gewichtssumme. –

Antwort

0

ich eine Probe bin setzen Sie können versuchen, diese innerhalb der Linearlayout Sie können Ihre Videoview platzieren, die ur für Video

activty_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" 
     android:weightSum="2"> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@color/colorAccent"> 

     </LinearLayout> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@color/colorPrimaryDark"> 

     </LinearLayout> 

    </LinearLayout> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:src="@mipmap/ic_launcher" /> 


</RelativeLayout> 

enter image description here

spielen mit
0

Der einfachste Weg ist, Landschaft lineare Layout zu erstellen und hineinlegen zwei Ansichten (SurfaceView oder TextureView oder GlSurfaceView). Und gibt diesen Ansichten das Gewicht gleich 1. Es wird wie:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:baselineAligned="false" 
android:orientation="horizontal" > 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    android:layout_weight="1" 
    android:layout_marginRight="8dp" > 

    <TextureView 
     android:id="@+id/double1_texture_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    android:layout_weight="1" > 

    <TextureView 
     android:id="@+id/double2_texture_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

Die beste Probe Grafika zu sehen ist. Aber wenn Sie vergleichen möchten Videos, dann vergessen Sie nicht, dass eines der Videos zum Beispiel abgeschnitten werden sollte. Weil Sie die linke Seite eines Videos mit der linken Seite eines anderen Videos vergleichen müssen. Und vergiss das Seitenverhältnis nicht.

+0

Aber wie gehst du in diesem Fall mit der Übersetzung des Videos um, wenn jemand darauf tippt? –

+0

Das erreichen Sie nicht mit dem richtigen Layout. Um Übersetzung und Zuschneiden zu machen, sollten Sie GL-Befehle und GlSurfaceView verwenden. – Sheikh

+0

Ich kann Animationen mit Object Animator erreichen. Hier können Sie mehr darüber lesen: https://developer.android.com/guide/topics/graphics/prop-animation.html#views –

0

Ich kann es tun, dass mit dem folgenden Aufbau:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<com.google.android.exoplayer2.ui.SimpleExoPlayerView 
    android:id="@+id/right_video" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/colorAccent" /> 

<com.google.android.exoplayer2.ui.SimpleExoPlayerView 
    android:id="@+id/left_video" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/colorPrimary" /> 

</FrameLayout> 

Programmatisch in der onCreate der Aktivität I für die Breite des Bildschirms anfordern und die Übersetzung in der X-Achse machen. Das sieht aus wie:

Point screenDimens = ViewUtils.getScreenDimensions(this); 
    int videoSize = screenDimens.x; 
    FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) leftVideo.getLayoutParams(); 
    params.width = videoSize; 
    params.height = videoSize; 
    leftVideo.setLayoutParams(params); 
    rigthVideo.setLayoutParams(params); 
    leftVideo.setTranslationX(-videoSize/2); 
    rigthVideo.setTranslationX(videoSize/2); 

Dies ist, wie es aussieht:

enter image description here

Verwandte Themen