如何在Android中以相同直径在不同屏幕(设备)上画一个圆

Posted

技术标签:

【中文标题】如何在Android中以相同直径在不同屏幕(设备)上画一个圆【英文标题】:How to draw a circle on different screens(devices) with same diameter in Android 【发布时间】:2016-04-26 05:01:28 【问题描述】:

我正在尝试在每个 android 设备中绘制一个直径相同的 2.5 英寸(或任何其他值)的圆,无论屏幕尺寸如何。所有设备的直径尺寸必须相同,以下是我尝试过的。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_
    android:layout_ android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:background="@drawable/light"
    tools:context=".MainActivity">

    <ImageView
        android:layout_
        android:layout_
        android:src="@drawable/oval_shape"
        android:id="@+id/imageView"
        android:scaleType="matrix"/>

</RelativeLayout>

oval_shape.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

    <solid
        android:color="#666666"/>

    <size
        android:
        android:/>
</shape>

这段代码的问题是当我用 4.5 英寸屏幕(真机)尝试时,直径为 2.5 英寸,但在 4 英寸屏幕上测试时,直径小于 2.5 英寸,略有不同。我也尝试使用毫米 (mm),但效果也不好。

那么如何才能达到每部手机都一样大小的圆圈呢?

【问题讨论】:

您可以使用DisplayMetrics xdpiydpi 来计算您想要的物理尺寸的正确像素数。 @ElliottFrisch :- 你能给我一个代码示例吗? 你试过dp吗? 【参考方案1】:

//您在所有屏幕的椭圆形形状.xml 中使用固定静态尺寸。这就是为什么它因不同的屏幕而异。 你可以在维度中使用它。 // 在oval_shape.xml中使用这段代码

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

    <solid
        android:color="#666666"/>

    <size
        android:
        android:/>
</shape>

// 你可以把dimens.xml放进去

1) values-xlarge

2) values-small

3) values-normal

4) values-large

And give different sizes in dimens.xml within corresponding folders according to densities.

// 像正常的 2.5 英寸, 大尺寸正常值的 1.5 倍(意味着 3.75 英寸), xlarge 中正常值的 2 倍(表示 5 英寸), 0.75x 正常的小(意味着 1.875in aprox)

//希望对你有帮助。

【讨论】:

尺寸不能用于画布绘图! 因此,在您的回答中,您再次为不同的设备提供不同的尺寸。我到处都需要 2.5。

以上是关于如何在Android中以相同直径在不同屏幕(设备)上画一个圆的主要内容,如果未能解决你的问题,请参考以下文章

在android中以编程方式拍摄设备快照

如何处理具有相同分辨率但屏幕高度不同的 Android 设备

如何以编程方式获取 android 设备屏幕截图? [复制]

如何在android中以圆形裁剪图像?

如何在android中启用“在锁定屏幕中显示”权限

android屏幕支持相同密度的不同分辨率