打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android 屏幕分辨率等兼容性

由于不同手机的尺寸大小,屏幕分辨率可能存在差异。在开发应用的时候,你或许遇到过这些的问题:

1, 为什么图片在另外的手机上显示的时候变小了,又或是缩小了?

2, 为什么在layout中定义好的格局在另外的手机上变形了?

3, 为什么自己自定义的控件尺寸显示不正常了?

。。。。。。。。。。。。。。。。

这些都是android中比较常见的设备兼容性相关的问题,其实解决这类问题也不难,只要掌握了一些基本概念和android内部处理兼容性问的机制,这些问题都可以迎刃而解。

下边收集了一些关于尺寸兼容性问题的一些基本知识和一些best practices, 希望对大家能有所帮助,嘿嘿:

 

1,屏幕尺寸大小与密度参考值:

注解:1 inch = 2.5cm

密度基线: 160dpi

2, 屏幕尺寸与密度对照表:

3,px 与 dp 在不同分辨率设备上的转换规则:

一, 假如设备的尺寸是2英寸的,分辨率是320,那边它的密度为160dpi,也就是基本参考线。这时:1px=1dp=1sp.

二, 假如设备的尺寸是2英寸,分辨率是480, 那么它的密度是240/dp.这时:1.5px=1dp=1sp

换算规则px = dp(dpi/160).

 

这个可以解析为什么用dp作为长度单位时,即使屏幕分辨率发生变化,在不同的设备上显示的物理长度能保持一致。而用px作为单位时,在高分辨率的设备上图像变小,在低分辨率的设备上图像变大。

 

4,使用wrap_content, fill_parent, 或者 dp 来定义layout的尺寸大小。

使用dp来定义组件的尺寸的好处是:系统会根据设备dpi自动转换尺寸的大小。举个列子,在密度为160dpi的机器上,假如你定义组件的尺寸是100dp,那么显示的实际大小就是100px。而在密度为240的机器上,系统会把它显示成px=100 * (240/160) px= 150px大小的尺寸。通过这种转换,可以达到在不同分辨率的设备上,对于同一个组件,显示的物理尺寸是相同的,不会出现变大或者变小的情况。

 

5,不同密度设备对应图像文件的最佳比例。

对于四种密度low-dpi, medium-dpi, high-dpi, extra high-hdpi的设备,在指定一个相同的图像文件时,分配给各种密度的图像文件的尺寸应该符合以下比例:3:4:6:9. 也就是要符合密度比例(120:160:240:360).

举个列子,假如我们要在一个密度为160dpi的设备上使用到一个48 * 48的图像文件。那么对于其它密度的设备,我们要准备的图像文件分别是:

low-density (120dpi) : 36×36

medium-density(160dpi): 48×48

high-density (240dpi) : 72×72

high-density (360dpi): 96×96

 

6,在需要的情况下,为每种尺寸的设备提供指定的layout文件。

res/layout/my_layout.xml             // layout for normal screen size (“default”)

res/layout-small/my_layout.xml       // layout for small screen size

res/layout-large/my_layout.xml       // layout for large screen size

res/layout-xlarge/my_layout.xml      // layout for extra large screen size

res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

 

 

7, 在需要的情况下,为每种密度的设备提供不同的图像文件.

res/drawable-mdpi/my_icon.png        // bitmap for medium density

res/drawable-hdpi/my_icon.png        // bitmap for high density

res/drawable-xhdpi/my_icon.png       // bitmap for extra high density

 

8,不在layout文件中使用px。

因为使用px后会在分辨率不同的机器上显示成不同的物理尺寸。

 

9,不使用absoluteLayout 布局。

因为绝对布局需要指定绝对偏移量,在尺寸不同的机器上,可能出现问题。

 

 

,10,如何让我们自己写的控件可以配置长度和自适应所有设备:

在所有自定义控件中,都不要硬编码长度,宽度等尺寸;应该先根据基线160dpi调式得到控件在标准基线下控件的最佳值,假如设为width。然后通过density = getResources().getDisplayMetrics().density 获取当前设备相对于基线的缩放值,然后得到一个最佳值value = width * density. 在用这个值去绘制控件的UI。这样我们就可以在配置文件中随时改动控件的大小。

 

注解:density = getResources().getDisplayMetrics().density

这个值在不同密度的设备中返回不同的值:

160dpi:1

240dpi: 1.5

120dpi: 0.75

….类推

 

 

05. July 2011 · Write a comment · Categories: Android · Tags:

2011Q1数据,Android已占智能手机市场35%。

从Google6月发布的数据看,排第一的 2.2 占了 64.6%, 2.1 第二 但21.2%相差甚大

Platform         API Level         Distribution
Android 1.5        3                1.9%
Android 1.6        4                2.5%
Android 2.1        7                21.2%
Android 2.2        8                64.6%
Android 2.3        9                1.1%
Android 2.3.3     10              8.1%
Android 3.0        11              0.3%
Android 3.1        12              0.3%

原文链接:    http://blog.csdn.net/Android_Tutor/archive/2010/07/28/5772285.aspx

大家好,今天给大家详解一下Android中Activity的生命周期,我在前面也曾经讲过这方面的内容,但是像网上大多数文章一样,基本都是翻译Android API,过于笼统,相信大家看了,会有一点点的帮助 ,但是还不能完全吃透,所以我今天特意在重新总结一下.

