如何在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
xdpi
和ydpi
来计算您想要的物理尺寸的正确像素数。
@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 设备