Android多分辨率适配经验总结
Android多分辨率适配是一件很有意义但是比较麻烦的事情,网上有很多关于多分辨率适配的文章,多数文章讲解的都是整个APP的图片比较规则,可以将图片做成9图来完成多分辨率适配,但是对于一些游戏类应用(这里说的游戏没有使用游戏引擎)、低龄儿童应用,APP中有很多花哨的图片,这种APP的图片显然无法做成9图,在网上查了很多资料始终没有比较理想的解决方案,结合自己最近做的项目介绍一下针对这种情况下的多分辨率适配:
为了减少UI的工作量,一个APP只提供一套图;
为了减少程序员的重复工作,一个APP只维护一套程序;
为了在各种分辨率下图片不失真,UI按照最高分辨率提供图片;
为了达到理想的效果,图片切分尽量细,将带有修饰效果的图片全部和背景分离(比如APP的大背景中有树、花草、人物,将这些小场景从背景图中切出来,程序员自己将图贴上去,只是不同分辨率下的尺寸、位置不一样。);
为了图片不变形,图片宽高必须等比缩放;
原则上程序只有一套布局,对于有特殊要求的地方,可以创建多套layout文件夹,为主流分辨率提供相应的布局文件;
程序员创建多套values文件夹,文件夹下的dimens.xml文件存放相应分辨率的图片尺寸和坐标。
将公用的布局抽出,在需要使用的地方以include标签的形式引入。
注:
上面的方案基本上解决了多分辨率适配的问题(项目中大概只需要适配4-5款分辨率的机型),对于分辨率相差较大或者屏幕尺寸相差太大的情况,可以考虑做两套UI和两套程序,这样才能达到比较理想的效果,比如很多APP都提供了手机版和PAD版两个APP。
多分辨率适配通常的做法是在同一套程序下按照分辨率创建多个layout文件夹,但在开发中我发现也可以按照分辨率创建多个values文件夹,比如:values-1230x800、values-1920x1200、values-1969x1536、values-974x768,对于按照分辨率创建不同文件夹特别需要说明的是:
格式:文件夹名称-大数值x小数值(大数值在前,小数值在后);
文件夹名称中的数值不是机器的真实分辨率,需要减掉通知栏的高度;
同一分辨率在横竖屏情况下是是两个不同的文件夹,比如分辨率为1024x768,通知栏高度为50,那么横屏对应的文件夹为:values-1024x718,竖屏对应的文件夹为values-974x768。
原文地址:http://zmywly8866.github.io/2015/03/04/android-multi-resolution-adaptation.html
Android多分辨率适配经验总结的更多相关文章
- Android多分辨率适配
前一阶段开发android项目,由于客户要求进行多分辨率适配,能够支持国内主流的分辨率手机.因此经过了几次开发走了很多弯路,目前刚刚领略了android多分辨率适配的一些方法. 先介绍一下所走的弯路, ...
- 【转】android多分辨率适配
前一阶段开发android项目,由于客户要求进行多分辨率适配,能够支持国内主流的分辨率手机.因此经过了几次开发走了很多弯路,目前刚刚领略了android多分辨率适配的一些方法. 先介绍一下所走的弯路, ...
- Android 多分辨率与不同语言适配
一.适配不同国家语言 智能手机系统设置里各国语言的选项,然后我们项目里可以通过资源目录实现适配语言.我们知道工程的根目录有个res/的目录,res/下有一个资源类型的目录,其中有个values/str ...
- Android屏幕适配全攻略 (转载)
http://blog.csdn.net/jdsjlzx/article/details/45891551 https://github.com/hongyangAndroid/AndroidAuto ...
- android多分辨率多密度下界面适配方案
前言 Android 设计之初就考虑到了UI在多平台的适配,它本身提供了一套完善的适配机制,随着版本的发展适配也越来越精确,UI适配主要受平台两个因素的影响:屏幕尺寸 (屏幕的像素宽度及像素高度)和屏 ...
- android多分辨率多屏幕密度下UI适配方案
相关概念 分辨率:整个屏幕的像素数目,为了表示方便一般用屏幕的像素宽度(水平像素数目)乘以像素高度表示,形如1280x720,反之分辨率为1280x720的屏幕,像素宽度不一定为1280 屏幕密度:表 ...
- android 手机 多分辨率适配
近来在做android屏幕适配这方面的工作, 今天总算有点眉目. 小记一下 基础知识就不科普了, 网上一大堆. 作为一个刚接触这方面人, 最先进入我脑子的, 是从小到大的各种屏, 小到手表, 大到街 ...
- (转)android屏幕适配
声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息 原文作者: zhuangyujia 原文地址: http://my.eoe.cn/zhuangyujia/archiv ...
- 【转】Unity3d + NGUI 的多分辨率适配
原文地址:http://www.cnblogs.com/cqgreen/p/3348154.html 一.当下移动设备的主流分辨率(数据来自“腾讯分析移动设备屏幕分辨率分析报告”) 1.1 iOS ...
随机推荐
- bzoj 1821: [JSOI2010]Group 部落划分 Group
#include<cstdio> #include<iostream> #include<cmath> #include<algorithm> #def ...
- 二模 (6) day2
第一题: 题目大意:50*50的格子里玩贪吃蛇.给出N步扭头的操作,判断贪吃蛇会在第几步挂掉.(蛇初始向东) 解题过程: 1.一开始的方法是:为了加快速度,只保存头和尾的坐标,然后保存尾巴的方向,每次 ...
- 解决JavaScript中使用$.ajax方式提交数组参数
一般的,可能有些人在一个参数有多个值的情况下,可能以某个字符分隔的形式传递,比如页面上有多个checkbox: $.ajax{ url:"xxxx", data:{ p: &quo ...
- $geoNear
怎么使用mongoose的geoNear 2014-11-26 15:05:20| 分类: mongodb | 标签:mongoose |举报|字号 订阅 下载LOFTER我的照片书 ...
- ubuntu下的第一个脚本file.sh
1.新建空文档,写入shell命令: #!/bin/sh cd /home/plg ./usb 第一行一定要有,一开始参考网上写的#!/usr/bin/sh,会提示错误 bash: ./file.sh ...
- 分布式Nginx缓存清理(PHP的socket编程)
最近,公司要使用康乐的几台自建CDN换成Nginx,在缓存配置上不会有很多的问题,纠结的问题是:Nginx的如何批量进行缓存清理 我们都知道Nginx提供了一个第三方的模块"nginx ng ...
- Java 获取APK安装程序的包名
Java 获取APK安装程序的包名核心的两个类: ResPackage ApkDecoder package com.temobi.util; import java.io.File; impo ...
- PAT 06-1 简单计算器
想看一般简单计算器实现的看客不好意思了,这不是你想要点东西,此处题设为“只能进行加减乘除”.“都是整数”.”优先级相同“和"从左到右".此题来自PAT(http://www.pat ...
- javascript splice
//arrayObject.splice(index,howmany,element1,.....,elementX)//index 必需.规定从何处添加/删除元素.(0)//howmany 必需.规 ...
- 51nod 最长公共子序列Lcs
有深入 了解了一点 . 51nod 可以用来加深 算法理解程度 ,