首先看一下Android api中所提供的Activity生命周期图(不明白的,可以看完整篇文章,在回头看一下这个图,你会明白的):

Activity其实是继承了ApplicationContext这个类,我们可以重写以下方法,如下代码:

More ?

原文链接:   http://blog.csdn.net/jnstone3/archive/2008/11/06/3226124.aspx

 

Android学习笔记(1)-永远不变的Hello World

Google的Android SDK发布也有一段时间了,一直想研究一下却苦于找不到时间。利用这个周未,开始强迫自己再次进入学习状态,原因很简单:我看好开放的gPhone。

SDK的下载与安装并不复杂,网上也有不少同学已经进入状态了,我就不再重复了吧。

今天主要讨论的,还是永远不变的话题:Hello World.
1.最简单的HelloWorld

安装了SDK后,直接生成一个Android Project,一句代码不用写,就能跑出一个最简单的HelloWorld例程。我们看一下它的代码:

public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setTheme(android.R.style.Theme_Dark);
setContentView(R.layout.main);
}

More ?

23. June 2011 · 1 comment · Categories: Android

原文链接:   http://www.cnblogs.com/wuyunan/archive/2009/09/16/1567960.html

 

我们建好一个android 的项目后,默认的res下面 有layout、values、drawable等目录

这些都是程序默认的资源文件目录,如果要实现多语言版本的话,我们就要添加要实现语言的对应的资源文件。

首先我们点击添加Android Xml File按钮,会出现下面的界面:

输入文件名:string.xml,选中Values单选框,并把下面左列表中的Region添加到左边的列表里面,并在Region输入框里输入cn,如下图

More ?

原文链接:  http://blog.csdn.net/mayingcai1987/archive/2011/03/24/6273606.aspx

 

1. 引言:

为了提高ListView的效率和应用程序的性能,在Android应用程序中不应该一次性加载ListView所要显示的全部信息,而是采取分批加载策略,随着用户的滑动,动态的从后台加载所需的数据,并渲染到ListView组件中,这样可以极大的改善应用程序的性能和用户体验。

2. 交互:

进入ListView组件,首先预加载N条记录,当用户滑动到最后一条记录显示加载提示信息,并从后台加载N条数据,接着渲染UI界面。

3. 效果图:

4. 程序实现:

More ?

原文链接:

http://blog.csdn.net/mayingcai1987/archive/2011/03/21/6265797.aspx  (一)

http://blog.csdn.net/mayingcai1987/archive/2011/03/22/6268732.aspx  (二)

http://blog.csdn.net/mayingcai1987/archive/2011/03/23/6270881.aspx (三)

 

Android中全局搜索(QuickSearchBox)详解(一)

1. 全局搜索(QuickSearchBox)介绍:
全局搜索(QuickSearchBox)是Android系统中原生的应用程序,它的主要职能是接收用户的搜索请求,并将搜索请求传达给支持全局搜索的应用程序,应用程序执行搜索操作,并将搜索到的結果返回给全局搜索应用程序,全局搜索应用根据搜索結果渲染UI界面,当用户单击某一个搜索出来的結果项就会打开相应的应用程序,显示搜索結果的詳細信息。

2. 全局搜索(QuickSearchBox)技术架构:

Android系统的全局搜索由搜索管理器(SearchManager),全局搜索AppWidget,全局搜索应用,支持全局搜索的应用程序(联系人,音乐,浏览器等)四大部分组成:

(1)framework层的搜索管理器(SearchManager):主要功能是对Android系统全局搜索提供支持,当Android系统启动完成后会发出系统启动完成(BOOT_COMPLETED)广播,SearchManager接收到此广播后会通过PackageManager搜索系统中支持全局搜索的应用程序(应用程序如何支持全局搜索以后的文章会介绍),这此支持全局搜索的应用我们称为搜索源,SearchManager解析搜索源的配置信息并将这些配置信息封装成对象保存在List列表中供全局搜索应用程序使用。

More ?

原文链接:   http://skyline888.iteye.com/blog/814377

 

google对于所有的类和API,分为开放式和不开放式两种。所谓的开放式就是值javadoc所包含的,并不是java中有public和private,而是跟javadoc有关系,代码 没有关系。
在开放式的类中增加了一个变量,而又没隐藏,导致和原API的doc不一致造成的就会有错。
通过提示,有2个方法可以解决 该问题:
1、将新增加的变量或方法加上”@hide” 的注释,注意一点,加”@hide” 不是简简单单的/*@hide */就行了,标准的javadoc要这样 /**  */ 而且对于 format 变量 应该加上 {  },也就是/**{@hide}*/
2、如果想在生成的doc中增加该变量或方法的话,必须输入:
make update-api
这样的话,系统 自动 将新增加的API添加到current.xml中了。

所以如果要加方法就是按上面的方法加。

如果需要加进新的类 这时候又分2种  一种是原有的包下面加类 这个最简单 加完之后直接make update-api就好了 还有一种是加在framework/base下面 这个时候你make update-api是不会在current。xml里生成你的类的。 看了Android。mk才知道 原来需要修改android源码根目录下的build/core/pathmap.mk把你的目录加进去。然后就好了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算(终结版)
怎样获取Android手机屏幕的大小(分辨率、密度)
手机屏幕适配原理及实现
Android里神奇的dp
Android 尺寸单位转换和屏幕适配相关
android屏幕自适应研究
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服