一:不同的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)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。
在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。
屏幕方向:
横屏竖屏自动切换:
可以在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,这样在手机屏幕方向变化的时候系统会自动调用相应的布局文件,避免一种布局文件无法满足两种屏幕显示的问题。
不切换:
以下步骤是网上流传的,不过我自己之前是通过图形化界面实现这个配置,算是殊途同归,有空我会把图片贴上来。
还要说明一点:每个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
}
}
分享到:
相关推荐
Android自适应屏幕布局是指在Android系统中实现屏幕自适应的布局方式,通过使用不同的布局文件和样式可以使屏幕布局适应不同的屏幕尺寸和方向。下面是关于Android自适应屏幕布局的详细知识点: 一、布局文件 在...
在Android开发中,自适应屏幕方向和大小是创建用户友好应用程序的关键步骤。随着移动设备种类的多样化,开发者需要确保他们的应用能在不同尺寸和方向的屏幕上正常工作。本压缩包文件"关于自适应屏幕方向和大小的一些...
在安卓应用开发中,自适应屏幕方向和大小是至关重要的,因为不同的设备有着各种各样的屏幕尺寸和方向,包括手机、平板以及横屏、竖屏的切换。本项目旨在分享在进行安卓APP开发时,如何有效地实现界面的自适应,确保...
在Android应用开发中,自适应屏幕方向和大小是至关重要的,因为Android设备有着广泛的屏幕尺寸和分辨率。这个压缩包文件“Android项目关于自适应屏幕方向和大小的一些经验”可能包含了如何处理这一问题的实践经验和...
在Android开发中,面对各种不同尺寸和方向的设备,如何实现应用的自适应屏幕是开发者必须面对的关键问题。本文将深入探讨如何在Android项目中处理屏幕适配,以确保应用在横屏和竖屏模式下都能提供良好的用户体验。 ...
### Android自适应屏幕大小与Layout布局详解 #### 一、不同屏幕尺寸的适应性设计 在Android应用开发中,为了确保应用能够在各种不同尺寸的屏幕上正常显示,开发者需要考虑多种屏幕分辨率的情况。例如,常见的屏幕...
本资源包“基于Android的关于自适应屏幕方向和大小的一些经验.zip”提供了宝贵的实践经验,适合Android初学者和毕业生作为参考。无论是使用Android Studio、IntelliJ IDEA还是Eclipse,都可以运行其中的示例,但推荐...
在Android开发中,自适应屏幕方向和大小是开发者必须面对的重要问题。这涉及到用户体验的优化,使得应用程序能在不同尺寸和方向的屏幕上都能正常且美观地显示。以下是一些关于自适应屏幕的关键知识点: 1. **屏幕...
下面我们将详细探讨自适应屏幕方向和大小的相关知识点。 1. **响应式设计基础** 响应式设计是确保应用在不同屏幕尺寸和分辨率下都能正常工作的核心理念。它涉及布局、图片、字体等元素的动态调整,以适应屏幕的...
在Android应用开发中,自适应屏幕方向和大小是至关重要的,因为Android设备有着广泛的屏幕尺寸和比例。本项目源码集合提供了一些实用的经验和方法,帮助开发者构建能够良好适应各种屏幕环境的应用。以下是对这些经验...
Android 自适应屏幕大小和 Layout 布局(横屏竖屏) Android 手机屏幕大小各不相同,例如 480x320、640x360、800x480 等。为了让 App 自动适应不同的屏幕大小,可以在 res 目录下创建不同的 layout 文件夹,例如 ...
在Android开发中,面对各种不同尺寸和分辨率的设备,如何实现应用的自适应屏幕是非常关键的一个环节。"22.android 自适应屏幕"这个项目提供了一个小的Demo,旨在帮助开发者解决Android应用在不同设备上的适配问题。...
Android 自适应不同屏幕大小的全部方法需要根据屏幕的配置和方向来实现复杂的布局,使用 "wrap_content" 和 "match_parent" 定义视图大小,提供可以根据屏幕大小自动伸缩的图片,并确保正确的布局应用在正确的设备...
Activity:代表应用的一个单独屏幕,负责管理界面元素的展示和用户交互。 Service:在后台执行长时间运行的任务,不提供用户界面,常用于播放音乐、处理网络请求等。 BroadcastReceiver:响应系统或应用内广播,例如...
1. **屏幕方向检测**:Android系统可以自动检测设备的方向,通过SensorManager和OrientationEventListener等API来获取当前是横屏还是竖屏。 2. **布局资源**:Android提供了不同的布局资源文件夹(如`layout-land`...