浅谈android怎样同一时候适配pad和手机

前期的注意事项和技巧

前段时间公司要做的一个android app。同一时候要做到适配pad跟手机。刚開始认为这根本不可能实现,由于我们市场上见到的app都是要两个版本号的,各自是手机版和pad版。

由于手机和屏幕的尺寸相差太大,所以一般都不会说一个app同一时候兼容两个版本号。

为了做到屏幕的兼容,所以我专门去网上查找资料。看看眼下市场上主流的手机尺寸和分辨率各自是多少。主要找到的情况例如以下图所看到的:

而pad的话每一个厂家出产的pad的分辨率都会跟手机的一样,所以能够先做完手机页面的适配再考虑pad的页面适配。

考察了眼下主流手机屏幕分辨率和尺寸的分布之后。就得考虑android适配中另外一个重点。就是屏幕的ppi值。所谓的屏幕的ppi值就是:Pixels Per Inch所表示的是每英寸所拥有的像素(Pixel)数目。而android系统默认会依据获取屏幕的分辨率而将屏幕划分为idpi、mdpi、hdpi、xhdpi、xxhdpi这五个等级,每一个等级都相应相应的ppi值,其相应关系例如以下图所看到的:

美工一般都会出一套切图(切图建议分辨率是480x800,这样网上做页面适配的兼容easy非常多。px和dp的换算倍率刚好也是1:1)和尺寸图(反正我遇到的美工没有每种分辨率来一套,这样工作量确实大),而讲到尺寸图。美工在上面标的尺寸一般都是以px为单位的,而在android布局其中我们经经常使用到的单位是dp和sp。这样我们就得对px和dp进行换算,详细换算规则能够看这里:px和dp的换算规则

编码中的注意事项和技巧

上面说了一些页面适配的一些前期的准备和注意事项,接下来就说一下编码中的一些页面适配的注意事项和技巧。1、在xml布局其中,尽量用weight值来均衡分布,尽量少用固定值去定义容器或者控件的大小。容器建议用fill_parent这类的值。

假设控件或容器实在没办法得使用固定值。那就用固定值。

一般手机都不会走样。假设出现走样,那就得在values
、values-ldpi、values-mdpi、values-hdpi、values-xhdpi,依据不同屏幕分辨率相应然后在目录的diamen的文件中面定义一个变量然后在布局文件中面引用,如图:

这样子就能够对不同分辨率的屏幕做适配了。

兼容了手机后对pad的适配

因为手机切图会相对较小,假设pad引用的话就会失真。所以就得找另外一份pad版的切图和尺寸图。如今就有两套切图。经过试验发现,android系统是依据屏幕最小宽度来区分手机还是pad的,当屏幕最小宽度>=600px的时候就当做该设备为pad,当屏幕最小宽度 < 600px的时候就觉得是手机。所以能够在定义两种类型的drawable目录,一个是drawable-sw600dp-hdpi(这个是用来放pad版的切图),还有一个是drawable-xhdpi(这个是用来放手机版的切图)。而value目录也是类似,values-sw600dp(这是放pad版的diamen等文件)values(这是放手机版的diamen等文件)。

假设你不知道自己的手机的最小屏幕宽度能够用以下这段代码执行在自己手机上查看:

	Configuration config = getResources().getConfiguration();

        int  smallestScreenWidth = config.smallestScreenWidthDp;
</pre><span style="font-size:18px"><span style="white-space:pre"></span>有时候,有些布局仅仅是有某些分辨率有一点点偏差。就能够在代码中获取屏幕最小宽度然后进行微调。</span><pre>
时间: 2024-11-11 21:53:33

浅谈android怎样同一时候适配pad和手机的相关文章

浅谈android如何同时适配pad和手机

前期的注意事项和技巧 前段时间公司要做的一个android app,同时要做到适配pad跟手机.刚开始觉得这根本不可能实现,因为我们市场上见到的app都是要两个版本的,分别是手机版和pad版.因为手机和屏幕的尺寸相差太大,所以一般都不会说一个app同时兼容两个版本. 为了做到屏幕的兼容,所以我专门去网上查找资料,看看目前市场上主流的手机尺寸和分辨率分别是多少.主要找到的情况如下图所示: 而pad的话每个厂家出产的pad的分辨率都会跟手机的一样,所以可以先做完手机页面的适配再考虑pad的页面适配.

