[英]How to support different screen size and different screen resolutions in android
[英]How to support different screen size in android
我正在 android 中开发一个应用程序,我必须支持所有不同的屏幕尺寸和密度。 所以我为 layout 创建了不同的文件夹: layout-small layout-large
和layout
。
然后我为图像创建了不同的文件夹: ldpi, mdpi
和hdpi
。 在所有可绘制文件夹中,图像必须具有不同的大小,真的吗? 请问这是因为我的手机屏幕尺寸大,密度中等,显示的图像会更小,而且尺寸不正确?
对于不同的屏幕尺寸,以下是一个应用程序中的资源目录列表,它为不同的屏幕尺寸提供了不同的布局设计,并为小、中、高和超高密度屏幕提供了不同的位图可绘制对象。
res/layout/my_layout.xml // layout for normal screen size ("default")
res/layout-small/my_layout.xml // layout for small screen size
res/layout-large/my_layout.xml // layout for large screen size
res/layout-xlarge/my_layout.xml // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
res/drawable-mdpi/my_icon.png // bitmap for medium density
res/drawable-hdpi/my_icon.png // bitmap for high density
res/drawable-xhdpi/my_icon.png // bitmap for extra high density
Manifest 中的以下代码支持所有 dpi。
<supports-screens android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true" />
并查看我的SO answer 。
从 Android 3.2(API 级别 13)开始,尺寸组(小文件夹、普通文件夹、大文件夹、超大文件夹)已被弃用,取而代之的是一种基于可用屏幕宽度管理屏幕尺寸的新技术。
说到支持多种屏幕尺寸,这听起来很崇高。下面给出了更好的结果。
res/layout/layout-w120dp
res/layout/layout-w160dp
res/layout/layout-w240dp
res/layout/layout-w160dp
res/layout/layout-w320dp
res/layout/layout-w480dp
res/layout/layout-w600dp
res/layout/layout-w720dp
使用显示指标检查设备宽度和高度
放置/找出哪种布局适合 Device 的结果宽度。
let smallestScreenWidthDp="assume some value(Which will be derived from Display metrics)"
所有都应该在 setContentView() 之前检查。否则你会给自己带来麻烦
Configuration config = getResources().getConfiguration();
if (config.smallestScreenWidthDp >= 600) {
setContentView(R.layout.layout-w600dp);
} else {
setContentView(R.layout.main_activity);
}
在顶部,我创建了许多布局以适应多个屏幕,这完全取决于您,您可能与否。您可以从哪个 API 中查看 Play 商店评论,下载量很高..表格,您必须继续.
我希望它对你有很大帮助。很少使用一些第三方库,这可能会减少你的工作,但这不是最佳实践。 习惯 Android 最佳实践。
使用 Github 提供的sdp 库
您可以动态计算出屏幕的尺寸
Display mDisplay= activity.getWindowManager().getDefaultDisplay();
int width= mDisplay.getWidth();
int Height= mDisplay.getHeight();
可以使用使用此方法获得的宽度和高度来设置布局。
Android 自行调整,如果您想为高分辨率设备和其他设备使用不同的图像,您可以为不同的文件夹放置单独的图像。 否则,只需为某些图像放入一个 drawable,layout 文件夹,您也可以制作 9-patch。
您需要在清单中获得多屏幕支持链接的许可
<supports-screens android:resizeable=["true"| "false"]
android:smallScreens=["true" | "false"]
android:normalScreens=["true" | "false"]
android:largeScreens=["true" | "false"]
android:xlargeScreens=["true" | "false"]
android:anyDensity=["true" | "false"]
android:requiresSmallestWidthDp="integer"
android:compatibleWidthLimitDp="integer"
android:largestWidthLimitDp="integer"/>
添加到@ud_an
为布局创建不同的文件夹不是一个好习惯。 创建您的布局,使其适用于所有屏幕尺寸。 要实现这一点,请使用布局属性。 您只需要为 hdpi、mdpi 和 ldpi 类型提供不同的图像。 其余将由安卓操作系统管理。
您可以为应用程序将运行的高分辨率/大小创建位图并在代码中调整它们的大小(在运行时)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.