如何将pxcook像素大厨厨dp改成xhdpi

Gradle文档中文版
Google Java编程风格指南
官方课程中文版
Android学习之路
&&&&&&&&这是Android开发工具汇总、
开发者必备的小工具。包含了Android开发所需要的环境、在线小工具、开发神器、辅助工具、开发文档、学习教程。提供SDK
、AndroidSudio、 ADT、Gradle等等各个版本的下载。 欢迎更多的同学加入我们,和我们一起把Android
开发工具汇总编辑完善。如果你有好工具,本站没有收录,欢迎发送邮箱 或者在下方留言。
&&&&&&&&特别感谢、 程序员之家、
、qunlunsoft等对本站的支持。
Studio 版本
2.1 preview1
支持Java 8 语言特性、向导用于配置生成针对Android N
预览版本的项目。
2.0 preview9
包含Instant Run、更快的模拟器、全新GPU分析器等多项功能改进。
2.0 preview4
2.0 preview
1.5.1 正式版
1.2 正式版
1.1 正式版
Studio 插件
ButterKnife
一键从xml布局文件中生成对View的声明和ButterKnife的注解
LeakCanary
帮助你在开发阶段方便的检测出内存泄露的问题,使用起来更简单方便
android-parcelable-plugin
可以生成实现Parcelable接口所需的字段和方法
实现:卸载应用\杀掉应用进程\启动应用\重启应用\清除应用数据
Android Holo Colors Generator
通过自定义Holo主题颜色生成对应的Drawable和布局文件
Android Studio Prettify
从布局文件中生成对View的声明(不使用注解)
SelectorChapek for Android
通过资源文件命名自动生成Selector Drawable
MaterialDesignIconGenerator
通过资源文件命名自动生成Selector Drawable
MaterialDesignIconGenerator
生成MaterialDesignerIcon到项目
GitignorePlugin
帮助生成ignore文件的插件
Codegenerator-Plugin-Intellij
layout自动生成Fragment、ViewHolder、Activity等,免去写findViewById的问题
在AS中编辑Readme文件时,可以直观的预览最终的网页显示效果,对于经常在项目中写Readme的你,你一定需要
GsonFormat
根据Gson库使用的要求,将JSONObject格式的String 解析成实体
AndroidWiFiADB
可以通过这个插件来达到无线调试应用的目的,摆脱数据线
一键上传应用到fir.im
Android-DPI-Calculator
方便计算出在不同目录(hdpi xhdpi xxhdpi..)下的DPI
Unit Test Plugin
解决testcompile依赖
intellij-java2smali
快速编译Java和Kotlin
Genymotion
最好用的Android模拟器
Robotium Recorder
Robotium 自动化测试脚本录制工具
ADT Bundle版本
&&/&&64位下载
32位下载&&/&&64位下载
&&/&&64位下载
32位下载&&/&&64位下载
ADT Plugin
ADT Plugin版本
ADT-23.0.7
ADT-23.0.6
ADT-23.0.4
ADT-23.0.3
ADT-23.0.2
ADT-23.0.0
ADT-22.6.3
ADT-22.6.1
android 5.0(21)
android L Rev3(L)
android 4.4W(20)
android 4.4.2(19)
android 4.3(18)
android 4.2.2(17)
android 4.1.2(16)
android 4.0.3(15)
android 4.0(14)
android 3.2(13)
android 3.1(12)
android 3.0(11)
android 2.3.3(10)
sdk-tools-r24.3.4
sdk-tools-r24.3.2
sdk-tools-r24.2
sdk-tools-r24.1.2
sdk-tools-r24.0.1
sdk-tools-r24
sdk-tools-r23.0.2
sdk-tools-r23
SDK Samples版本号
android 21 (21)
android L (L)
android 4.4W (20)
android 4.4.2 (19)
android 4.3 (18)
android 4.2.2 (17)
android 4.1.2 (16)
android 4.0.3 (15)
android 4.0 (14)
android 3.2 (13)
android 3.1 (12)
android 3.0 (11)
android 2.3.3 (10)
android 2.2 (8)
Source Code
Source Code 5.0 (21)
Source Code 4.4W (20)
Source Code 4.4.2 (19)
Source Code 4.3 (18)
Source Code 4.2.2 (17)
Source Code 4.1.2 (16)
Source Code 4.0.3 (15)
Source Code 4.0 (14)
Source Code 3.0 (11)
Source Code 2.3.3 (10)
Source Code 2.2 (8)
Support Library版本
gradle-2.10-all.zip
gradle-2.9-all.zip
gradle-2.8-all.zip
gradle-2.7-all.zip
gradle-2.6-all.zip
gradle-2.5-all.zip
gradle-2.4-all.zip
gradle-2.3-all.zip
gradle-2.2.1-all.zip
gradle-2.2-all.zip
gradle-2.1-all.zip
gradle-2.0-all.zip
gradle-1.12-all.zip
gradle-1.11-all.zip
gradle-1.10-all.zip
gradle-1.9-all.zip
gradle-1.8-all.zip
gradle-1.7-all.zip
Git-1.8.5.2
SVN Plugin For
SVN-1.10.5
SVN-1.8.22
SVN-1.6.18
&&/&&64位下载
&&/&&64位下载
&&/&&64位下载
&&/&&64位下载
&&/&&64位下载
&&/&&64位下载
&&/&&64位下载
&&/&&64位下载
&&/&&64位下载
&&/&&64位下载
&&/&&64位下载
&&/&&64位下载
反编译工具
反编译dex文件的开源工具
下载&&/&&教程
Google官方开源的可以将 Dalvik 字节码转换为 Java 字节码的工具。
下载&&/&&教程
dex2jar+jd-gui+apktool
完美组合反编译
下载&&/&&教程
APK+Dex文件反编译及回编译工具
针对Android OS系统的APK程序,直接反编译修改的工具
下载&&/&&教程
onekey decompile apk
一键反编译apk工具
下载&&/&&教程
Dalvik的dex格式汇编/反汇编程序
下载&&/&&教程
AXMLPrinter2
反编译 AndroidManifest.xml
下载&&/&&教程
Android逆向助手
反编译apk/重新打包成apk/对apk进行签名/反编译dex/重新打包成等等
下载&&/&&教程
Android Killer
集Apk反编译、Apk打包、Apk签名,编码互转,
下载&&/&&教程
分析工具/反逆向
SmaliViewer
一款免费的APK分析软件,采用多种方法来对疑似样本进行筛选判定
下载&&/&&教程
XAppDbg是一个可以在运行中改变代码中参数的一个应用开发工具。这个工具可以为你省下大量的时间,因为你不用为应用的每次小改变而重新编译运行你的程序
ChkBugReport
这个工具可以快速地检查输出的Android错误报告。它从Android错误报告工具输出的大量文本文件中进行语义分析,然后解析成一个更具有可读性的文档,分析起来更加容易
有了AppXplore工具,你可以浏览所有安装在你安卓设备上的应用,还可以剖析很多应用的细节——应用的版本、包名、证书、权限、签名、activities和很多设备上其它一般不可查看的信息
APK静态动态分析
Android analysis framework
每一个Android应用程序的全面分析
ApkAnalyser
Android 静态,虚拟分析工具,用来测试和验证 Android 应用的开发工作
APKfuscator
一个防止dex逆向的开源项目
Androguard
恶意软件分析工具包
VirusTotal
扫描APK病毒
一款Android病毒的动态分析工具
Android工具进行网络分析,端口扫描,MITM攻击,等等。
TaintDroid
扫描APK病毒
一个非常强大的安卓调试工具
Android安全监测网
在线监测Android病毒检测
Android测试工具/平台
Google旗下的公司,对移动应用和网站进行自动测试和优化
国内测试平台
APP的随身调测平台,它是直接运行在手机上的“集成调测环境”
Little Eye
Facebook性能测试工具
一个Android平台高效性能测试组件
Android多渠道打包工具
Android studio 多渠道
gradle 多渠道
AndroidMultiChannelBuildTool
基于eclipse 插件
package_tool
替换相应的标签,然后重新打包
日志收集工具
ChkBugReport
Crashlytics
Android Crash Catcher
资源清理工具
Android Lint
Android Resource Cleaner
Android Unused Resources
Android Resource Remover
Chrome插件
Android Resource Navigator
Android SDK Search
Mobile/RWD Tester
Android Developer Improvements
Android downloader
ADB Plugin for remote
ExtensionAndroid SDK Samples Search
Android Developer Improvements
JSON Formatter
Base64 Encode and Decode
程序员设计工具
输入你的字段的前缀,选择你的XML中的范围并点击生成,自动生成java代码
尺寸标注工具
PxCook像素大厨
UI设计师效率提升利器,让你专注于设计本质,
不再为标注切图而烦恼,从设计到实现一气呵成
矢量图工具
Affinity Designer
Adobe Illustrator
Android Material Design可视化调色板
Colorube配色神器
Android Material Colours
效果预览工具
Android Design Preview
skalapreview
原型设计工具
在线代码生成器,提高开发效率
Android Layout Finder
只需粘贴你的Android布局代码在第一个文本框,选择你需要的功能,就会自动生成代码
Android KickstartR
帮助您快速创建 Android应用程序并使用最流行的库进行配置。
它创建和配置你的项目给你。只专注于代码!
Android Button Maker
在线生成shape drawable XML代码 ,提供图形界面调试,更加直观
Android Layout Parser工具
输入你的字段的前缀,选择你的XML中的范围并点击生成,自动生成java代码
Android资源生成分析工具
Android Asset Studio
icon制作(桌面icon,通知栏icon等),9patch图片制作,ActionBar样式等相关的工具
Android Action Bar Style Generator
自定义生成自己风格主题,图形化界面,直接下载相关的代码和资源
Simple Nine-patch Generator
快速生成不同分辨率的资源
Android Holo Colors Generator
在线生成android的组件,如EditText、Radio等等,通过自定义自己的颜色风格。图形界面,简单可观
Android Assets Viewer
通过上传的自己的drawable resources,是否达到设计师的视觉效果
Android SVG to VectorDrawable
一个可以将SVG图片转换为Vector Drawable xml文件的在线工具
计算转换工具
Android dp px Calculator
dp px 相互转换
DP-PX-converter
自定义生成自己风格主题,图形化界面,直接下载相关的代码和资源
Androidpixels
不同分辨率下的转换数值
Android pixel 计算器
是一个Java源码搜索引擎,对于查看Android代码也不例外。并且支持多个API版本快速切换查看。如果你的IDE关联本地代码后,让机器累的喘不过气来,那么就试一试这个在线的工具吧。
支持多个API版本快速切换查看
当你还在花时间切换不同的反编译工具时,一个在线反编译网站应运而生,它就是Android
APK Decompiler,只需上传要反编译的apk包,无需多时,源码可以下载下来了。
Android APK Decompoler
有两个在线反编译,简单容易,喜欢哪个用哪个
下载1&&/&&下载2
由于一些你懂的原因,国内无法直接访问Google
Play商店。而且下载Google
Play商店还是需要登陆谷歌账户,以国内的网络,下载成功简直是太困难了。这里介绍一款不需要账户国内即可访问的Web工具。可以通过输入包名或者Google
Play地址即可下载。
快速下载Google Play应用
下载Google Play的应用
Android中所有的资源都有一个对应的资源ID,资源ID的类型为16进制的整数。有些时候特殊的场合处理资源ID,为了调试需要进行进制转换,比如16进制转常用的10进制。不用自己算,使用下面的工具就可以轻松搞定。
在线快速转换,比如16进制转常用的10进制
在CS应用中,客户端和服务器端通常使用json作为数据交换格式。当分析的时候,我们必然是将raw数据转换成可读性更高的。快来使用这个强大的工具吧。
JSON格式化
转成标准json格式
收录网站各个领域的开发API,比如图片识别,语音合成,OCR等等一些生活常用的API开放接口,不需要后台也可以做一款使用的应用
图片识别,语音合成,OCR等等一些生活常用的API开放接口
在线画流程图,如果你在家里用的MAC
OX ,但是在公司用的是Linux ,那么导致UML图的转移不方便,这个在线的UML画图解决了一切问题
在线UML工具
UML工具 、类图、流程图等等
国内功能很强大且图标内容很丰富的矢量图标库,提供矢量图标下载、在线存储、格式转换等功能
公开图标库
设计和前端开发的便捷工具
当图片很大的时候,又不想麻烦设计师,那么这个网站很适合你,批量压缩各种图片,直接把图片拖拉进去就行
批量图片压缩
批量图压缩
通常UI设计师都会给开花童鞋色值,当疏忽的时候,我们可以使用截图软件得到10进制的三个值,然后将其转换成色值。这里有一个便捷的RGB工具。
Chrome的Developer
Tools对于WEB开发者来讲几乎是一个神器,而Chrome
Store里也有无奇不有的插件,如果Chrome能调安卓应用应该是一件美好的事,而Facebook开源的一个工具Stetho让Chrome调试android
应用不再是一个梦。安卓在调试时,有时候需要查看数据库,SharePreference等,而这个前提是必须root,另一方面,andoird的网络方面的抓包调试显得很困难,而这一切,Stetho都为我们轻轻松松地解决。除了使用android集成环境里的工具查看view树,使用Stetho也可以做到。
Android 调试神器(FaceBook 出品)
下载&&/&&教程
著名的开源组织
Square 开发了一套 Android 和 Java 内存泄露检测库。LeakCanary 是一个检测内存泄露的开源类库。你可以在 debug
包种轻松检测内存泄露。
LeakCanary
轻松检测内存泄露。
下载&&/&&教程
dex-method-counts来统计包中的总体数量,使用方法很简单,只需执行下面语句即可:
java -jar path\dex-method-counts.jar path\App.apk
dex-method-counts
统计包中方法的总体数量
下载&&/&&教程
Butterknife Zelezny这个插件,事实上这是个Android
Studio的plugin,他可以让你在添加Butterkinfe注解时偷偷懒,直接点击几下鼠标既可以完成注解的增加,同时还是图形化的操作,可以说,大大的减轻了开发负担。尤其是当你的layout中有很多很多的view需要通过findviewbyid来获得引用时。
Android-butterknife-zelezny
一键生成注解
下载&&/&&教程
手动实现Parcelable接口,往往需要写多些代码去实现,android-parcelable-plugin.可以让你几秒钟实现
Parcelable接口,让开发变得更开心
android-parcelable-plugin
一键生成邮包方法
下载&&/&&教程
你还在为在使用真机测试时,缺乏数据线而发愁吗?你还在为同事踩烂了你的一根数据线而耿耿于怀吗?(说实话我今天就被踩烂了一根)
你还在为每次用数据线连接真机测试时,都得抽拔抽拔而不耐烦吗?AndroidWiFiADB 通过WiFi 进行adb调试, 摆脱数据线
AndroidWiFiADB
通过WiFi进行adb调试
下载&&/&&教程
这是一个根据JSONObject格式的字符串,自动生成实体类参数.
GsonFormat
JSon实体类快速生成插件
下载&&/&&教程
ACRA是一个可以让安卓应用自动发出GoogleDoc格式崩溃报告的函数库。安卓开发者可以通过ACRA获取应用崩溃或者错误行为的数据。如果有一个崩溃发生,你的应用不会越过已有的系统崩溃提醒或者报告功能来添加用户提醒。如果使用Toast、状态提醒条或者直接对话框模式,这个“强制关闭”的对话框不会再显示,就算设备上原生系统的提醒功能开启也不能发送一个另外的报告。
知道程序的错误才能更快的解决问题,优化我们的程序
Android blog. All rights reserved.您的赞赏,是对我创作的最大鼓励。|赞赏
收藏已收藏 | 56赞 | 38
扫码分享到微信
投稿、稿件问题联系Q:
1529篇作品15.3m阅读总量
热门问题1234567891027772人阅读
Android(63)
1 Android手机目前常见的分辨率
1.1 手机常见分辨率:
VGA&&&& 640*480 (Video Graphics Array)
QVGA& 320*240 (Quarter VGA)
HVGA& 480*320 (Half-size VGA)
SVGA& 800*600 (Super VGA)
WVGA& 800*480 (Wide VGA)
FWVGA 854*480 (Full Wide VGA)
High Definition
QHD&&&& 960*540
720p&&& & 标清
iphone 4/4s&&& 960*640 (3:2)
iphone5&&&&&&&&
小米1&&&&&&&&&&&& 854*480(FWVGA)
小米2&&&&&&&&&&&&
1.2 分辨率对应DPI
&HVGA&&& mdpi&
&WVGA&& hdpi &
&FWVGA hdpi &
&QHD&&&&& hdpi &
&720P&&&& xhdpi&
&1080P&& xxhdpi &
2&屏幕适配的注意事项
2.1 基本设置
2.1.1 AndroidManifest.xml设置
在中Menifest中添加子元素
android:anyDensity=&true&时,应用程序安装在不同密度的终端上时,程序会分别加载xxhdpi、xhdpi、hdpi、mdpi、ldpi文件夹中的资源。
相反,如果设为false,即使在文件夹下拥有相同资源,应用不会自动地去相应文件夹下寻找资源:
1) 如果drawable-hdpi、drawable-mdpi、drawable-ldpi三个文件夹中有同一张图片资源的不同密度表示,那么系统会去加载drawable_mdpi文件夹中的资源;
2) 如果drawable-hpdi中有高密度图片,其它两个文件夹中没有对应图片资源,那么系统会去加载drawable-hdpi中的资源,其他同理;
3) 如果drawable-hdpi,drawable-mdpi中有图片资源,drawable-ldpi中没有,系统会加载drawable-mdpi中的资源,其他同理,使用最接近的密度级别。
2.1.2 横屏竖屏目录区分
1) drawable
a) drawable-hdpi该图片即适用于横屏,也适用于竖屏;
b) drawable-land-hdpi,当屏幕为横屏,且为高密度时,加载此文件夹的资源;
c) drawable-port-hdpi,当屏幕为竖屏,且为高密度时,加载此文件夹中的资源。其他同理。
在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,以适应对横屏竖屏自动切换。
2.2&多屏幕适配的4条黄金原则
1) 在layout文件中设置控件尺寸时应采用fill_parent、wrap_content、match_parent和dp;
具体来说,设置view的属性android:layout_width和android:layout_height的值时,wrap_content,match_parent或dp比px更好,文字大小应该使用sp来定义。
2) 在程序的代码中不要出现具体的像素值,在dimens.xml中定义;
为了使代码简单,android内部使用pix为单位表示控件的尺寸,但这是基于当前屏幕基础上的。为了适应多种屏幕,android建议开发者不要使用具体的像素来表示控件尺寸。
3) 不使用AbsoluteLayout(android1.5已废弃) ,可以使用RelativeLayout替代;
4) 对不同的屏幕提供合适大小的图片。
不同大小屏幕用不同大小的图片,low:medium:high:extra-high图片大小的比例为3:4:6:8;举例来说,对于中等密度(medium)的屏幕你的图片像素大小为48×48,那么低密度(low)屏幕的图片大小应为36×36,高(high)的为72×72,extra-high为96×96。
2.3&使用9-patch PNG图片
使用图片资源时,如果出现拉伸,因为图片处理的原因,会变形,导致界面走形。9-patch PNG图片也是一种标准的PGN图片,在原生PNG图片四周空出一个像素间隔,用来标识PNG图片中哪些部分可以拉伸、哪些不可以拉伸、背景上的边框位置等。
“上、左”定义可拉伸区域
“右、下”定义显示区域,如果用到完整填充的背景图,建议不要通过android:padding来设置边距,而是通过9-patch方式来定义。
Android SDK中提供了编辑9-Patch图片的工具,在tools目录下draw9patch.bat,能够立刻看到编辑后的拉伸效果,也可以直接用其他图片编辑工具编辑,但是看不到效果。
2.4&不同的layout
Android手机屏幕大小不一,有480x320, 640x360, 800x480……
怎样才能让Application自动适应不同的屏幕呢?
其实很简单,只需要在res目录下创建不同的layout文件夹,比如:layout-640x360、layout-800x480……所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。
2.5&测试验证
一般使用AVD Manager创建多个不同大小的模拟器,如果条件具备,也可以直接用真机测试,这个比较靠谱。
3 参考资料
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:212148次
积分:1921
积分:1921
排名:第14808名
转载:65篇
评论:22条
(2)(1)(2)(24)(42)Android中dp,px,sp概念梳理以及如何做到屏幕适配
今天又开始我的App开发,因为之前一直做的是SDK,所以涉及到界面UI很少,刚开始做Android应用的时候,没有对dp,px,sp等概念有一个深入的了解,只知道他们之间的转化,还有写个转换工具类等。做Android已经有一年多了,现在再次开始App开发,决定没遇到一个概念,必须得弄透彻。好吧,下面进入主题吧:首先来看一下他们的基本概念:px & :是屏幕的像素点dp & :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1pxdip &:等同于dpsp & :同dp相似,但还会根据用户的字体大小偏好来缩放(建议使用sp作为文本的单位,其它用dip)通过上面的知识我们可以看到这里只要弄懂px和dp之间的关系就可以了。那么下面重点来看一下他们两之间的关系:针对dip和px 的关系,做以下概述:1). px (pixels)像素 :一个像素通常被视为图像的最小的完整采样,这个用的比较多,特别是web开发,页面基本都是使用像素作为单位的.2). dip或dp (device independent pixels):设备独立像素 — 这个和设备硬件有关,一般我们为了支持手机上多种分辨率,如WVGA、HVGA和QVGA,都会使用dip作为长度的单位下面来看一下手机屏幕类型和密度以及分辨率的对应关系QVGA屏density=120 & & & & QVGA(240*320)HVGA屏density=160 & & & & HVGA(320*480)WVGA屏density=240 & & & &WVGA(480*800)WQVGA屏density=120 & & &WQVGA(240*400)注:density值表示每英寸有多少个显示点,与分辨率是两个概念。不同density下屏幕分辨率信息是不同的,以480dip*800dip的 WVGA(density=240)为例1、当density=120时&转化:转化系数=120/240屏幕实际分辨率为240px*400px (两个点对应一个分辨率)状态栏和标题栏高各19px或者25dip横屏是屏幕宽度400px 或者800dip,工作区域高度211px或者480dip竖屏时屏幕宽度240px或者480dip,工作区域高度381px或者775dip2、当density=160时&转化:转化系数=160/240屏幕实际分辨率为320px*533px (3个点对应两个分辨率)状态栏和标题栏高个25px或者25dip横屏是屏幕宽度533px 或者800dip,工作区域高度295px或者480dip竖屏时屏幕宽度320px或者480dip,工作区域高度508px或者775dip3、当density=240时&转化:转化系数=240/240屏幕实际分辨率为480px*800px (一个点对于一个分辨率)状态栏和标题栏高个38px或者25dip横屏是屏幕宽度800px 或者800dip,工作区域高度442px或者480dip竖屏时屏幕宽度480px或者480dip,工作区域高度762px或者775dip我们一般在项目中会定义多个适配资源文件夹(values-XXX,drawable-XXX等)drawable-ldpi: & & 屏幕密度为120的手机设备drawable-mdpi: & 屏幕密度为160的手机设备(此为baseline,其他均以此为基准,在此设备上,1dp = 1px)drawable-hdpi: & &屏幕密度为240的手机设备drawable-xhdpi: &屏幕密度为320的手机设备drawable-xxhdpi:屏幕密度为480的手机设备(values也是一样,当然还有一点要注意:values和values-hdpi效果是一样的,drawable和drawable-hdpi效果也是一样的,所以一般我们都会在这两个文件夹中存放的值是一样的,如果两个都有的话,适配更好)apk的资源包中当屏幕density=240时,使用hdpi 标签的资源当屏幕density=160时,使用mdpi标签的资源当屏幕density=120时,使用ldpi标签的资源当屏幕density=320时,使用xhdpi标签的资源当屏幕density=480时,使用xxhdpi标签的资源不加任何标签的资源是各种分辨率情况下共用的所以布局时尽量使用单位dip,少使用pxdp与px换算公式:pixs =dips * (densityDpi/160).&dips=(pixs*160)/densityDpi但是我们在代码里面进行转化的时候还需要有一个偏移值:0.5f[java]&view plaincopyprivate&static&final&float&scale&=&mContext.getResources().getDisplayMetrics().&&&&private&static&final&float&scaledDensity&=&mContext.mContext.getResources().getDisplayMetrics().scaledD&&&&/**&&*&dp转成px&&*&@param&dipValue&&*&@return&&*/&&public&static&int&dip2px(float&dipValue)&{&&&&&&return&(int)&(dipValue&*&scale&+&0.5f);&&}&&&&/**&&*&px转成dp&&*&@param&pxValue&&*&@return&&*/&&public&static&int&px2dip(float&pxValue)&{&&&&&&return&(int)&(pxValue&/&scale&+&0.5f);&&}&&&&/**&&*&sp转成px&&*&@param&spValue&&*&@param&type&&*&@return&&*/&&public&static&float&sp2px(float&spValue,&int&type)&{&&&&&&switch&(type)&{&&&&&&case&CHINESE:&&&&&&&&&&return&spValue&*&scaledD&&&&&&case&NUMBER_OR_CHARACTER:&&&&&&&&&&return&spValue&*&scaledDensity&*&10.0f&/&18.0f;&&&&&&default:&&&&&&&&&&return&spValue&*&scaledD&&&&&&}&&}&&我们看到,这里的scale是在这个类DisplayMetrics中定义的全局变量,其实这个值就是当前手机的density/160,scaleDensity是用来px和sp之间的转化和scale差不多。还有一点就是这里转化都会有一个偏移值处理dp这个单位可能对web开发的人比较陌生,因为一般都是使用px(像素)但是,现在在开始android应用和游戏后,基本上都转换成用dp作用为单位了,因为可以支持多种分辨率的手机.上面看到了px和dp之间的关系以及转化,下面在来看一下使用场景吧,就是为什么我们会使用到他们之间的转化,我们在xml中一般定义大小都是使用dp为单位的,但是有时候我们需要在代码里面设置一些间距和位置:下面的代码[java]&view plaincopyandroid.view.ViewGroup.LayoutParams.height&&android.view.ViewGroup.LayoutParams.width&&上面这两个属性的单位为像素,但是为了兼容多种分辨率的手机,我们需要最好使用dip,时候我们可以调用以下的代码进行转换.[java]&view plaincopyint&heightPx=&DisplayUtil.dip2px(this,&33);&&mTabHost.getTabWidget().getChildAt(i).getLayoutParams().height&=&heightPx;&&当然我们有时候也会在代码中获取values文件夹中的demen.xml文件中的值,代码如下:[java]&view%20plaincopyfloat&height&=&this.getResources().getDimension(R.dimen.height);&&txt.height&=&px2dip((int)height);//将height转化成px&&不知道他获取的就是dimens.xml文件中定义的dp值,所以这里还手动的进行了转化操作,但是发现显示的效果和我们预期不一样,然后就把值打印了一下看,尽然是两倍,就是通过getDimension方法获取到的值是dimen.xml文件中定义的值的两倍,这不科学呀,然后就search一下了,发现有三个类似的方法,getDimensiongetDimensionPixelOffsetgetDimensionPixelSize他们的功能都是不一样的:通过一个例子来看看他们的区别:dimen.xml:[html]&view%20plaincopy&dimen&name=&activity_vertical_margin1&&16dp&/dimen&&&&&&dimen&name=&activity_vertical_margin2&&16px&/dimen&&&&&&dimen&name=&activity_vertical_margin3&&16sp&/dimen&&&&代码:[java]&view%20plaincopyfloat&a1=getResources().getDimension(R.dimen.activity_vertical_margin1);&&&&int&a2=getResources().getDimensionPixelOffset(R.dimen.activity_vertical_margin1);&&&&int&a3=getResources().getDimensionPixelSize(R.dimen.activity_vertical_margin1);&&&&&&float&b1=getResources().getDimension(R.dimen.activity_vertical_margin2);&&&&int&b2=getResources().getDimensionPixelOffset(R.dimen.activity_vertical_margin2);&&&&int&b3=getResources().getDimensionPixelSize(R.dimen.activity_vertical_margin3);&&&&&&float&c1=getResources().getDimension(R.dimen.activity_vertical_margin3);&&&&int&c2=getResources().getDimensionPixelOffset(R.dimen.activity_vertical_margin3);&&&&int&c3=getResources().getDimensionPixelSize(R.dimen.activity_vertical_margin3);&&&&&&Log.i(&test&,&&getDimension=&&+a1+&,&getDimensionPixelOffset=&+a2+&,getDimensionPixelSize=&+a3);&&&&Log.i(&test&,&&getDimension=&&+b1+&,&getDimensionPixelOffset=&+b2+&,getDimensionPixelSize=&+b3);&&&&Log.i(&test&,&&getDimension=&&+c1+&,&getDimensionPixelOffset=&+c2+&,getDimensionPixelSize=&+c3);&&&&&&对于设备1(dpi,density=1.0):打印结果:对于设备2(480*800,240dpi,density=1.5):打印结果:可见getDimension和getDimensionPixelOffset的功能差不多,都是获取某个dimen的值,如果是dp或sp的单位,将其乘以density,如果是px,则不乘;两个函数的区别是一个返回float,一个返回int.getDimensionPixelSize则不管写的是dp还是sp还是px,都会乘以denstiy.所以我们在使用getDimension方法获取到的值的时候就不需要进行转化了~~下面是我在工作中进行屏幕适配的小工具:http://download.csdn.net/detail/jiangwei/8144585是一个小Demo,运行之后,就可以得到这个设备获取资源的文件夹了,然后我们就可以在指定的文件夹中定义它的尺寸即可。总结:dp和px的相关知识就介绍到这里了,这个只是很容易混淆的,而且在面试和笔试的时候都会遇到,所以这些概念还是弄清楚比较好啦~~(PS:其实写完了,我还是不太记得住~~)
最新教程周点击榜
微信扫一扫

我要回帖

更多关于 像素大厨 的文章

 

随机推荐