android应用自适应多分辨率的解决方法

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 的图片     

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

[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 
                } 
        }

写一个支持多分辨的程序,基于1.6开发的,建立了三个资源文件夹drawable-hdpi drawable-mdpi drawable-ldpi,里面分别存放72*72 48*48 36*36的icon图标文件。当我在G1(1.5的系统)上测试时,图标应该自适应为48*48才对啊,但实际显示的是36*36。怎么才能让其自适应 48*48的icon图标呢 

解决办法 drawable-hdpi drawable-mdpi drawable-ldpi改成drawable-480X320 drawable-800X480的多分辨支持的文件夹

时间: 2024-09-08 09:37:21

android应用自适应多分辨率的解决方法的相关文章

Android webview 内存泄露的解决方法

Android webview 内存泄露的解决方法 最近在activity嵌套webview显示大量图文发现APP内存一直在涨,没法释放内存,查了很多资料,大概是webview的一个BUG,引用了activity导致内存泄漏,所以就尝试传递getApplicationContext. 1.避免在xml直接写webview控件,这样会引用activity,所以在xml写一个LinearLayout,然后 linearLayout.addView(new MyWebview(getApplicati

Android键盘自动弹出解决方法分析

本文实例分析了Android键盘自动弹出解决方法.分享给大家供大家参考,具体如下: 1.在:复制代码 代码如下:activity android:name=".Uninstaller" android:label="@string/app_name" android:windowSoftInputMode="adjustPan"加入了:复制代码 代码如下:android:windowSoftInputMode="adjustPan&qu

Android启动模拟器报错解决方法_Android

Android模拟器报"Failed To Allocate memory 8"错误的解决办法 Android在启动模拟器AVD时,出现下面的异常:"Failed to allocate memory: 8",怎么办? 此错误是我们在允许AVD时,选择了默认的AVD插件所致. 解决方法:减少分配的内存大小.修改AVD的配置文件,将选项"hw.ramSize=1024"从1024改为256.如图所示:

Android启动模拟器报错解决方法

Android模拟器报"Failed To Allocate memory 8"错误的解决办法 Android在启动模拟器AVD时,出现下面的异常:"Failed to allocate memory: 8",怎么办? 此错误是我们在允许AVD时,选择了默认的AVD插件所致. 解决方法:减少分配的内存大小.修改AVD的配置文件,将选项"hw.ramSize=1024"从1024改为256.如图所示:

android studio-这个问题有解决方法吗,求大神指点

问题描述 这个问题有解决方法吗,求大神指点 解决方案 这个方法已经废弃了,新sdk不再支持了,建议使用Notification notification = new NotificationCompat.Builder(context)...这种方式 解决方案二: 线程池问题,求大神解释 解决方案三: 是传完参数后出现的错误还是直接调用不了这个方法 解决方案四: 除非你把你的sdk调低点也可以

android屏幕自适应的四种方法

转自:http://www.eoeandroid.com/home.php?mod=space&uid=636088&do=blog&id=48749 一.细说layout_weight     目前最为推荐的Android多屏幕自适应解决方案.     该属性的作用是决定控件在其父布局中的显示权重,一般用于线性布局中.其值越小,则对应的layout_width或layout_height的优先级就越高,一般横向布局中,决定的是layout_width的优先级:纵向布局中,决定的是

CSS布局中自适应高度的解决方法

css|解决|自适应 这是div+css布局中经常会碰到的基础问题,个人觉得采用背景图填充的方法,还是比较简单和切实可行的.最终效果. CSS源代码: body{ background: #EDEDED; font-size: 70%; font-family: Arial, Helvetica, sans-serif; line-height: 130%; color: #666666; margin: 0; padding: 0; text-align: center; } #layout{

Div即父容器不根据内容自适应高度的解决方法

解决|自适应 Div即父容器不根据内容自适应高度,我们看下面的代码: <div id="main"><div id="content"></div></div> 当Content内容多时,即使main设置了高度100%或auto.在不同浏览器下还是不能完好的自动伸展.内容的高度比较高了,但容器main的高度还是不能撑开. 我们可以通过三种方法来解决这个问题. 一,增加一个清除浮动,让父容器知道高度.请注意,清除浮动的容

忘记Android手机开机密码的解决方法

Android 手机使用Pattern图案加密后,如果忘记密码或多次解锁失败后,会被google自动锁定,无法再次进入开机首页. 本文就是针对这种情况,研究探索了一种解决的方法,具体锁定环境和操作步骤如下. 一.手机被锁定 Android 手机使用Pattern图案加密后,如果忘记密码.解锁多次失败后(5次+10次+n次错误),如下图 上图解锁多次失败后 ,google 账户会自动锁定手机,用户无法再次进入开机首页,画面如下: 上图中,用户被锁定 了,提示信息如下: Account unlock