Android:如何确定屏幕上ImageView的大小(以英寸为单位)

时间:2019-02-10 06:18:25

标签: java android imageview resize scale

以下是一些背景信息。我正在制作一个Android应用,该应用要求ImageView以相同的物理尺寸(xInches x yInches)显示在屏幕上,而不管显示图像的设备是什么。我遇到的问题是,默认情况下,ImageView的大小会根据当前屏幕分辨率和屏幕大小更改大小。

我需要的是一个功能,

  • 具有我需要调整大小的ImageView的输入,首选大小的x(以英寸为单位)和首选大小的y(以英寸为单位)
  • 计算x x y英寸的像素尺寸(我需要弄清楚如何实现)
  • 返回以dpi / px或我可以轻松应用于ImageView的值计算的x和y尺寸

我是Android开发的新手,所以我不是100%熟悉不同的坐标系,例如px vs dpi,但是我要寻找的是一种将这些坐标系与物理坐标。

顺便说一句,我只使用英寸,因为我居住在美国。但是,我的意思是说,任何在物理空间而不是屏幕空间测量的单位

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

对于此类任务,您可能需要找到设备的dpi,然后根据该分辨率调整图像大小。像

String inchesToDp(int x, int y){

    DisplayMetrics metrics = getResources().getDisplayMetrics();
    //int densityDpi = metrics.densityDpi;  used for general purpose
    int xInch = x * metrics.xdpi;     //1 inch in dpi is just the amount of dpi
    int yInch = y * metrics.ydpi;     //x and ydpi give exact lcd dpi for horizontal and vertical but you could just use x * densityDpi if it doesn't matter

    return "x in dp: " + xInch + "y in dp: " + yInch;

}

答案 1 :(得分:1)

据我了解您的问题:

首先要在android中使用imageview,应使用诸如linearlayout或relativelayout之类的视图组在其中放置一个imageview。用于imageviews的height和width的通常属性是match parent。如果您的屏幕发生变化,则这样做会改变图像视图相对于屏幕的变化。