刚开始,我开发时选取的模拟器是WVGA854,其分辨率为854*480。我开发完毕后装在800*480的手机上时感觉很OK,但是装到480*320、以及320*240分辨率上的手机时,很多界面都变形了,这时我感受到了app自适应的重要性。 

自适应主要会遇到两个大问题:横屏和竖屏的切换,以及分辨率大小不同。

一.当横屏切换成竖屏时,解决的办法:
在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,当手机屏幕方向变化的时android系统会自动调用相应的布局文件。
当然还有办法就是不切换。要么都是横屏或者要么都是竖屏。可以在AndroidManifest.xml文件中设置,比如某个Activity设置为android:screenOrientation="portrait" 这样就一直保持竖屏,如果设置为
android:screenOrientation="landscape" 这样就一直保持横屏。

二.当遇到分辨率不同大小时,我们也会遇到三个问题:图片大小、布局、横屏和竖屏的切换。

图片问题好解决,到android2.0以后的api中,我们会发现原先的drawable文件夹变成了3个分别是drawable-hdpi、drawable-mdpi、drawable-ldpi。
第一个文件夹放高分辨率手机的图片,比如:854*480、800*480
第二个文件夹放中分辨率手机的图片,比如:480*320
第三个文件夹放低分辨率手机的图片,比如:320*240

关于布局和横屏切换成竖屏类似,也只需要在res目录下创建不同的layout文件夹,比如layout-480x320,layout-800x480,系统会根据屏幕的大小自己选择合适的layout来使用。

layout 是适配高分辨率竖屏的布局文件夹
layout-land 是适配高分辨率横屏的布局文件夹
layout-land-320x240 是适配低分辨率横屏的布局文件夹
layout-land-480x320 是适配中分辨率横屏的布局文件夹
layout-port-320x240 是适配低分辨率竖屏的布局文件夹
layout-port-480x320 是适配中分辨率竖屏的布局文件夹

这样布局文件的适配就做完了。
我个人觉得先按照高分辨率的模拟器开发效果比较好,然后去做各个不同分辨率的适配。有时候我们布局时,低分辨率的布局可能需要修改下。

[mw_shl_code=java,true]最后,还有一个问题如果是在java程序中写死的布局怎么办?
这个就很恼火了,需要判断屏幕的大小了,获取屏幕大小的代码如下:
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
int screenWidth = display.getWidth();

int screenHeight = display.getHeight(); [/mw_shl_code][mw_shl_code=java,true] 下面的代码片段是我自己在程序中写死布局使用的,仅供参考:

Button cancelBtn = new Button(this);
if (screenWidth<320 || screenHeight<320)
cancelBtn.setLayoutParams(new LayoutParams(60,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
else if (screenWidth <480 &&screenHeight == 480)
cancelBtn.setLayoutParams(new LayoutParams(80,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
else if (screenWidth >480 && screenHeight == 480)
cancelBtn.setLayoutParams(new LayoutParams(160,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
else
cancelBtn.setLayoutParams(new LayoutParams(120,

android.view.ViewGroup.LayoutParams.WRAP_CONTENT)); [/mw_shl_code]
本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/p/3607103.html,如需转载请自行联系原作者

Android-关于屏幕适配的一些经验相关推荐

  1. Android的屏幕适配

    Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...

  2. Android开发屏幕适配全攻略

    Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...

  3. android相机横屏竖屏,GitHub - qixuefeng/CameraAdapt: Android相机屏幕适配

    CameraAdaptDemo Android相机屏幕适配 该项目主要是为了做相机下的屏幕适配 具体思路可以参见我的这篇文章 Android 相机屏幕适配 测试: 机型:华为荣耀8 (厂商:honor ...

  4. android – 多屏幕适配相关

    android – 多屏幕适配相关 作者: 曲天日期: 2011/10/27 1.基本概念 屏幕大小(screen size) – 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸).a ...

  5. Android开发——Android手机屏幕适配方案总结

    0. 前言 Android的屏幕适配,即使得某一元素在Android不同尺寸.不同分辨率的手机上具备相同的显示效果,这个问题一直以来都是我们Android开发者不得不面对的问题.本文参考了很多前人的博 ...

  6. Android TV 屏幕适配

    Android TV 屏幕适配 1 1.dpi ,dip(dp), density 几个比较难描述的概念,摘这个blog的: http://www.cnblogs.com/wader2011/arch ...

  7. Android AutoSize屏幕适配中图标及字体放大的问题解决

    现象: 项目接入Android AutoSize屏幕适配框架,项目本身主界面是横屏操作的界面.测试中用户反馈在vivo x27的手机或者其他机型也会出现(没测试出来)横屏后所有的图标及字体都放大. 原 ...

  8. Android多屏幕适配-手机

    1.常用单位及其关系 px:像素 inch:英寸 pt:1/72 英寸 dpi:一英寸长的直线上的像素点的数量,即像素密度.不同的设备,dpi值不同,显示效果不同,dpi的值跟设备硬件有关.标准值是1 ...

  9. android手机屏幕适配理论知识

    对于具有相同像素密度的设备来说,像素越高,尺寸就越大,所以可以换个思路,讲问题从单纯的尺寸大小转换到像素大小和像素密度的角度来 占比最高的是480*800,320*480的设备竟然也占据了很大比例,但 ...

  10. android多屏幕适配

    论坛内容 http://www.eoeandroid.com/thread-326925-1-1.html Android 屏幕适配 项目中采用的方法是对每个相应的分辨率手机建values目录如:va ...

最新文章

  1. paddle一体安装
  2. 基于YOLOV5的数据集标注&训练,Windows/Linux/Jetson Nano多平台部署全流程
  3. matlab心电图诊断系统,ECG-diag MATLAB心电图自动诊断程序 联合开发网 - pudn.com
  4. bootstrap-fileupload-上传文件控件
  5. php如何知道服务器剩余空间,远程简单地获得每台服务器的cpu与memory使用情况
  6. P5591-小猪佩奇学数学【单位根反演】
  7. 简而言之,JUnit:单元测试断言
  8. word可以直接导入mysql嘛_如何把word文档导入到数据库中——java POI
  9. 用Notepad++来编写第一个HTML网页程序,你也可以!!!
  10. 全面提升AR感知能力的新款iPad Pro或将延期发布
  11. 用标号跳出当前多重嵌套循环是否继续执行循环_在Java中如何跳出当前的多重嵌套循环?...
  12. DSP之时钟与定时器之四看门狗定时器
  13. python 爬虫——模拟登录古诗文网
  14. 关于打印机共享和连接问题
  15. python转化excel数字日期为标准日期
  16. 从vc6.0转到vs2005 2008等出现的错误详解(HYD整理)
  17. codewars练习(javascript)-2021/3/21
  18. MyBatisCodeHelper-Pro2.8.2
  19. Excel单元格设置下拉选项
  20. 国际手机号码格式化 和 手机邮箱中间部分用****替换

热门文章

  1. cvCloneImage()内存泄漏解决方法, cvCloneImage()和cvCopy()的区别
  2. .NET简谈互操作(三:基础知识之DllImport特性)
  3. NLTK在python中文字所表达的情感预测
  4. 智能优化算法:类电磁机制算法 - 附代码
  5. ENVI5.3 No Data像元值
  6. python 合并不同文件夹下名称相同的文件
  7. Flutter PageView简析
  8. 原理解析 | Apache Flink 结合 Kafka 构建端到端的 Exactly-Once 处理
  9. 日记20211028
  10. python函数后面的点_对python函数后面有多个括号的理解?