Android开发中如何获得正确的layout资源(layout-sw480dp layout-sw600dp-land layout-sw720dp-port)

Android应用里里,大家一定饱受各种layout-sw480dp layout-sw600dp-land layout-sw720dp-port之苦,往往不知道自己的平板加载的是哪个Layout而不得不一个个尝试,网上一大堆说不清的教程。本人查阅很多资料,给大家分享一种计算方法确定自己平板所加载哪个dp的资源。

事实上,sw不是software的,意思,我猜是shortest width,最短的宽度。

sw-xxxx-dp的计算公式是  sw *160/dpi

比如 1280*800, sw 是800

480*800, sw 是480

如下范例,相信可以更好理解计算方法,其中dpi其实是人为在Android/device/softwinner/astar-common/astar-y3.mk中设定的,

没有Android源码的可以通过 adb shell getprop ro.sf.lcd_density 获得。


机型  

       分辨率

sw

   dpi=  ro.sf.lcd_density  

         sw *160/dpi    =            dp

H7(Android5.1)     

1280*720     

720

213     

720*160/213=540.84 =       sw340dp

H7(Android4.4)     

1280*720    

720

160     

720*160/160=720=              sw720dp

A33 astar-y2              

1024*768     

768

160    

768*160/160 =768 =            sw720dp

杂牌               

800*480      

480

120      

480*160/120 =640=             sw600dp

杂牌              

800*480    

480

160    

480*160/160 =480=             sw480dp

通过公式 sw*160/dpi 计算出结果之后,选择一个比这个结果小,而又最接近这个值的dp。

比如,范例中H7(Android 5.1)算出来是540.84,如果你的layout下存在一个 sw480dp,那这里dp肯定是sw480dp,如果没有sw480dp,只能找到sw340dp.

land是横屏,port是竖屏。

时间: 2024-12-20 12:07:18

Android开发中如何获得正确的layout资源(layout-sw480dp layout-sw600dp-land layout-sw720dp-port)的相关文章

关于Android开发中导出jar包后的资源使用问题解决

我们经常遇到一个需求,就是给别人使用我们工程的时候,为了能够屏蔽代码,把代码封装成jar包提供给第三方使用,但是这样我们的资源文件怎么给对方用呢? 其实并不用这么的复杂,下面就介绍一下具体的方法 一, 把你要封装jar包的工程先设置为库文件(Is Library) 右键项目名称——properties——勾选下图的checkbox即可. 二.最关键的一步,Clean一次项目!!! Eclipse点击上面工具栏的Project——Clean——选择项目,确定 三.使用Eclipse的Export功

Android开发中出现cannot be resolved to a variable错误,也就是R文件不能生成。

最近开始学过习Android开发,配置完成开发环境后,在创建第一个Android项目就出现了cannot be resolved to a variable错误,也就是R文件不能生成的问题. 以下是从网上找到的解决方法 : Android开发过程中,碰到R cannot be resolved to a variable的报错信息,好像没有很确定的错误原因,一般来说,我总结出几个可能的解决方法,希望试过以后管用... 1. 检查Android 的SDK是否丢失需要重新下载,检查build pat

android开发中应该注意的问题

1. Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效. 2. 数据库表段字段常量和SQL逻辑分离,更清晰. 3. 全局变量放全局类中,模块私有放自己的管理类中,不要相信庞大的管理的东西会带来什么好处,可能是一场灾难. 4. 如果数据没有必要加载,私有模块数据务必延迟初始化,谨记为用户节省内存,总不会有坏处. 5. 异常抛出,集中到合适的位置处理,不要抛出来异常立即捕获,搞的到处是catch. 6. 地址

Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}

Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi 错误信息字符串:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.first/com.first.Game}: java.lang.NullPointerException 一般都会在Activity  o

由浅入深讲解android开发中listview的性能优化

ListView是一种可以显示一系列项目并能进行滚动显示的View.在每行里,既可以是简单的文本,也可以是复杂的结构.一般情况下,你都需要保证ListView运行得很好(即:渲染更快,滚动流畅).在接下来的内容里,我将就ListView的使用,向大家提供几种解决不同性能问题的解决方案. 如果你想使用ListView,你就不得不使用ListAdapter来显示内容.SDK中,已经有了几种简单实现的Adapter: ·         ArrayAdapter<T> (显示数组对象,使用toStr

android开发中的5种存储数据方式

数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstance State保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整

Android 开发中三种多线程

在开发工程中线程可以帮助我们提高运行速度,Android开发中我知道的线程有四个一个是老生长谈的Thread,第二个是asyncTask,第三个:TimetTask,第四个是Looper,四个多线程各有个的有点,Thread的运行速度是最快的,AsyncTask的规范性是最棒的,其它两个也有自己的优点. 1.Thread与Handler组合,比较常见 Handler主要是帮助我们来时时更新UI线程 这里在后天加载100张图片,然后没加载完成一个用handler 返回给UI线程一张图片并显示 最后

Android开发中,那些让你觉得相见恨晚的方法、类或接口

本篇文章内容提取自知乎android开发中,有哪些让你觉得相见恨晚的方法.类或接口?,其实有一部是JAVA的,但是在android开发中也算常见.大多数的函数自己还是见过的,这里记录一下备忘.同时呢,也推荐一个github项目,里面记录了自己日常开发中见过的比较有用的东西开发中常用的工具.链接 Throwable类中的getStackTrace()方法,根据这个方法可以得到函数的逐层调用地址,其返回值为StackTraceElement[],而在StackTraceElement类中有四个方法g

android开发中经常遇到的问题汇总

大家都在为项目开发成功而喜悦,但可不知成功的路上是会经常出错的,下面是我碰到的一些错误集合! [错误信息] [2011-01-19 16:39:10 - ApiDemos] WARNING: Application does not specify an API level requirement![2011-01-19 16:39:10 - ApiDemos] Device API version is 8 (Android 2.2) 原因: 不影响正常运行.在AndroidManifest.