根据分辨率以编程方式设置 ImageView 大小

u3l*_*u3l 1 android screen-resolution imageview layoutparams

我有一个ImageView我想以编程方式设置的大小。所以我没有选择将不同大小的图像放在各自的drawable文件夹中。

基本上,我想LayoutParams根据屏幕分辨率进行设置,而不是执行我在下面所做的操作。如果设备是ldpimdpi,那么100,100...如果是hdpi,那么150,150等等。我怎样才能做到这一点?

ImageVIew imageView = new ImageView(this);
imageView.setLayoutParams(new ViewGroup.LayoutParams(100, 100));
layout.add(imageView);
Run Code Online (Sandbox Code Playgroud)

Gir*_*hai 5

您可以使用

ImageVIew imageView = new ImageView(this);
int size = getImageSize();
imageView.setLayoutParams(new ViewGroup.LayoutParams(size , size ));
layout.add(imageView);
Run Code Online (Sandbox Code Playgroud)

你的getImageSize功能将是

private int getImageSize(){
         int density= getResources().getDisplayMetrics().densityDpi;
         int size =100; 
         switch(density)
         {
         case DisplayMetrics.DENSITY_LOW:
             size = 100;
             break;
         case DisplayMetrics.DENSITY_MEDIUM:
             size = 100;
             break;
         case DisplayMetrics.DENSITY_HIGH:
             size = 150;
             break;
         }

         return size;
       } 
Run Code Online (Sandbox Code Playgroud)

其中getImageSize根据不同的密度返回不同的大小。