当前位置: 代码迷 >> Android >> 如何适应不同分辨率
  详细解决方案

如何适应不同分辨率

热度:32   发布时间:2016-05-01 12:08:45.0
怎么适应不同分辨率
本人新手
最近公司做一个应用程序,经理说要适应480*800和540*960二种分辨率
怎么做
谢谢

------解决方案--------------------
android:layout_width
android:layout_height 
意思分别是,宽度布满整个屏幕,高度布满整个屏幕
------解决方案--------------------
写Style样式
------解决方案--------------------
写两个不同的layout,图片做两套,比如建个480*800的目录,启动能识别读哪个的
------解决方案--------------------
首先你要android:layout_width
android:layout_height  设定的大小单位是 dip

最好图片做两套, 不过我是就做了一套大分辨率的图 在小分辨率上一样用
------解决方案--------------------
如果你是指一些图片的话,大小。  要保证图片不失真   那必须有两套。 如果是控件的话   在XML中可以用sp单位     在代码中可以用根据屏幕密度来算
------解决方案--------------------
1. 首先是建立多个layout文件夹(drawable也一样)。
在 
在res目录下建立多个layout文件夹,文件夹名称为layout-800x480等。需要适应那种分辨率就写成什么。
注意:
a. 较大的数字要写在前面:比如layout-854x480而不能写layout-480x854.
b. 两个数字之前是小写字母x,而不是乘号。
2. 在不能的layout下调整layout 的长宽等各种设置。以适应不同的分辨率。
3 最后需要在AndroidManifest.xml里面添加下面一段,没有这一段自适应就不能实现:
</application>

<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:anyDensity = "true"/>

</manifest>

在</application>标签和</manifest> 标签之间添加上面那段代码。即可
 

Android自适应不同分辨率或不同屏幕大小的layout布局(横屏
------解决方案--------------------
竖屏)

一:不同的layout

Android手机屏幕大小不一,有480x320, 640x360, 800x480.怎样才能让App自动适应不同的屏幕呢? 
其实很简单,只需要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。

二:hdpi、mdpi、ldpi

在之前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。

  drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:

  (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)

  (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)

  (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)

  系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。

更正:应该是对应不同density 的图片

  在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。

备注:三者的解析度不一样,就像你把电脑的分辨率调低,图片会变大一样,反之分辨率高,图片缩小。  
屏幕方向:

横屏竖屏自动切换:

可以在res目录下建立layout-port-800x600和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,这样在手机屏幕方向变化的时候系统会自动调用相应的布局文件,避免一种布局文件无法满足两种屏幕显示的问题。

不同分辨率横屏竖屏自动切换:

以800x600为例 
可以在res目录下建立layout-port-800x600和layout-land-800x600两个目录

不切换:

以下步骤是网上流传的,不过我自己之前是通过图形化界面实现这个配置,算是殊途同归,有空我会把图片贴上来。

还要说明一点:每个activity都有这个属性screenOrientation,每个activity都需要设置,可以设置为竖屏(portrait),也可以设置为无重力感应(nosensor)。

要让程序界面保持一个方向,不随手机方向转动而变化的处理办法:
在AndroidManifest.xml里面配置一下就可以了。加入这一行android:screenOrientation="landscape"。 
例如(landscape是横向,portrait是纵向):
Java代码:
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.ray.linkit" 
android:versionCode="1" 
android:versionName="1.0"> 
<application android:icon="@drawable/icon" android:label="@string/app_name"> 
<activity android:name=".Main" 
android:label="@string/app_name" 
android:screenOrientation="portrait"> 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
  相关解决方案