`
熊滔爱孟涛静
  • 浏览: 124821 次
  • 性别: 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中手动处理屏幕旋转问题

    在Android应用程序开发过程中,开发者经常面临的一个问题是屏幕旋转导致的应用性能下降。当设备从竖屏切换至横屏(或者相反),系统默认行为是销毁当前Activity并重新创建一个新的实例。这种行为虽然简单可靠,但在...

    Android程序设计基础

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

    Android autolayout 屏幕适配

    "Android autolayout"是Google推出的一种解决屏幕适配问题的方案,它旨在帮助开发者创建能够自动调整布局以适应不同屏幕大小的应用程序。本篇文章将深入探讨Android autolayout的概念、原理以及如何在实际项目中应用...

    android 自适应屏幕翻转

    本文将深入探讨Android中如何实现屏幕自适应翻转,包括基础概念、实现方法以及潜在问题的解决方案。 #### 二、屏幕翻转的基础 屏幕翻转功能依赖于设备内置的重力感应传感器(加速度计),它可以检测到设备的方向...

    android触摸屏测试程序

    4. 解决问题:针对测试中发现的问题,可以联系设备制造商或者应用开发者寻求解决方案。 总结,"android触摸屏测试程序"是Android生态系统中不可或缺的一部分,它帮助我们确保设备的触摸屏达到最优状态,为用户提供...

    Android实例之程序界面内截取屏幕

    总之,"Android实例之程序界面内截取屏幕"提供了一个简单易用的解决方案,帮助开发者在Android应用内部实现截图功能。无论是在Delphi还是原生Java中,这个功能都是通过类似的步骤来实现的,涉及获取屏幕尺寸、创建...

    Android软件自适应屏幕技巧

    3. **兼容模式显示在大屏幕**:这种方式主要用于解决小屏幕应用在大屏幕设备上的显示问题。通过设置特定的参数,可以让应用在大屏幕设备上仍然保持良好的可读性和可用性。 ##### 示例代码展示 下面是一个简单的...

    Android程序中嵌入百度移动联盟广告.rar

    以下将详细讲解这一过程,以及可能遇到的问题和解决方法。 1. **百度移动联盟简介** 百度移动联盟是中国最大的移动广告平台之一,为开发者提供丰富的广告形式,如横幅广告、插屏广告、激励视频广告等。通过加入...

    快速转化J2ME程序为Android程序

    《快速转化J2ME程序为Android程序》 随着Android智能手机的普及,许多开发者面临的问题是如何将原有的J2ME应用程序高效地迁移到Android平台,以利用更广泛的设备和用户基础。J2MEBuilder,一个名为android_midp.jar...

    Android中录制屏幕视频案例

    对于低于API级别21的设备,可以考虑使用第三方库或者系统级别的解决方案。此外,注意处理可能出现的异常情况,如用户拒绝权限请求、录制过程中出现错误等。 通过以上步骤,你就可以在Android应用中实现一个基本的...

    加减乘除的android程序

    在Android编程领域,开发一个实现加减乘除功能的应用是一个基础且重要的练习,这有助于开发者理解和掌握Android应用的基本架构和交互逻辑。...在实践中,不断迭代和优化这个程序,可以逐步提升编程技能和问题解决能力。

    Android屏幕自适应

    在Android开发中,屏幕自适应是一项至关重要的技术,它确保应用程序在不同尺寸和分辨率的设备上都能呈现良好的视觉效果。本文将深入探讨四种实现Android屏幕自适应的方法。 1. **使用dp(density-independent ...

    android 声音流媒体rtsp解决方案

    在Android平台上实现声音流媒体RTSP(Real Time Streaming Protocol)的解决方案是一项技术密集型的任务,涉及到多媒体处理、网络通信和播放器控制等多个方面。本文将深入探讨如何在Android上搭建和实现RTSP音频流...

    一些简单的Android程序,适合初学者参考

    在本资源中,"一些简单的Android程序,适合初学者参考" 是一个专门为Android初学者设计的集合,包含了一些基础的Android应用程序示例。这个压缩包不仅提供了实践项目,还附带了PDF版的全套Android基础教程,使得学习...

    浅谈Android屏幕自适应.pdf

    针对屏幕的自适应问题,我们摸索出了自己的做法,这些解决方案都是在实际的项目中验证过的,都是相对比较成熟的解决方案,对广大开发人员具有一定的借鉴意义。 在解决方案中,我们提出了一个实践可行的解决方案,该...

    android 屏幕适配(百分比适配)

    "百分比适配"是Google提出的一种解决方案,旨在帮助开发者创建跨不同屏幕尺寸和密度的应用程序,确保用户界面在所有设备上都能保持一致的视觉体验。下面我们将详细探讨这一主题。 1. **屏幕适配问题**: 在Android...

    pc实时显示Android屏幕画面

    Java具有跨平台的特性,可以在各种操作系统上运行,这使得该解决方案能在不同的PC环境中工作。 在实现过程中,可能包含以下步骤: - Android端通过访问framebuffer接口获取屏幕图像。 - 使用libjpeg库将屏幕图像...

    android-6.0屏幕旋转补丁

    "android-6.0屏幕旋转补丁"就是为了解决这个问题,它通过修改Settings.apk以及相关框架文件来添加或恢复屏幕旋转功能。 首先,我们来看看这个补丁的组成部分。这里有两个关键的补丁文件:`screen_rotate_frameworks...

Global site tag (gtag.js) - Google Analytics