0

我想从服务器下载图像并将其显示在图像视图上。 我主要关注的是不要损坏不同设备上的图像质量(具有不同的屏幕尺寸,分辨率和密度)优化图像尺寸以便在图像视图上显示质量

我想弄清楚如何测量我需要的图像大小以适合图像视图的质量

为了这个问题, 说我有一个100dp * 100dp大小的图像视图为了保持hdpi,xhdpi,xxhdpi和xxxhdpi设备的质量,我需要下载哪些图像分辨率?

我已经知道如何获取设备

DisplayMetrics displaymetrics = new DisplayMetrics(); 
    WindowManager windowManager = (WindowManager) m_context.getSystemService(Context.WINDOW_SERVICE); 
    windowManager.getDefaultDisplay().getMetrics(displaymetrics); 
    int height = displaymetrics.heightPixels; 
    int wwidth = displaymetrics.widthPixels; 

    Log.d(Utils.TAG,"displaymetrics : Hieght: "+ height + " width: " + wwidth); 


    switch (m_context.getResources().getDisplayMetrics().densityDpi) { 
     case DisplayMetrics.DENSITY_LOW: 
      Log.d(Utils.TAG,"Low desity"); 
      break; 
     case DisplayMetrics.DENSITY_MEDIUM: 
      Log.d(Utils.TAG,"medium desity"); 
      break; 
     case DisplayMetrics.DENSITY_HIGH: 
      Log.d(Utils.TAG,"high desity"); 
      break; 
     case DisplayMetrics.DENSITY_XHIGH: 
      Log.d(Utils.TAG,"xhigh desity"); 
      break; 
     case DisplayMetrics.DENSITY_XXHIGH: 
      Log.d(Utils.TAG,"xxhigh desity"); 
      break; 
     case DisplayMetrics.DENSITY_XXXHIGH: 
      Log.d(Utils.TAG,"xxxhigh desity"); 
      break; 
    } 
+0

我不知道。但我想我读到Instagram使用1080x1080的方形图片。 说到这里,我不是专家。但是我认为,如果一个专注于图像的大型应用使用该解决方案。我应该够了。 –

回答

1

低密度(LDPI)的分辨率和desisty:75x75

中密度(MDPI):100×100,基线

高密度(hdpi)150x150

超高密度(xhdpi)200x200

额外X2高密度(xxhdpi)300x300的

额外X3高密度(xxxhdpi)400×400

Range of screens supported | Android Developers

+0

谢谢!关于一般图像的问题,如果我的服务器上的图像被定义为300 * 300,那么我应该检查图像的任何其他方面?有些类似于android中的密度? –

+0

不是。你可能想要考虑的唯一事情就是JPEG有一个品质因素。质量因子越低,压缩率越高,因此文件尺寸越小,但图像中的准确性也越高。另一方面,PNG是无损的。 –