浅谈Android五大布局

Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Android的五大布局分别是LinearLayout(线性布局).FrameLayout(单帧布局).RelativeLayout(相对布局).AbsoluteLayout(绝对布局)和TableLayout(表格布局). LinearLayout: LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后

浅谈Android多屏幕的事

浅谈Android多屏幕的事 一部手机可以同时看片.聊天,还可以腾出一支手来撸!这么吊的功能(非N版本,非第三方也能实现,你不知道吧)摆在你面前,你不享用?不关注它是怎样实现的?你来,我就满足你的欲望! 一部手机可以同时看片.聊天,还可以腾出一支手来撸==!就像这样: 是时候告别来回切换应用屏幕的酸爽了,还可以在分屏模式下两Activity间直接拖放数据! 好高大上的样子!这是怎么实现的?别急,我们一一道来: kitkat(4.4)版本对多任务分屏的实现 由于相关的代码和功能被封装及隐藏起来,所

浅谈 Android Service

 浅谈Android Service的基本用法: 关于Service最基本的用法自然是启动和停止操作. 启动Service有两种方式: 1.通过startService(Intent intent)方式启动,启动时会自动执行onCreate(),onStartCommand()方法. 2.通过bindService(Intent intent,ServiceConnection connection,int flag) 第一个参数是一个Intent对象,第二个参数是连接Service的实例,

浅谈Android五大布局(二)——RelativeLayout和TableLayout

在浅谈Android五大布局(一)中已经描述了LinearLayout(线性布局).FrameLayout(单帧布局)和AbsoulteLayout(绝对布局)三种布局结构,剩下的两种布局RelativeLayout(相对布局)和TableLayout(表格布局)相对之前布局结构稍显复杂一点,所以这里另起篇幅进行介绍. RelativeLayout: RelativeLayout按照各子元素之间的位置关系完成布局.在此布局中的子元素里与位置相关的属性将生效.例如android:layout_be

浅谈Android onClick与onLongClick事件触发的问题

之前做按钮的点击事件一直没有注意一些细节,今天做了一个按钮需要有点击和长点击触发不同效果,直接让Activity implements OnClickListener, OnLongClickListener然后添加了相应的处理函数. @Override public void onClick(View v) { // TODO Auto-generated method stub } @Override public boolean onLongClick(View v) { // TODO

浅谈Android保护技术__代码混淆

浅谈Android保护技术__代码混淆 代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为.将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字.比如改写成单个字母,或是简短的无意义字母组合,甚至改写成"__"这样的符号,使得阅读的人无法根据名字猜测其用途.对于支持反射的语言,代码混淆有可能与反射发生冲突.代码混淆并不能真正阻止反向工程,只能增大其难度.因此,对于对安全性要求很高的场合,仅仅

安卓开发_浅谈Android动画(四)

Property动画 概念:属性动画,即通过改变对象属性的动画. 特点:属性动画真正改变了一个UI控件,包括其事件触发焦点的位置 一.重要的动画类及属性值: 1.  ValueAnimator 基本属性动画类 方法 描述 setDuration(long duration) 设置动画持续时间的方法 setEvaluator(TypeEvaluator value) 设置插值计算的类型 setInterpolator(TimeInterpolator value) 设置时间插值器的类型 addUp

浅谈Android五大布局(二)——RelativeLayout和TableLayout【转】

http://www.cnblogs.com/wisekingokok/archive/2011/08/24/2152004.html 在浅谈Android五大布局(一)中已经描述了LinearLayout(线性布局).FrameLayout(单帧布局)和AbsoulteLayout(绝对布局)三种布局结构,剩下的两种布局RelativeLayout(相对布局)和TableLayout(表格布局)相对之前布局结构稍显复杂一点,所以这里另起篇幅进行介绍. RelativeLayout: Relat