怎么适应不同分辨率

程序人生み 2012-12-26 03:27:12
本人新手
最近公司做一个应用程序,经理说要适应480*800和540*960二种分辨率
怎么做
谢谢
...全文
283 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zy1235678 2012-12-27
  • 打赏
  • 举报
回复
这个答复太他妈全面了!
引用 7 楼 shimiso 的回复:
1. 首先是建立多个layout文件夹(drawable也一样)。 在 在res目录下建立多个layout文件夹,文件夹名称为layout-800x480等。需要适应那种分辨率就写成什么。 注意: a. 较大的数字要写在前面:比如layout-854x480而不能写layout-480x854. b. 两个数字之前是小写字母x,而不是乘号。 2. 在不能的layout下调整layou……
b87936260 2012-12-27
  • 打赏
  • 举报
回复
480和540都在hdpi中,差别不大。dip布局基本能搞定
袭烽 2012-12-26
  • 打赏
  • 举报
回复
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 的图片   在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。 备注:三者的解析度不一样,就像你把电脑的分辨率调低,图片会变大一样,反之分辨率高,图片缩小。 屏幕方向: 横屏竖屏自动切换: 可以在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图标呢
sinde_tian 2012-12-26
  • 打赏
  • 举报
回复
如果你是指一些图片的话,大小。 要保证图片不失真 那必须有两套。 如果是控件的话 在XML中可以用sp单位 在代码中可以用根据屏幕密度来算
zhgq2134 2012-12-26
  • 打赏
  • 举报
回复
首先你要android:layout_width android:layout_height 设定的大小单位是 dip 最好图片做两套, 不过我是就做了一套大分辨率的图 在小分辨率上一样用
luckyc2008 2012-12-26
  • 打赏
  • 举报
回复
写两个不同的layout,图片做两套,比如建个480*800的目录,启动能识别读哪个的
a-white-lie 2012-12-26
  • 打赏
  • 举报
回复
写Style样式
程序人生み 2012-12-26
  • 打赏
  • 举报
回复
有些东西总是不好布局,比如背景图片
引用 1 楼 carmili 的回复:
android:layout_width android:layout_height 意思分别是,宽度布满整个屏幕,高度布满整个屏幕
J_King 2012-12-26
  • 打赏
  • 举报
回复
android:layout_width android:layout_height 意思分别是,宽度布满整个屏幕,高度布满整个屏幕

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