我已经阅读了10篇文章,但仍然无法找到ldpi,mdpi,hdpi和像素的实际尺寸之间的任何关系!?任何人都可以给出一个简单的答案(如果有的话!)
我基本上试图将一个需要在多个设备上工作的启动画面放在一起而不会拉伸 - 但我正在努力,因为我尝试的一切都要么被压扁或拉伸了??
干杯 保罗
答案 0 :(得分:75)
ldpi,mdpi和hdpi指的是屏幕密度,这意味着像素可以容纳一英寸。
它们之间的像素比例为:
所以我们拍摄一张大小为100X100的图片:
这样,对于尺寸相同但DPI不同的屏幕,屏幕上的所有图像大小都相同。
此外,您有多种屏幕尺寸类型,小尺寸,普通尺寸,大尺寸,xlarge,每种尺寸都可以是ldpi,mdpi,hdpi,xhdpi,xxhdpi(Nexus 10)或xxxhdpi。
您可以尝试创建适合每种屏幕类型的初始屏幕图像 它给你4 * 5 = 20个不同的图像(对我来说似乎很多)。
目前只有Nexus 10属于xxhdpi类别。
答案 1 :(得分:24)
Install ImageMagick并使用this shell脚本为多个设备生成启动和图标文件 - iOS,Android,Bada和Windows Phone。如果你在Windows上,你可以使用cygwin / gitbash
我刚刚做了,我对它非常满意: - )
屏幕尺寸在脚本内部,是 -
480x800 - screen-hdpi-portrait.png
320x200 - screen-ldpi-landscape.png
720x1280 - screen-xhdpi-portrait.png
320x480 - screen-mdpi-portrait.png
480x320 - screen-mdpi-landscape.png
200x320 - screen-ldpi-portrait.png
800x480 - screen-hdpi-landscape.png
答案 2 :(得分:7)
定义如下:
另外,请查看Dianne Hackborne的这篇博文: http://android-developers.blogspot.com/2011/07/new-tools-for-managing-screen-sizes.html
最简单的方法是使用图像视图并将scaletype设置为CENTER_CROP。 (均匀缩放图像(保持图像的纵横比),使图像的尺寸(宽度和高度)等于或大于视图的相应尺寸。
确保使用src标记而不是设置背景。
<ImageView
android:id="@+id/home_video_layout"
android:src="@drawable/splash_image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
/>
<强>更新强>
了解屏幕密度和“dp”
分辨率是显示屏中可用的实际像素数,密度是在显示器的常量区域内出现的像素数,而大小是可用于显示界面的物理空间量。这些是相互关联的:将分辨率和密度一起提高,尺寸大致保持不变。这就是为什么Droid上G1和480x800屏幕上的320x480屏幕都是相同的屏幕尺寸:480x800屏幕有更多像素,但密度也更高。
要从图片中删除大小/密度计算,Android框架会根据“dp”单位尽可能地工作,这些单位会针对密度进行校正。在与原始Android手机相对应的中密度(“mdpi”)屏幕中,物理像素与dp相同;这两种设备的尺寸均为320x480。较新的手机可能具有480x800的物理像素尺寸,但是是高密度设备。在这种情况下,从hdpi到mdpi的转换因子为1.5,因此对于开发人员而言,该设备的dp为320x533。
答案 3 :(得分:3)
我发现在线倾斜&lt; - &gt;像素计算器非常有用。
答案 4 :(得分:1)
我支持以前的答案,但不要忘记Draw9Patch或使用NinePatchDrawables的力量
答案 5 :(得分:0)
这些是指屏幕像素密度,而不是屏幕尺寸。如果您确实需要根据屏幕大小(以像素为单位)更改行为,则需要查看屏幕大小说明符,例如small,medium,large和xlarge。
The Android docs说明密度和大小与这些标识符的匹配程度。
答案 6 :(得分:0)
Android设备可以具有不同的宽高比,而您的图像具有固定的宽高比。如果您不希望图像被拉伸,则必须填充上方或下方或左右两侧的空白区域。