一:不同的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)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。
在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。
三:横屏竖屏
以下步骤是网上流传的,不过我自己之前是通过图形化界面实现这个配置,算是殊途同归,有空我会把图片贴上来。
还要说明一点:每个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" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".GamePlay"
android:screenOrientation="portrait"></activity>
<activity android:name=".OptionView"
android:screenOrientation="portrait"></activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>
另外,android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置,那样,进行中的游戏就不会自动重启了!
有的程序适合从竖屏切换到横屏,或者反过来,这个时候怎么办呢?可以在配置Activity的地方进行如下的配置android:screenOrientation="portrait"。这样就可以保证是竖屏总是竖屏了,或者landscape横向。
而有的程序是适合横竖屏切换的。如何处理呢?首先要在配置Activity的时候进行如下的配置:android:configChanges="keyboardHidden|orientation",另外需要重写Activity的onConfigurationChanged方法。实现方式如下,不需要做太多的内容:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
// land do nothing is ok
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
// port do nothing is ok
}
}
- 大小: 14.9 KB
分享到:
相关推荐
### Android开发中的drawable-(hdpi,mdpi,ldpi)和WVGA,HVGA,QVGA的区别以及联系 在Android应用开发过程中,为了确保应用界面在不同尺寸、分辨率的设备上都能保持良好的视觉效果,开发者需要理解并合理利用Android...
- 例如,在`AndroidManifest.xml`文件中为某个Activity添加`android:screenOrientation="portrait"`表示竖屏模式,`android:screenOrientation="landscape"`表示横屏模式。 示例代码如下: ```xml android:name...
指定密度(density-specific)的合适资源,是指 ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)。 Android 有个自动匹配机制去选择对应的布局和图片资源。开发者可以根据物理尺寸的大小准备 5 套...
本篇文章将深入探讨Android系统如何处理不同分辨率的显示,并提供有效的适配策略。 一、Android屏幕分类 Android系统根据屏幕的尺寸和密度将其分为五类:小屏(small)、正常屏(normal)、大屏(large)、特大屏...
开发者需要为不同密度(ldpi, mdpi, hdpi, xhdpi, xxhdpi等)、屏幕尺寸(small, normal, large, xlarge等)以及语言和地区提供相应的资源。在本例中,横屏和竖屏的 BatteryMeterView 图片属于不同的屏幕尺寸资源,...
例如,我们可以为小屏幕(ldpi)、中等屏幕(mdpi)、高分辨率屏幕(hdpi)、超高清屏幕(xhdpi)以及更高分辨率的设备创建相应的`values`目录,如`values-mdpi`、`values-hdpi`等。 在这些`values`目录下,我们...
例如,ldpi(低密度),mdpi(中密度),hdpi(高密度),xhdpi(超高清)等是密度相关的文件夹,而sw360dp,sw480dp等则对应不同的屏幕宽度阈值。这个工具能够自动生成这些文件夹下的XML布局文件,确保应用在不同...
本篇文章将深入探讨“Android-Android屏幕适配方案自动生成不同分辨率的值”这一主题,帮助开发者构建能够在各种设备上完美显示的应用。 首先,我们需要理解Android屏幕的基本概念。Android屏幕主要由屏幕尺寸...
首先,Android设备有多种屏幕密度,如低密度(LDPI)、中密度(MDPI)、高密度(HDPI)、超高清密度(XHDPI)等。每种密度对应一个基准点(DP)的物理像素数量,例如MDPI对应1dp等于1px。为了在不同密度的屏幕上呈现...
精确适配方式 2:建立不同分辨率的文件,实现多种分辨率精确适配。首先建立多个 layout 文件夹(drawable 也一样)在 res 目录下建立多个 layout 文件夹,文件夹名称为 layout-800x480 等。需要适应那种分辨率就写成...
同时,也可以添加 screen density 限定,例如,hdpi, ldpi, mdpi, xhdpi 等,以适应不同的屏幕密度。 在实际开发过程中,屏幕尺寸不够直观,Android 将其转换为分辨率表示,根据屏幕具体分辨率可选择相应的限定符。...
在Android开发中,面对各种不同尺寸和分辨率的设备,如何实现多屏幕多分辨率的适配是开发者必须掌握的关键技能。Android系统提供了丰富的机制来帮助我们处理这个问题,使得应用能够在各种屏幕上正常显示,提供良好的...
"android分辨率适配源码+apk包" 提供了一个解决这一问题的实例,它包含源码和可安装的APK应用,帮助开发者了解如何在Android应用中实现自适应不同分辨率的屏幕。 首先,我们来理解分辨率适配的基本概念。Android...
这种适配方式确保了在不同分辨率的屏幕上都能获得一致的用户体验。 再来看看iOS设备的屏幕尺寸和屏幕密度情况。以iPhone系列为例,不同型号的iPhone屏幕尺寸和屏幕密度不同,屏幕密度一般分为@1x、@2x、@3x三种,...
Android系统支持多种屏幕尺寸和分辨率,包括小屏、中屏、大屏以及超大屏,对应的像素密度有ldpi(低密度)、mdpi(中密度)、hdpi(高密度)、xhdpi(超高密度)等。为了实现适配,开发者需要创建不同尺寸和密度的...
本文将详细介绍Android系统中的屏幕分辨率概念、不同分辨率密度下的资源文件命名规则以及实际应用场景。 #### 一、屏幕分辨率的基本概念 屏幕分辨率是指显示屏所能显示的像素数量,通常用宽度×高度(例如:480×...
例如,针对屏幕尺寸,可以在`res/layout`目录下创建如`layout-land`(横屏)和`layout-port`(竖屏)的子目录,分别放置横屏和竖屏布局文件。对于不同分辨率,可以创建如`layout-sw320dp`、`layout-sw480dp`等目录,...
在Android开发过程中,适配不同分辨率的设备是一项重要的任务,因为Android设备的屏幕尺寸和像素密度千差万别。本文将深入探讨如何选择分辨率并自动生成对应的`dimen.xml`文件,以实现更加灵活和高效的资源适配。 `...
3. **图像资源适配**:对于图标、图片等视觉元素,需要提供不同密度的版本(ldpi, mdpi, hdpi, xhdpi, xxhdpi等),以确保在不同分辨率设备上显示清晰。Android的mipmap资源目录和iOS的@2x, @3x图像是解决这个问题的...