Android-关于屏幕适配的一些经验
刚开始,我开发时选取的模拟器是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-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();
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-关于屏幕适配的一些经验的更多相关文章
- Android 多屏幕适配 dp和px的关系 最好用dp
Android 多屏幕适配 dp和px的关系 一直以来别人经常问我,android的多屏幕适配到底是怎么弄,我也不知道如何讲解清楚,或许自己也是挺迷糊. 以下得出的结论主要是结合官方文档进行分析的ht ...
- Android开发——Android手机屏幕适配方案总结
)密度无关像素,单位为dp,是Android特有的单位 Android开发时通常使用dp而不是px单位设置图片大小,因为它可以保证在不同屏幕像素密度的设备上显示相同的效果. /** * dp与px的转 ...
- Android实习生 —— 屏幕适配及布局优化
为什么要进行屏幕适配.对哪些设备进行适配?在近几年的发展当中,安卓设备数量逐渐增长,由于安卓设备的开放性,导致安卓设备的屏幕尺寸大小碎片化极为严重.从[友盟+]2016年手机生态发展报告H1中看截止1 ...
- Android 关于屏幕适配
android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 转自:http://www.c ...
- Android各种屏幕适配原理
dip(dp): device independent pixels(设备独立像素) dip,就是把屏幕的高分成480分,宽分成320分.比如你做一条160dip的横线,无论你在320还480的模拟器 ...
- 最清晰的Android多屏幕适配方案
问题的引入 当您的Android应用即将发布的时候,如果你想让更多的用户去使用你的应用,摆在工程师面前的一个重要问题就是如何让你的应用能在各种各样的终端上运行,这里的各种各样首当其冲的就是不同的屏幕分 ...
- android 多屏幕适配 : 第一部分
1.在xml布局文件中,控件的宽度和高度用 dp ; 字体大小用 sp 2.根据屏幕的宽高来动态的适配 , 获取屏幕的宽高的两种方法: 第一种方法: /** * 屏幕的宽度 * 屏幕的高度 * ...
- Android 多屏幕适配
问题: 测试时,发现应用在不同的显示器上显示效果不同(部分文本不能显示完全),自然想到屏幕适配的问题. 按照思路整理如下: (一) 几个概念 1, Screen size 屏幕的尺寸,即对角线长度(单 ...
- Android多屏幕适配
转载:http://mikewang.blog.51cto.com/3826268/865304 问题: 测试时,发现应用在不同的显示器上显示效果不同(部分文本不能显示完全),自然想到屏幕适配的问题. ...
- [转]android – 多屏幕适配相关
1.基本概念 屏幕大小(screen size) – 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸).android把屏幕分为以下4种:small,normal,large,extr ...
随机推荐
- Android 使用WakeLock
为了延长电池的使用寿命,Android设备会在一段时间后使屏幕变暗,然后关闭屏幕显示,最后停止CPU.WakeLock是一个电源管理系统服务功能,应用程序可以使用它来控制设备的电源状态. ...
- Android 获取SDCard中某个目录下图片
本文介绍Android开发中如何获取SDCard中某目录下的所有图片并显示出来,下面的我们提供的这个函数是通用的,只要提供路径就可以查询出该目录下所有图片的路径信息,并保存到一个List<Str ...
- TeeChart中Axis的CalcIncrement属性
private void Init() { tChart = new TChart(); panel1.Controls.Add(tChart); tChart.Aspect.View3D = fal ...
- Hadoop RPC简单实例
1.导入Hadoop-Common-2.6.0.jar导入工程,里面的IPC实现RPC需要的文件. 2.服务器端 (1)服务接口 package com.neu.rpc.server; /** * ...
- 日常工作中使用的一些Mongodb语句
.通过_userID字段查询重复录入内容 > db.template.aggregate({}}},{$}}) .查询 db.template.find({"group_7ee1247 ...
- SharePoint 2010 母版页定制小思路介绍
转:http://tech.ddvip.com/2013-11/1384521515206064.html 介绍:我们使用SharePoint2010做门户网站,经常需要定制母版页,但是2010提供的 ...
- 如何编译Support7Demos测试appcompat
目录(?)[-] 简介 在Eclipse中编译 使用Gradle编译 简介 Google发布的API-18中带上的support-v7包含了appcompat组件,可以在小于API-11的androi ...
- extjs动态树 动态grid 动态列
由于项目需要做一个动态的extjs树.列等等,简而言之,就是一个都是动态的加载功能, 自己琢磨了半天,查各种资料,弄了将近两个星期,终于做出来了 首先,想看表结构,我的这个功能需要主从两张表来支持 代 ...
- SAS软件的使用和统计学分析的初步介绍
一般而言我们都会使用Excel来统计测试结果,除了Excel之外,还有SAS等软件,也是可以统计测试结果的,本人也是SAS的初学者,现在我就给大家介绍一下SAS的简单使用,随着我不断的学 ...
- ASOP源码下载
vmware11下对虚拟机ubuntu14.10系统所在分区sda1进行磁盘扩容完后,重启在引导界面出现“a start job is running for dev-disk-by…”错误,产生此错 ...