android屏幕适配问题_第1页
android屏幕适配问题_第2页
android屏幕适配问题_第3页
android屏幕适配问题_第4页
android屏幕适配问题_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何将一个应用程序适配在不同的手机上,虽然这不算是一个技术问题,但是对于刚刚做屏幕的开发人员来说,还真不是一件多么简单的事情。 首先:你需要在AndroidManifest.xml文件的元素如下添加子元素 名如其意,以上是为我们的屏幕设置多分辨率支持(更准确的说是适配大、中、小三种密度)。android:anyDensity=true ,这一句对整个的屏幕都起着十分重要的作用,值为true,我们的应用程序当安装在不同密度的手机上时,程序会分别加载hdpi,mdpi,ldpi文件夹中的资源。 相反,如果值设置为false,即使我们在hdpi,mdpi,ldpi文件夹下拥有同一种资源,那么应用也不会自动地去相应文件夹下寻找资源,这种情况都是出现在高密度,以及低密度的手机上,比如说一部240320像素的手机,如果设置android:anyDensity=false,Android系统会将240 x 320(低密度)转换为320480(中密度),这样的话,应用就会在小密度手机上加载mdpi文件中的资源。 2.细心的人会发现自android2.0开始之后drawable文件被三个文件夹drawable-hdpi,drawable-mdpi,drawable-ldpi三个文件夹所取代,有些编程人员为了让应用程序默认地加载某些图片,他们会特意地去在android2.0之后的应用程序中重新创建drawable文件夹,其实这样做完全没有必要,通过第一段的分析我们得知,android:anyDensity=false,则应用会将大小密度转变成中密度,从而去加载mdpi中的资源。这里同样,当android:anyDensity=false,则应用会去加载mdpi中的资源。 总结一下: 第一:android:anyDensity=true,系统会依据屏幕密度,自动去找对应的文件夹 第二:android:anyDensity=false, (1) 如果drawable-hdpi,drawable-mdpi,drawable-ldpi三个文件夹中有同一张图片资源的不同密度表示,那么系统会去加载drawable_mdpi文件夹中的资源 (2) 如果drawable-hpdi中有高密度图片,其它两个文件夹中没有对应图片资源,那么系统会去加载drawable-hdpi中的资源。 (3) 如果drawable-hdpi,drawable-mdpi中有图片资源,drawable-ldpi中没有对应的图片资源,那么系统会加载drawable-mdpi文件夹中的资源 3. 注意上图各种文件夹的不同表示。 drawable-hdpi 该图片即适用于横屏,也适用于竖屏 drawable-land-hdpi,当屏幕为横屏,且为高密度时,加载此文件夹中的资源 drawable-port-hdpi,当屏幕为竖屏,且为高密度时,加载此文件夹中的资源 3. 有时候会根据需要在代码中动态地设置某个值,比如地图,地图的pin和地图的地址提示框的相对偏移量在不同密度的手机上是不同的。这时候可以通过以下方法求出屏幕密度: DisplayMetrics metric = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metric); int densityDpi = metric.densityDpi; / 屏幕密度DPI(120 / 160 / 240) 然后可以在代码中为这几种密度分别设置便宜量 但是这种方法最好不要使用,最好的方式是在xml文件中不同密度的手机进行分别设置。 这里地图的偏移量可以在values-hpdi,values-mdpi,values-ldpi三种文件夹中的dimens.xml文件进行设置 值得一提的是: 40dp -14dp 这里的负数是完全起作用的,系统会认为它是一个负值 4. 各大手机厂商对于Android操作系统都有或多或少的改动,当然这些改动会对我们应用程序产生某些影响 比如: (1)系统源代码中连接music服务的aidl文件所在包名:com.android.music (2)LG则可能将该aidl文件修改所在的包(例如修改为com.android.music.player),并且修改其中的文件内容(增加一个方法,或者减少几个方法,或者修改方法名称)那么我们的应用要想在LG的手机上发布,那么我们就必须改变所要连接的aidl文件,必须跟LG厂商修改的完全一致。 5. 国际化问题. 有时候在xml中设置了相应的语言,但是为什么当我们更改语言之后,UI显示仍然不起作用? 不要怀疑是系统出了问题,这与我们在代码中引用values/string.xml中字符串的方式有关。 错误的方式: 1. 声明全局变量private static String tempStr; 2. 在onCreate方法中对该变量赋值tempStr = context.getString(R.string.test); 3. 在更新UI的方法(非onCreate方法)中引用该变量。textView.setText(tempStr); 原因是由于,当修改本地语言时,onCrea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论