3

Ich habe eine Bildansicht, um ein Bild anzuzeigen, und ich möchte um die Option zu aktivieren, das Bild mit den folgenden Verhältnis 16: 9,1: 1,3: 2,2: 1,4: 3 zuzuschneiden. Ich habe einige Knöpfe für jedes, also kann Benutzer das Bild bis zum folgenden in zuschneiden Klicken auf eine Schaltfläche. Wie funktioniert dies auf Geräten mit unterschiedlichen Bildschirmgrößen?Wie man Bildansicht in Prozent Relative Layout zu folgenden Verhältnissen basierend auf Gerät Bildschirmgröße einstellen, 16: 9,1: 1,3: 2,2: 1,4: 3

bekam ich das Gerät Bildschirmhöhe und -breite den folgenden Codeausschnitt mit

DisplayMetrics displaymetrics = new DisplayMetrics(); 
      getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
      int height = displaymetrics.heightPixels; 
      int width = displaymetrics.widthPixels; 

und ich kann die Breite und Höhe zu Imageview mit diesem Schnipsel

FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT); 
      params.height=height; 
      params.width=width; 
      touchImageView.setLayoutParams(params); 

Aber wie diese gesetzt zu tun mit Prozent Relative Layout (16: 9,1: 1,3: 2,2: 1,4: 3)

kann mir jemand helfen ??

Antwort

1

Sie können Prozent Relative Layout-

http://developer.android.com/reference/android/support/percent/PercentRelativeLayout.html

private void changeAspectRatio(int width, int height, Float ratio, PercentRelativeLayout mPercentRelativeLayout) { 
    PercentRelativeLayout.LayoutParams layoutParamsMain = new PercentRelativeLayout.LayoutParams(getApplicationContext(), null); 
    if (width != 0) 
     layoutParamsMain.width = width; 
    if (height != 0) 
     layoutParamsMain.width = width; 
    PercentLayoutHelper.PercentLayoutInfo info1 = layoutParamsMain.getPercentLayoutInfo(); 
    if (ratio != 0f) 
     info1.aspectRatio = ratio; 
    mPercentRelativeLayout.setLayoutParams(layoutParamsMain); 
    mPercentRelativeLayout.requestLayout(); 
} 


changeAspectRatio((int)(width*.9), 0, 1.77f, mPercentRelativeLayout); 

to get 16:9 , 16/9 = 1.77 and pass this value like above function call. 

Dann verwenden Sie es 16 gesetzt wird: 9-Seitenverhältnis.

1

Seit PercentFrameLayout und PercentRelativeLayout wurden in API-Ebene 26.0.0 veraltet, würde ich Ihnen vorschlagen, mit der ConstraintLayout zu berücksichtigen Verhältnis 16 zu halten: 9 für Ihre ImageView. ConstraintLayout ist wirklich leistungsfähiges Werkzeug, um Responsive UI für Android-Plattform zu bauen, finden Sie weitere Details hier Build a Responsive UI with ConstraintLayout.

Hier ist das Beispiel, wie Sie Ihr Image in ConstraintLayout zu bauen zu halten Verhältnis 16: 9:

<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_marginEnd="0dp" 
     android:layout_marginStart="0dp" 
     android:layout_marginTop="0dp" 
     app:srcCompat="@mipmap/ic_launcher" 
     app:layout_constraintDimensionRatio="H,16:9" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

</android.support.constraint.ConstraintLayout> 

Vergessen Sie nicht constraint-layout Abhängigkeit Ihres Moduls build.gradle Datei

implementation "com.android.support.constraint:constraint-layout:1.0.2" 

hinzufügen

Oder bearbeiten Sie Ihre XML-Datei nicht direkt im Layout-Editor:

Layout Editor

Verwandte Themen