我想以多种屏幕尺寸支持我的Android屏幕,但我可以通过维护多个xml布局文件来实现它
但根据要求,我应该使用单一的XML布局来优化应用程序的使用。
所以请你能帮助我 我已经通过多个教程多个链接,但无法获得堆栈溢出的最后一个选项
答案 0 :(得分:11)
<强>绘制:强>
对于图像,您必须根据屏幕分辨率管理不同的可绘制文件夹:
drawable-ldpi //240x320
drawable-mdpi //320x480
drawable-hdpi //480x800
drawable-xhdpi //720x1280
drawable-xxhdpi //1080X1920
drawable-xxxhdpi //1440X2560
drawable-tvdpi // nexus 7 etc
drawable-xlarge-xhdpi //tablet like nexus 10
<强>硬币:强> 对于尺寸,如果你根据你的UI使用不同的静态角钱,那么你必须将它们定义为尊重它们的值...文件夹。
不同智能手机分辨率的值文件夹:
values-ldpi\dimens.xml
values-mdpi\dimens.xml
values-hdpi\dimens.xml
values-xhdpi\dimens.xml
values-xxhdpi\dimens.xml
values-xxxhdpi\dimens.xml
注意:如果使用sp / sip / dp / dip,则将根据设备密度调整这些值。 例如,假设您已在mdpi(320X480)分辨率设备中为TextView设置了10sp。然后,相同的值将自动调整为其他分辨率。
mdpi(10sp==10px)
hdpi(15px)
xhdpi(20px)
xxhdpi(30px)
xxxhdpi(40px)
这些是一些常规用法值文件夹,用于管理与其屏幕分辨率相关的尺寸。
不同屏幕的不同值文件夹:
values-sw720dp 10.1” tablet 1280x800 mdpi
values-sw600dp 7.0” tablet 1024x600 mdpi
values-sw480dp 5.4” 480x854 mdpi
values-sw480dp 5.1” 480x800 mdpi
values-xxxhdpi 1440X2560 xxxhdpi
values-xxhdpi 1080X1920 xxhdpi
values-xhdpi 4.7” 1280x720 xhdpi
values-xhdpi 4.65” 720x1280 xhdpi
values-hdpi 4.0” 480x800 hdpi
values-hdpi 3.7” 480x854 hdpi
values-mdpi 3.2” 320x480 mdpi
values-ldpi 3.4” 240x432 ldpi
values-ldpi 3.3” 240x400 ldpi
values-ldpi 2.7” 240x320 ldpi
答案 1 :(得分:5)
在Layouts Folder
文件夹中为所有设备创建三个不同的res
,并相应地使用这些维度。
通用布局文件夹
res/layout-small
res/layout-normal
res/layout-large
res/layout-xlarge
完成正常/中等布局后,请按照以下步骤操作:
用于转换值
0.75 - ldpi (small) //mdpi dimens *0.75
1.0 - mdpi (normal) //First create these dimensions
1.5 - hdpi (large) //mdpi dimens *1.5
2.0 - xhdpi (xLarge) //mdpi dimens *2.0
例如
android:layout_width="66dip" //in normal
android:layout_width="100dip"//in large 66*1.5=100(approx)
android:layout_width="52dip" //in small 66*0.75=52(approx)
此外,还推出了新的限定符 - 最小宽度 - AvailableScreenWidth - AvailableScreenHeight
在此处详细了解https://developer.android.com/guide/practices/screens_support.html
我希望这会有所帮助。
答案 2 :(得分:3)
您可以尝试自动管理所有屏幕尺寸分辨率的图书馆。
compile 'com.intuit.sdp:sdp-android:1.0.4'
您只需在build.gradle文件中添加依赖项即可完成。
您需要指定:
android:layout_height="@dimen/_10sdp"
而不是:
android:layout_height="@dimen/10sdp"
答案 3 :(得分:2)
如果您提供文字大小为sp,其他尺寸为dp。 Android将根据设备密度自动调整不同的布局。如果要控制值,可以将values.xml中的值放在每个值文件夹中。不同密度设备的res内的values文件夹将如下:
im1 = (ImageView) findViewById(R.id.imageView_id); //add proper ImageView id not NetworkimageView id
ImageRequest imageRequest = new ImageRequest(IMAGE_URL, new Response.Listener<Bitmap>() {
@Override
public void onResponse(final Bitmap response) {
im1.setImageBitmap(response);
}
}, 0, 0, ImageView.ScaleType.CENTER_INSIDE, null, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this, error.toString(), Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
requestQueue.add(imageRequest);
答案 4 :(得分:0)
那取决于你的代码
Drawables
使用外翻DPI
文件夹查看这些链接
1)https://developer.android.com/training/multiscreen/screensizes.html
答案 5 :(得分:0)
试试这个 https://developer.android.com/guide/topics/manifest/supports-screens-element.html
<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"/>
答案 6 :(得分:0)
有三种方法可以做到这一点:
1)将您的图片和图标放在不同的drawable
文件夹中,包括drawable-mdpi
,drawable-hdpi
,drawable-xhdpi
,drawable-xxhdpi
,drawable-xxxhdpi
根据屏幕分辨率从特定文件夹访问图像。不要在任何地方为图像应用固定值。固定尺寸可以根据不同的设备而变化,并且图像看起来会拉伸。所以使用 wrap_content
2)在dimens.xml
中为不同的values
文件夹设置尺寸。
values-mdpi\dimens.xml
values-hdpi\dimens.xml
values-xhdpi\dimens.xml
values-xxhdpi\dimens.xml
values-xxxhdpi\dimens.xml
3)正确使用LinearLayout
时使用android:layout_weight
。
答案 7 :(得分:0)
您可以定义多维文件,并根据屏幕大小添加每个视图的尺寸。 您可以找到详细的答案here
一组六个广义密度:
以下是official文档
答案 8 :(得分:0)
如果你想使用单一布局并且应该支持所有屏幕,如ldpi,mdpi,hdpi,x-hdpi,xx-hdpi,那么你必须在布局中使用权重来处理所有屏幕的屏幕尺寸
以下是一些事情:
If you want to divide the space equally between Views with the same weight – set 0dp as Views’ width.
If you set View width to wrap_content – size of the Views will depend on weight and content inside each View.