`
huangwuyi
  • 浏览: 43168 次
  • 性别: Icon_minigender_1
  • 来自: 福建厦门
社区版块
存档分类
最新评论

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)

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

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

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

横屏竖屏自动切换:

     可以在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" />
                <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自适应屏幕大小和LAYOUT布局横屏竖屏.doc

    ANDROID自适应屏幕大小和LAYOUT布局横屏竖屏

    Android自适应屏幕大小和layout布局(横屏竖屏)

    ### Android自适应屏幕大小与Layout布局详解 #### 一、不同屏幕尺寸的适应性设计 在Android应用开发中,为了确保应用能够在各种不同尺寸的屏幕上正常显示,开发者需要考虑多种屏幕分辨率的情况。例如,常见的屏幕...

    Android自适应屏幕大小和layout布局(横屏竖屏)[定义].pdf

    Android 自适应屏幕大小和 Layout 布局(横屏竖屏) Android 手机屏幕大小各不相同,例如 480x320、640x360、800x480 等。为了让 App 自动适应不同的屏幕大小,可以在 res 目录下创建不同的 layout 文件夹,例如 ...

    android自适应屏幕布局

    Android自适应屏幕布局是指在Android系统中实现屏幕自适应的布局方式,通过使用不同的布局文件和样式可以使屏幕布局适应不同的屏幕尺寸和方向。下面是关于Android自适应屏幕布局的详细知识点: 一、布局文件 在...

    Android studio通过切换不同layout实现横竖屏适配

    总结,Android Studio通过提供不同的layout资源文件来实现横竖屏适配,开发者只需创建相应的布局文件并调整控件布局,然后在AndroidManifest.xml中指定Activity的屏幕方向,就可以轻松实现横竖屏的切换。测试时,...

    android横竖屏切换和自适应屏幕

    2. **布局资源**:Android提供了不同的布局资源文件夹(如`layout-land`用于横屏,`layout-port`用于竖屏),开发者可以在这两个文件夹下创建对应方向的布局文件。 3. **配置变更**:当设备旋转时,系统会触发配置...

    22.android 自适应屏幕

    分别为横屏(landscap)和竖屏(portrait)提供不同的布局文件,以优化不同方向下的用户体验。 11. **自适应国际化语言(22.1_android 自适应国际化语言)**: 使用`res/values/strings.xml`等不同语言的资源...

    安卓app开发项目-关于自适应屏幕方向和大小的一些经验(源码).zip

    在安卓应用开发中,自适应屏幕方向和大小是至关重要的,因为不同的设备有着各种各样的屏幕尺寸和方向,包括手机、平板以及横屏、竖屏的切换。本项目旨在分享在进行安卓APP开发时,如何有效地实现界面的自适应,确保...

    android屏幕自适应

    为横屏和竖屏分别创建layout-land和layout-port目录,放置相应的布局文件,确保两种模式下的用户体验。 12. **适配平板和手机** 使用Android的碎片(Fragment)和多布局(multi-pane layout)技术,可以创建适应...

    android关于自适应屏幕方向和大小的一些经验.zip

    本文将深入探讨如何在Android项目中处理屏幕适配,以确保应用在横屏和竖屏模式下都能提供良好的用户体验。 首先,我们需要理解Android的屏幕尺寸和密度的概念。屏幕尺寸通常分为小、正常、大、超大四种,而密度则有...

    android 自适应屏幕

    本篇文章将详细介绍如何处理Android应用的屏幕自适应问题,包括横屏和竖屏的切换以及不同分辨率的适配。 首先,遇到的第一个问题是横屏和竖屏的切换。Android系统提供了一种灵活的方式来处理这个问题。开发者可以在...

    android屏幕自适应案例详解

    10. **适配横竖屏**:通过在AndroidManifest.xml中配置Activity的screenOrientation属性,可以指定应用在横屏或竖屏模式下的表现。 11. **使用RecyclerView和GridLayoutManager**:RecyclerView是一个高效的列表...

    Android项目关于自适应屏幕方向和大小的一些经验.rar

    在Android应用开发中,自适应屏幕方向和大小是至关重要的,因为Android设备有着广泛的屏幕尺寸和比例。这个压缩包文件“Android项目关于自适应屏幕方向和大小的一些经验”可能包含了如何处理不同屏幕尺寸和方向的...

    关于自适应屏幕方向和大小的一些经验.zip

    在安卓应用开发中,自适应屏幕方向和大小是至关重要的,因为不同的设备有着各种各样的屏幕尺寸和纵横比。这份资料“关于自适应屏幕方向和大小的一些经验.zip”包含了两个文件,一个名为“关于自适应屏幕方向和大小的...

    基于Android的关于自适应屏幕方向和大小的一些经验.zip

    本资源包“基于Android的关于自适应屏幕方向和大小的一些经验.zip”提供了宝贵的实践经验,适合Android初学者和毕业生作为参考。无论是使用Android Studio、IntelliJ IDEA还是Eclipse,都可以运行其中的示例,但推荐...

    Android_surfaceView与layout屏幕适配总结

    8. **适配横竖屏**:通过在AndroidManifest.xml中设置`android:configChanges="orientation|screenSize"`,可以手动处理横竖屏切换时的布局变化。 至于`SurfaceView_Test.rar`和`Layout_Test.rar`这两个压缩包,...

    android安卓开发app如何做到自适应手机屏幕大小,适应不同分辨率的手机.zip

    6. **适配屏幕方向**:应用应支持横屏和竖屏模式,并确保在两种模式下布局都能正确显示。在布局文件中,可以使用`screenOrientation`属性来指定特定布局的方向。 7. **使用比例和百分比布局**:Android提供了...

Global site tag (gtag.js) - Google Analytics