Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 不同密度下的图像高度不同_Android - Fatal编程技术网

Android 不同密度下的图像高度不同

Android 不同密度下的图像高度不同,android,Android,我是设计布局的新手。我从服务器获取位图,并设置imageview高度,使其在每个密度(ldpi、mdpi、hdpi、xhdpi)上看起来都很好 stripImageView.getLayoutParams().height = (int) ((Util.screenWidth(this) * strip.getHeight() / strip.getWidth()) * getResources().getDisplayMetrics().density); 但是这个代码对我不起作用。有些设备

我是设计布局的新手。我从服务器获取位图,并设置imageview高度,使其在每个密度(ldpi、mdpi、hdpi、xhdpi)上看起来都很好

stripImageView.getLayoutParams().height = (int) ((Util.screenWidth(this) * strip.getHeight() / strip.getWidth()) * getResources().getDisplayMetrics().density);

但是这个代码对我不起作用。有些设备图像看起来很小,有些设备图像看起来很好

尝试使用dp而不是px设置布局中的尺寸。Dp或dip代表与密度无关的像素,并将根据密度自动缩放

编辑:我看到的另一个问题是,您同时引用了屏幕宽度和高度,因此屏幕纵横比也会影响该计算。

将其转换为倾角:

stripImageView.getLayoutParams(). height = 
     (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, <HEIGHT>, 
          getResources().getDisplayMetrics());

其中HEIGHT是所需的px高度。您可以根据条带高度或其他内容进行设置。

stripImageView.getLayoutParams.height=int Util.screenWidththis*strip.getHeight/strip.getWidth*getResources.getDisplayMetrics.density;如何做到这一点。如果你更新我的代码就好了。我不能在布局中设置dp中的imageview高度固定。所以我在运行时根据条带的高度和宽度来设置它。如果有任何错误,让我知道这是什么解决方案?px Util.screenWidththis*strip.getHeight/strip.getWidth public static int screenWidthContext ctx{WindowManager wm=WindowManager ctx.getSystemServiceContext.WINDOW\u SERVICE;Display Display=wm.getDefaultDisplay;return Display.getWidth;}getHeight,getWidth,和屏幕宽度重新运行值(以px为单位)