一:不同的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方法。实现方式如下,不需要做太多的内容:

显示代码打印

 @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. Android程序有很多Activity,在B中如何关闭整个Android应用程序
  2. Android(安卓)开源项目维护者宣布退出
  3. Android(安卓)滑动效果入门篇(二)—— Gallery
  4. ExifInterface使用,Android(安卓)2.0新增类
  5. android直接在桌面生成快捷方式
  6. 成品app直播源码,Android自屏幕底部滑出更多面板的实现
  7. 隐藏Listview和RecyclerView 滑动边界的阴影,去除滚动条加分隔线
  8. Android当中切换图片
  9. android之动态更改屏幕方向的简单例子(LANDSCAPE与PORTRAIT)!

随机推荐

  1. Android res目录
  2. Android(安卓)中怎么设置全局自定义字体
  3. Android中fragment注意事项
  4. Android 弹出键盘往上挤压页面
  5. android异步加载图片显示,并且对图片进行
  6. [置顶] Android AsyncTask的源码分析
  7. Android判断网络状态的代码
  8. Android(安卓)的数据存储方式
  9. Android 软键盘将指定的布局顶上去
  10. Android开发学习——六大布局