【问题标题】:Android: How to determine size of an ImageView on the screen in inchesAndroid:如何确定屏幕上 ImageView 的大小(以英寸为单位)
【发布时间】:2019-02-10 06:18:24
【问题描述】:

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

我需要一个函数:

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

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

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

感谢您的帮助!

【问题讨论】:

    标签: java android imageview resize scale


    【解决方案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;
    
    }
    

    【讨论】:

    • 太好了,谢谢!我会对此进行测试并告诉你它是如何工作的。
    【解决方案2】:

    据我了解你的问题:

    首先要在android中使用imageview,你应该使用像linearlayout或relativelayout这样的viewgroup,然后把你的imageview放在里面。用于图像视图的高度和宽度的常用属性是匹配父级。如果您的屏幕发生变化,则执行此操作,您的图像视图会相对于您的屏幕发生变化。

    【讨论】:

    • 我并不是真的想根据屏幕的像素大小调整图像视图的大小,而是以英寸为单位的物理大小。我应该如何实现这个效果?
    猜你喜欢
    • 2013-07-19
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 2022-07-14
    相关资源
    最近更新 更多