2016-07-06 5 views
1

Ich weiß, es ist knifflig und immer noch darüber nachdenken, ob es möglich ist oder nicht, aber ich möchte mein Bild anpassen, ohne in Bildqualität auf jedem Android-Gerät zu verringern, wenn ich Vektor Drawable es war ziemlich bequem, aber manchmal Größe von Vektoren sind nicht speichereffizient, also möchte ich sie nicht verwenden. Obwohl ich wissen möchte, ob es eine Möglichkeit gibt, einfache PNG oder JPEG Dateien unabhängig von Auflösung und Bildschirmgröße in Android anzupassen?Wie passen PNG/JPG-Bilder auf einem beliebigen Bildschirm ohne Qualitätsverlust?

Wenn mir jemand Weg geben kann, wäre es eine große Hilfe !!

+0

Ich frage mich, ob Sie Scaletype zur Verfügung gestellt als Attribut Image verwenden können Sie Ihre Arbeit zu erledigen. Es gibt verschiedene scaleType-Typen wie center, centerCrop, centerInside, fitCenter, fitEnd, fitStart, fitXY, Matrix. –

+0

Vorschlag zur Verwendung von PNG-Dateien, überprüfen Sie http://StackOverflow.com/A/37207973/2826147 –

+0

OK ich habe es bereits versucht, aber indem Sie diese Ordner und verschiedene Dateien setzen ist keine Lösung wirklich @AmitVaghela – TapanHP

Antwort

1

Verwenden Resize Bildansicht (Custom Bildansicht)

public class ResizableImageView extends ImageView { 
    public ResizableImageView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public ResizableImageView(Context context) { 
     super(context); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     Drawable d = getDrawable(); 
     // get drawable from imageview 
     if (d == null) { 
      super.setMeasuredDimension(widthMeasureSpec, heightMeasureSpec); 
      return; 
     } 

     int imageHeight = d.getIntrinsicHeight(); 
     int imageWidth = d.getIntrinsicWidth(); 
     // get height and width of the drawable 
     int widthSize = MeasureSpec.getSize(widthMeasureSpec); 
     int heightSize = MeasureSpec.getSize(heightMeasureSpec); 
     // get width and height extracts the size from the supplied measure specification. 
     float imageRatio = 0.0F; 
     if (imageHeight > 0) { 
      imageRatio = imageWidth/imageHeight; 
     } 
     float sizeRatio = 0.0F; 
     if (heightSize > 0) { 
      sizeRatio = widthSize/heightSize; 
     } 

     int width; 
     int height; 
     if (imageRatio >= sizeRatio) { 
      // set width to maximum allowed 
      width = widthSize; 
      // scale height 
      height = width * imageHeight/imageWidth; 
     } else { 
      // set height to maximum allowed 
      height = heightSize; 
      // scale width 
      width = height * imageWidth/imageHeight; 
     } 

     setMeasuredDimension(width, height); 
     // This method must be called to store the measured width and measured height. Failing to do so will trigger an exception at measurement time 
    } 
} 
+0

Sind Sie sicher, dass es auf alle Dichte für alle Geräte und Auflösungen funktioniert? und kannst du es verständlicher machen, indem du Kommentare dazu gibst? bitte wäre es eine große Hilfe @ChiragArora – TapanHP

+0

Bitte überprüfen Sie, wenn Sie mehr dann verstehen möchten, überprüfen Sie bitte den folgenden Link http://www.ryadel.com/en/android-proportional-stretch-imageview-fit-whole-screen -breite-beibehalten-aspect-ratio/ –

+0

Ok ja sehr hilfreich @Chirag – TapanHP