2016-07-06 3 views
1

Я знаю, что это немного сложно и все еще думает, возможно ли это или нет, но я хочу, чтобы мое изображение отрегулировалось без снижения качества изображения на любом устройстве Android, когда я использовал vector Drawable было довольно удобно, но иногда размер векторы не являются эффективными с точки зрения памяти, поэтому я не хочу их использовать. Хотя я хочу знать, есть ли способ настроить простой PNG или Файлы JPEG независимо от разрешения и размера экрана в Android?Как разместить изображения png/jpg на любом экране без снижения качества?

Если кто-то может дать мне способ, это будет большой помощью!

+0

мне интересно, если вы можете использовать scaleType при условии, как атрибут для ImageView, чтобы получить вашу работу. Существуют различные типы scaleType, такие как center, centerCrop, centerInside, fitCenter, fitEnd, fitStart, fitXY, matrix. –

+0

предложение использовать PNG-файлы, проверить http://stackoverflow.com/a/37207973/2826147 –

+0

ОК, я уже пробовал, но, создав эти папки и помещая разные файлы, не является действительно решением @AmitVaghela – TapanHP

ответ

1

Использование Копир.изобр View (Пользовательские изображения View)

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

Вы уверены, что он будет работать на всю плотность для всех устройств и разрешений? и можете ли вы сделать это более понятным, добавив в него комментарии? пожалуйста, было бы очень полезно @ChiragArora – TapanHP

+0

Пожалуйста, проверьте, если вы хотите понять больше, пожалуйста, проверьте ниже ссылку http://www.ryadel.com/ru/android-proportionally-stretch-imageview-fit-whole-screen -width-maintain-aspect-ratio/ –

+0

Хорошо, да, очень полезно @Chirag – TapanHP