付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android自适应屏幕技术layout自适应屏幕大小Android手机屏幕大小不一,有480x320,640x360,800x480.怎样才能让App自动适应不同的屏幕呢?其实很简单,只需要在res目录下创建不同的layout文件夹,比如:layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。注意:包的命名要求,大数值放前面:layout-640x360,layout-800x480图片自适应屏幕大小前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。drawable-hdpi、drawable-mdpi、drawable-ldpi的区别:drawable-hdpi里面存放高分辨率的图片,如WVGA(480x800),FWVGA(480x854)drawable-mdpi里面存放中等分辨率的图片,如HVGA(320x480)drawable-ldpi里面存放低分辨率的图片,如QVGA(240x320)系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。字体自适应屏幕大小 只需要在res目录下创建不同的values文件夹,比如:values-640x360,values-800x480,所有的values文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的values进行使用。layout自适应屏幕方向横屏竖屏自动切换 可以在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,这样在手机屏幕方向变化的时候系统会自动调用相应的布局文件,避免一种布局文件无法满足两种屏幕显示的问题。禁用自动切换 只需要在AndroidManifest.xml文件中对应的activity加入android:screenOrientation属性限制:限制此页面横屏显示:Android:screenOrientation="landscape"限制此页面数竖屏显示:Android:screenOrientation="portrait"Android横竖屏切换要解决的问题布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,它有以下几个参数:"unspecified":默认值由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向."landscape":横屏显示(宽比高要长)"portrait":竖屏显示(高比宽要长)"user":用户当前首选的方向"behind":和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)"sensor":有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。"nosensor":忽略物理感应器,这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。也可以在Java代码中通过setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)来设置。如果要让软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同的布局。可以通过以下方法来切换布局:1)在res目录下建立layout-land和layout-port目录,相应的layout文件不变,比如main.xml。layout-land是横屏的layout,layout-port是竖屏的layout,其他的不用管,模拟器会自动寻找。2)通过this.getResources().getConfiguration().orientation来判断当前是横屏还是竖屏然后来加载相应的xml布局文件。因为当屏幕变为横屏的时候,系统会重新呼叫当前Activity的onCreate方法,你可以把以下方法放在你的onCreate中来检查当前的方向,然后可以让你的setContentView来载入不同的layoutxml.//判断横竖屏,并加载不同的布局文件if(this.getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE){ Log.i("info","landscape");//横屏 this.setContentView(R.layout.main_land);}elseif(this.getResources().getConfiguration().orientation==Configuration.ORIENTATION_PORTRAIT){ Log.i("info","portrait");//竖屏 this.setContentView(R.layout.main_port);}重新载入问题。如果不需要从新载入,可以在AndroidManifest.xml中加入配置android:configChanges="orientation|keyboardHidden",这样在程序中Activity就不会重复的调用onCreate()甚至不会调用onPause、onResume.只会调用一个onConfigurationChanged(ConfigurationnewConfig)。如果需要重新载入,则不需要做任何修改。不过如果需要在重新载入过程中保存之前的操作内容或数据,则需要保存之前的数据。然后在activity的onCreate()中取出来。当然,如此就不能设置android:configChanges()了,否则就不会调用onCreate()方法。如果要彻底禁止翻转,可以设置android:screenOrientation的属性为nosensor,如此就可以忽略重力感应带来的麻烦了。不过在模拟器上不管用,在真机上是正确的。这里提一个小知识,Android模拟器中,快捷键"Ctrl+F11/F12"可以实现转屏横竖屏切换的处理1、可以通过方法判断当前横竖屏,以执行相应操作; *该方法判断执行的是横屏操作还是竖屏操作 @Override publicvoidonConfigurationChanged(ConfigurationnewConfig){ //TODOAuto-generatedmethodstub super.onConfigurationChanged(newConfig); if(this.getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE){ //landdonothingisok }elseif(this.getResources().getConfiguration().orientation==Configuration.ORIENTATION_PORTRAIT){ //portdonothingisok } }2、横竖屏切换时,若是要重新载入,需要保存数据,下面的outState会将数据传递给onCreate()的参数savedInstanceState。*当模拟器横竖屏切换时,该方法会被调用,*调用该方法会将参数outState传递给onCreate(),保存重新载入前的数据和内容 @Override protectedvoidonSaveInstanceState(BundleoutState){ //TODOAuto-generatedmethodstub super.onSaveInstanceState(outState); outState.putInt("onClick",onClick); } *第一次调用onCreate()时,参数savedInstanceState是null值; *当底层调用完onSaveInstanceState(),参数savedInstanceState不为空; protectedvoidonCreate(Bundle
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 12690.13-2026稀土金属及其氧化物中非稀土杂质化学分析方法第13部分:钼、钨含量的测定
- 深度解析(2026)《GBT 30206.3-2013航空航天流体系统词汇 第3部分:温度相关的通 用术语和定义》
- 深度解析(2026)《GBT 30103.2-2013冷库热工性能试验方法 第2部分:风速检测》
- 五一假期结束返校校长在国旗下讲话:把心思收回到课堂
- 2026年烟花爆竹运输事故应急救援预案
- 深度解析(2026)《GBT 29777-2013玩具镀层技术条件》
- 《FZT 81008-2021茄克衫》(2026年)合规红线与避坑实操手册
- 2026年室内瓷砖铺贴施工合同协议
- 蓝白高级简约风格学术毕业答辩模板
- 某化工集团数据治理与数据湖交流
- 2026浙江杭州市西湖区第四次全国农业普查领导小组办公室招聘2人笔试备考试题及答案详解
- 中核集团校招测评题
- 2024新版2026春人教版英语八年级下册教学课件:Unit6第2课时(Section A 3a-3d)
- 采购廉洁行为准则制度
- TSG 08-2026 特种设备使用管理规则
- AQ推动生产经营单位落实“七项机制”压实安全生产主体责任
- 传承五四薪火 谱写青春华章新时代青年的使命与担当
- 2026《职业病防治法》试题(含答案)
- 万邑通行测在线测评答案
- 2025年港澳台华侨生入学考试高考物理试卷真题(含答案详解)
- 2025年杭州萧山水务有限公司公开招聘40人笔试历年典型考题(历年真题考点)解题思路附带答案详解
评论
0/150
提交评论