`
熊滔爱孟涛静
  • 浏览: 121729 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android程序中屏幕问题解决方案

阅读更多

一:不同的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是纵向):


显示代码打印
01 <?xml version="1.0" encoding="utf-8"?>     

02 <manifest xmlns:android="http://schemas.android.com/apk/res/android"    

03       package="com.ray.linkit"    

04       android:versionCode="1"    

05       android:versionName="1.0">     

06     <application android:icon="@drawable/icon" android:label="@string/app_name">     

07         <activity android:name=".Main"    

08                   android:label="@string/app_name"    

09                   android:screenOrientation="portrait">     

10             <intent-filter>     

11                 <action android:name="android.intent.action.MAIN" />     

12                 <category android:name="android.intent.category.LAUNCHER" />     

13             </intent-filter>     

14         </activity>     

15                 <activity android:name=".GamePlay"    

16                 android:screenOrientation="portrait"></activity>     

17                 <activity android:name=".OptionView"    

18                 android:screenOrientation="portrait"></activity>     

19     </application>     

20     <uses-sdk android:minSdkVersion="3" />     

21 </manifest>
 

另外,android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置,那样,进行中的游戏就不会自动重启了!

有的程序适合从竖屏切换到横屏,或者反过来,这个时候怎么办呢?可以在配置Activity的地方进行如下的配置android:screenOrientation="portrait"。这样就可以保证是竖屏总是竖屏了,或者landscape横向。

而有的程序是适合横竖屏切换的。如何处理呢?首先要在配置Activity的时候进行如下的配置:android:configChanges="keyboardHidden|orientation",另外需要重写Activity的onConfigurationChanged方法。实现方式如下,不需要做太多的内容:

显示代码打印1 @Override  

2         public void onConfigurationChanged(Configuration newConfig) {    

3                 super.onConfigurationChanged(newConfig);    

4                 if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {    

5                         // land do nothing is ok    

6                 } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {    

7                         // port do nothing is ok    

8                 }    

9         }

分享到:
评论
1 楼 gangbener 2011-09-23  
我们是可以把不同分辨率的图片放到不同的图片文件夹中去,问题是:图片如果很多,那么必然导致真个应用程序的包很大,如果再根据不同分辨率来放不同的图片,整个包所占空间会更大。请问有无好的解决方法?谢谢!^_^

相关推荐

    Android程序设计基础

    第3章探讨用户界面,也就是大多数Android程序中最重要的部分。  致谢  我要感谢为本书成功出版做出贡献的许多人,包括审稿人Anthony Stevens、Gabor Paller、Fred Burke、Dianne Hackborn和Laurent Pontier,...

    Android DevCamp幻灯片分享:Android在多屏幕、多设备上的适配 | 布丁 任斐

    本演讲将从应用开发的角度,讨论在Android应用程序开发中,面对众多 Android 设备可能遇到的适配问题及解决方案,对众多的思想进行归纳总结,对一些案例进行剖析,并探讨在寻找最优解决方案过程中,应该注意和规避的...

    任斐:Android在多屏幕、多设备上的适配

    本演讲将从应用开发的角度,讨论在Android应用程序开发中,面对众多 Android 设备可能遇到的适配问题及解决方案,对众多的思想进行归纳总结,对一些案例进行剖析,并探讨在寻找最优解决方案过程中,应该注意和规避的...

    商铺管理系统android程序.zip

    Android 项目也可以是针对特定设备或特定需求进行自定义开发的软件解决方案。 以下是 Android 项目的一些主要特点和资料介绍: 1. 开放源代码:Android 是基于 Linux 内核的开源操作系统,开发人员可以自由获取、...

    Android多分辨率解决方案

    如今的智能手机用户对应用软件的舒适...但是由于Android的开源性,硬件厂商屏幕分辨率 不统一,据统计目前市场上Android系统手机的分辨率有10余种,分辨率分布如此广泛使得开发者在处理多分辨率适应方面遇到了不少难题

    Android自动化测试工具解决方案iTestin

    Android自动化测试工具iTestin重点功能: 基于Windows平台,为Android和iOS设备提供黑盒测试的自动化工具,...4)支持在PC上上传录制的脚本和应用程序到iTestin平台,在Testin云测终端云的其他终端上按脚本执行应用程序

    Android中获取手机屏幕大小的方法

    本文为大家解析Android中如何获取手机屏幕大小,提供一个解决方法,分享给大家供大家参考,具体内容如下 运行效果图: 运行程序后,当我们点击Button按钮时,可以看到下面的效果图: 具体代码: 我们可以通过使用...

    工作中经常用到的android开发代码2

    我个人在工作中常用的代码,自己边用...13.android模拟器设置为WVGA800时窗口只占半屏解决方法 14.获取设备屏幕尺寸 15.计算状态栏的高度 16.listView 焦点陷阱 17. 调用第三方程序 18. android listview 异步加载图片

    Google Android SDK开发范例大全(完整版)

    这个组织由 Google 领导,包括移动运营商、手持设备制造商、零部件制造商、软件解决方案和平台提供商以及市场营销公司。从软件开发的观点看,Android 正处在开源领域的中心位置。 市场上第一款支持 Android 的手机...

    Android移动应用开发(第3版)卷Ⅰ基础篇 (Shane Conder, Lauren Darcey) PDF扫描版

     《Android移动应用开发(第3版)卷Ⅰ:基础篇》涵盖了Android开发从概念、技术到市场推广应用的全部主题,内容包括Android平台概览、Android应用程序设计精髓、Android用户界面设计精髓、Android应用程序设计精髓、...

    详解Android中Runtime解决屏幕旋转问题(推荐)

    一般的解决方案是继承UINavrgationViewController,重写该类的相关方法,这样虽然也能解决问题,但是在重写的过程中至少产生两个多余的文件和不少的代码,这显然不是我们想要的。下面就使用一种较底层的方法解决这个...

    基于百度Asr SDK开发的Asr引擎,可以直接调用Android系统asr接口来进行语音识别.zip

    Android 项目也可以是针对特定设备或特定需求进行自定义开发的软件解决方案。 以下是 Android 项目的一些主要特点和资料介绍: 1. 开放源代码:Android 是基于 Linux 内核的开源操作系统,开发人员可以自由获取、...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    基于stm32、esp8266和Android的智能家居系统-微信小程序.zip

    Android 项目也可以是针对特定设备或特定需求进行自定义开发的软件解决方案。 以下是 Android 项目的一些主要特点和资料介绍: 1. 开放源代码:Android 是基于 Linux 内核的开源操作系统,开发人员可以自由获取、...

    基于Android端的图书管理系统- 类似于在图书馆的大屏幕上面使用---.zip

    Android 项目也可以是针对特定设备或特定需求进行自定义开发的软件解决方案。 以下是 Android 项目的一些主要特点和资料介绍: 1. 开放源代码:Android 是基于 Linux 内核的开源操作系统,开发人员可以自由获取、...

    精通ANDROID 3(中文版)1/2

    11.1.5 解决多线程问题  11.1.6 有趣的超时  11.1.7 使用HttpURLConnection  11.1.8 使用AndroidHttpClient  11.1.9 使用后台线程(AsyncTask)  11.1.10 使用AsyncTask处理配置更改  11.1.11 使用...

    Android端获取串口列表,修改串口权限,关闭系统串口打印,读写串口。.zip

    Android 项目也可以是针对特定设备或特定需求进行自定义开发的软件解决方案。 以下是 Android 项目的一些主要特点和资料介绍: 1. 开放源代码:Android 是基于 Linux 内核的开源操作系统,开发人员可以自由获取、...

    在Unity中获取Android系统的Sensor数据.zip

    Android 项目也可以是针对特定设备或特定需求进行自定义开发的软件解决方案。 以下是 Android 项目的一些主要特点和资料介绍: 1. 开放源代码:Android 是基于 Linux 内核的开源操作系统,开发人员可以自由获取、...

    Cinema Management System in Android(影院管理系统 Android 版).zip

    Android 项目也可以是针对特定设备或特定需求进行自定义开发的软件解决方案。 以下是 Android 项目的一些主要特点和资料介绍: 1. 开放源代码:Android 是基于 Linux 内核的开源操作系统,开发人员可以自由获取、...

    利用Android中Sqlite数据库的一个登陆注册系统(含加密模块).zip

    Android 项目也可以是针对特定设备或特定需求进行自定义开发的软件解决方案。 以下是 Android 项目的一些主要特点和资料介绍: 1. 开放源代码:Android 是基于 Linux 内核的开源操作系统,开发人员可以自由获取、...

Global site tag (gtag.js) - Google Analytics