wol*_*ine 21 android android-emulator android-layout
我正在开发一个关于android version2.2的程序.我已经阅读了很多关于支持多种屏幕尺寸的文档但仍然感到困惑 我设计了一个支持大屏幕和普通屏幕的布局文件,当我尝试使用小屏幕时,它不会调整布局以适应屏幕.我也在清单中使用了这段代码.
<supports-screens
android:resizeable="true"
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:anyDensity="true"
/>
Run Code Online (Sandbox Code Playgroud)
小屏幕的图像就在这里. 如何设置与小屏幕兼容的屏幕?在某处我通过使用文件夹"layout-small"找到了,但是如果我使用它,项目大小正在增加,我不希望这样,那么任何人都可以建议我这样做的最佳方法吗?
San*_*iya 34
所有屏幕的解决方案并支持所有布局.
mdpi hdpi xhdpi xxhdpi xxxhdpi
Launcher Icons (App Icons) 48 x 48 72 x 72 96 x 96 144 x 144 192 x 192
Action Bar,Toolbar,Tab Icons 24 x 24 36 x 36 48 x 48 72 x 72 96 x 96
Notification Icons 24 x 24 36 x 36 48 x 48 72 x 72 96 x 96
Run Code Online (Sandbox Code Playgroud)
可绘制文件夹:
ldpi: Portrait: 240 X 320px. Landscape: 320 X 240px.
mdpi: Portrait: 320 X 480px. Landscape: 480 X 320px.
hdpi: Portrait: 480 X 800px. Landscape: 800 X 480px.
xhdpi: Portrait: 640 X 960px. Landscape: 960 X 640px.
xxhdpi: Portrait: 960 X 1600px. Landscape: 1600 X 960px.
xxxhdpi: Portrait: 1280 X 1920px. Landscape: 1920 X 1280px.
Run Code Online (Sandbox Code Playgroud)
布局:
res/drawable (default)
res/drawable-ldpi/ (240x320 and nearer resolution)
res/drawable-mdpi/ (320x480 and nearer resolution)
res/drawable-hdpi/ (480x800, 540x960 and nearer resolution)
res/drawable-xhdpi/ (720x1280 - Samsung S3, Micromax Canvas HD etc)
res/drawable-xxhdpi/ (1080x1920 - Samsung S4, HTC one, Nexus 5, etc)
res/drawable-xxxhdpi/ (1440X2560 - Nexus 6,Samsung S6edge).
ldpi (low) ~120dpi
mdpi (medium) ~160dpi
hdpi (high) ~240dpi
xhdpi (extra-high) ~320dpi
xxhdpi (extra-extra-high) ~480dpi
xxxhdpi (extra-extra-extra-high) ~640dpi
Run Code Online (Sandbox Code Playgroud)
参考链接:
https://developer.android.com/guide/practices/screens_support.html
https://design.google.com/devices/
所有基于Android的手机和平板电脑都有屏幕分辨率列表吗?
http://www.emirweb.com/ScreenDeviceStatistics.php
是的,我已经找到了解决问题的方法,你是对的我个人认为为每个屏幕分辨率制作布局都需要时间,并使你的项目规模变大.
为了使布局适合所有屏幕分辨率,我已经实现了我自己的技术,即以百分比设置宽度和高度
当我们设置一些恒定的宽度或高度值时,问题就出现了.Views/Layouts100dp
解决方案非常简单,尝试使用match_parent以便视图填充空白空间或使用weight并定义每个View相对于其他的相对,Views这将有助于您的布局在几乎每个屏幕分辨率和运行时设置LayoutParams只有那些Views/Layouts具有一些恒定宽度或以百分比表示的高度.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/mLayout"
android:layout_width="280px"
android:layout_height="300px" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
注意:我已经使用PX为固定大小的布局的宽度/高度,因为在LayoutParams layoutParams = new LayoutParams(int width, int height);对width和height取的值作为像素
这是一个示例代码
final ViewTreeObserver mLayoutObserver = mLayout.getViewTreeObserver();
mLayoutObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
DisplayMetrics metrics = getResources().getDisplayMetrics();
int deviceWidth = metrics.widthPixels;
int deviceHeight = metrics.heightPixels;
float widthInPercentage = ( (float) 280 / 320 ) * 100; // 280 is the width of my LinearLayout and 320 is device screen width as i know my current device resolution are 320 x 480 so i'm calculating how much space (in percentage my layout is covering so that it should cover same area (in percentage) on any other device having different resolution
float heightInPercentage = ( (float) 300 / 480 ) * 100; // same procedure 300 is the height of the LinearLayout and i'm converting it into percentage
int mLayoutWidth = (int) ( (widthInPercentage * deviceWidth) / 100 );
int mLayoutHeight = (int) ( (heightInPercentage * deviceHeight) / 100 );
LayoutParams layoutParams = new LayoutParams(mLayoutWidth, mLayoutHeight);
mLayout.setLayoutParams(layoutParams);
}
});
Run Code Online (Sandbox Code Playgroud)
我想这个代码几乎是自我解释的,如果任何人仍然需要帮助,你可以马上问
结论:如果你需要设置一些固定宽度/高度为您Views/Layouts在始终设置值像素的布局文件(即XML),然后以编程方式设置LayoutParams.
建议:我认为Google Android Guys应该认真考虑将设备更换dp/dip为percentage.
现在支持不同的屏幕尺寸更容易了!使用新的尺寸单位SDP。
SDP - 可扩展的大小单位
提供新大小单位的 android SDK - sdp(可伸缩 dp)。此尺寸单位随屏幕尺寸缩放。它可以帮助 Android 开发人员支持多屏幕。
对于文本视图,请参考ssp,它基于文本的 sp 大小单位。
| 归档时间: |
|
| 查看次数: |
121383 次 |
| 最近记录: |