在xml中“直接”使用px的小技巧和工具

   2016-09-09 0
核心提示:注:这个idea出自知乎某个回答,但是来源找不到了。。。工具是自己写的。在项目开发中,UI给过来的设计图上的尺寸标识,一般以px(像素)为单位。Android工程师需根据设计图的尺寸将px换成dp,填到layout.xml中。有了这个工具,可以很方便地实现这一点。首先

注:这个idea出自知乎某个回答,但是来源找不到了。。。工具是自己写的。

在项目开发中,UI给过来的设计图上的尺寸标识,一般以px(像素)为单位。Android工程师需根据设计图的尺寸将px换成dp,填到layout.xml中。

有了这个工具,可以很方便地实现这一点。

首先,确认设计图属于下列哪种规格:

ldpi (low) ~120dpi
mdpi (medium) ~160dpi
hdpi (high) ~240dpi
xhdpi (extra-high) ~320dpi
xxhdpi (extra-extra-high) ~480dpi
xxxhdpi (extra-extra-extra-high) ~640dpi
 

然后安装python,运行一个脚本:

然后在控制台中输入:

pythondp_convertor.py 1 100 xxhdpi
 

可得到:

<!-- wrapperfor px -->
<dimenname="_1px">0.3dp</dimen>
<dimenname="_2px">0.7dp</dimen>
<dimenname="_3px">1.0dp</dimen>
<dimenname="_4px">1.3dp</dimen>
<dimenname="_5px">1.7dp</dimen>
<dimenname="_6px">2.0dp</dimen>
<dimenname="_7px">2.3dp</dimen>
<dimenname="_8px">2.6dp</dimen>
<dimenname="_9px">3.0dp</dimen>
<dimenname="_10px">3.3dp</dimen>
<dimenname="_11px">3.6dp</dimen>
<dimenname="_12px">4.0dp</dimen>
<dimenname="_13px">4.3dp</dimen>
<dimenname="_14px">4.6dp</dimen>
<dimenname="_15px">5.0dp</dimen>
<dimenname="_16px">5.3dp</dimen>
<dimenname="_17px">5.6dp</dimen>
<dimenname="_18px">5.9dp</dimen>
<dimenname="_19px">6.3dp</dimen>
<dimenname="_20px">6.6dp</dimen>
<dimenname="_21px">6.9dp</dimen>
<dimenname="_22px">7.3dp</dimen>
<dimenname="_23px">7.6dp</dimen>
<dimenname="_24px">7.9dp</dimen>
<dimenname="_25px">8.2dp</dimen>
<dimenname="_26px">8.6dp</dimen>
<dimenname="_27px">8.9dp</dimen>
<dimenname="_28px">9.2dp</dimen>
<dimenname="_29px">9.6dp</dimen>
<dimenname="_30px">9.9dp</dimen>
<dimenname="_31px">10.2dp</dimen>
<dimenname="_32px">10.6dp</dimen>
<dimenname="_33px">10.9dp</dimen>
<dimenname="_34px">11.2dp</dimen>
<dimenname="_35px">11.6dp</dimen>
<dimenname="_36px">11.9dp</dimen>
<dimenname="_37px">12.2dp</dimen>
<dimenname="_38px">12.5dp</dimen>
<dimenname="_39px">12.9dp</dimen>
<dimenname="_40px">13.2dp</dimen>
<dimenname="_41px">13.5dp</dimen>
<dimenname="_42px">13.9dp</dimen>
<dimenname="_43px">14.2dp</dimen>
<dimenname="_44px">14.5dp</dimen>
<dimenname="_45px">14.9dp</dimen>
<dimenname="_46px">15.2dp</dimen>
<dimenname="_47px">15.5dp</dimen>
<dimenname="_48px">15.8dp</dimen>
<dimenname="_49px">16.2dp</dimen>
<dimenname="_50px">16.5dp</dimen>
<dimenname="_51px">16.8dp</dimen>
<dimenname="_52px">17.2dp</dimen>
<dimenname="_53px">17.5dp</dimen>
<dimenname="_54px">17.8dp</dimen>
<dimenname="_55px">18.2dp</dimen>
<dimenname="_56px">18.5dp</dimen>
<dimenname="_57px">18.8dp</dimen>
<dimenname="_58px">19.1dp</dimen>
<dimenname="_59px">19.5dp</dimen>
<dimenname="_60px">19.8dp</dimen>
<dimenname="_61px">20.1dp</dimen>
<dimenname="_62px">20.5dp</dimen>
<dimenname="_63px">20.8dp</dimen>
<dimenname="_64px">21.1dp</dimen>
<dimenname="_65px">21.4dp</dimen>
<dimenname="_66px">21.8dp</dimen>
<dimenname="_67px">22.1dp</dimen>
<dimenname="_68px">22.4dp</dimen>
<dimenname="_69px">22.8dp</dimen>
<dimenname="_70px">23.1dp</dimen>
<dimenname="_71px">23.4dp</dimen>
<dimenname="_72px">23.8dp</dimen>
<dimenname="_73px">24.1dp</dimen>
<dimenname="_74px">24.4dp</dimen>
<dimenname="_75px">24.8dp</dimen>
<dimenname="_76px">25.1dp</dimen>
<dimenname="_77px">25.4dp</dimen>
<dimenname="_78px">25.7dp</dimen>
<dimenname="_79px">26.1dp</dimen>
<dimenname="_80px">26.4dp</dimen>
<dimenname="_81px">26.7dp</dimen>
<dimenname="_82px">27.1dp</dimen>
<dimenname="_83px">27.4dp</dimen>
<dimenname="_84px">27.7dp</dimen>
<dimenname="_85px">28.1dp</dimen>
<dimenname="_86px">28.4dp</dimen>
<dimenname="_87px">28.7dp</dimen>
<dimenname="_88px">29.0dp</dimen>
<dimenname="_89px">29.4dp</dimen>
<dimenname="_90px">29.7dp</dimen>
<dimenname="_91px">30.0dp</dimen>
<dimenname="_92px">30.4dp</dimen>
<dimenname="_93px">30.7dp</dimen>
<dimenname="_94px">31.0dp</dimen>
<dimenname="_95px">31.4dp</dimen>
<dimenname="_96px">31.7dp</dimen>
<dimenname="_97px">32.0dp</dimen>
<dimenname="_98px">32.3dp</dimen>
<dimenname="_99px">32.7dp</dimen>
<dimenname="_100px">33.0dp</dimen>
 
<dimenname="_1spx">0.3sp</dimen>
<dimenname="_2spx">0.7sp</dimen>
<dimenname="_3spx">1.0sp</dimen>
<dimenname="_4spx">1.3sp</dimen>
<dimenname="_5spx">1.7sp</dimen>
<dimenname="_6spx">2.0sp</dimen>
<dimenname="_7spx">2.3sp</dimen>
<dimenname="_8spx">2.6sp</dimen>
<dimenname="_9spx">3.0sp</dimen>
<dimenname="_10spx">3.3sp</dimen>
<dimenname="_11spx">3.6sp</dimen>
<dimenname="_12spx">4.0sp</dimen>
<dimenname="_13spx">4.3sp</dimen>
<dimenname="_14spx">4.6sp</dimen>
<dimenname="_15spx">5.0sp</dimen>
<dimenname="_16spx">5.3sp</dimen>
<dimenname="_17spx">5.6sp</dimen>
<dimenname="_18spx">5.9sp</dimen>
<dimenname="_19spx">6.3sp</dimen>
<dimenname="_20spx">6.6sp</dimen>
<dimenname="_21spx">6.9sp</dimen>
<dimenname="_22spx">7.3sp</dimen>
<dimenname="_23spx">7.6sp</dimen>
<dimenname="_24spx">7.9sp</dimen>
<dimenname="_25spx">8.2sp</dimen>
<dimenname="_26spx">8.6sp</dimen>
<dimenname="_27spx">8.9sp</dimen>
<dimenname="_28spx">9.2sp</dimen>
<dimenname="_29spx">9.6sp</dimen>
<dimenname="_30spx">9.9sp</dimen>
<dimenname="_31spx">10.2sp</dimen>
<dimenname="_32spx">10.6sp</dimen>
<dimenname="_33spx">10.9sp</dimen>
<dimenname="_34spx">11.2sp</dimen>
<dimenname="_35spx">11.6sp</dimen>
<dimenname="_36spx">11.9sp</dimen>
<dimenname="_37spx">12.2sp</dimen>
<dimenname="_38spx">12.5sp</dimen>
<dimenname="_39spx">12.9sp</dimen>
<dimenname="_40spx">13.2sp</dimen>
<dimenname="_41spx">13.5sp</dimen>
<dimenname="_42spx">13.9sp</dimen>
<dimenname="_43spx">14.2sp</dimen>
<dimenname="_44spx">14.5sp</dimen>
<dimenname="_45spx">14.9sp</dimen>
<dimenname="_46spx">15.2sp</dimen>
<dimenname="_47spx">15.5sp</dimen>
<dimenname="_48spx">15.8sp</dimen>
<dimenname="_49spx">16.2sp</dimen>
<dimenname="_50spx">16.5sp</dimen>
<dimenname="_51spx">16.8sp</dimen>
<dimenname="_52spx">17.2sp</dimen>
<dimenname="_53spx">17.5sp</dimen>
<dimenname="_54spx">17.8sp</dimen>
<dimenname="_55spx">18.2sp</dimen>
<dimenname="_56spx">18.5sp</dimen>
<dimenname="_57spx">18.8sp</dimen>
<dimenname="_58spx">19.1sp</dimen>
<dimenname="_59spx">19.5sp</dimen>
<dimenname="_60spx">19.8sp</dimen>
<dimenname="_61spx">20.1sp</dimen>
<dimenname="_62spx">20.5sp</dimen>
<dimenname="_63spx">20.8sp</dimen>
<dimenname="_64spx">21.1sp</dimen>
<dimenname="_65spx">21.4sp</dimen>
<dimenname="_66spx">21.8sp</dimen>
<dimenname="_67spx">22.1sp</dimen>
<dimenname="_68spx">22.4sp</dimen>
<dimenname="_69spx">22.8sp</dimen>
<dimenname="_70spx">23.1sp</dimen>
<dimenname="_71spx">23.4sp</dimen>
<dimenname="_72spx">23.8sp</dimen>
<dimenname="_73spx">24.1sp</dimen>
<dimenname="_74spx">24.4sp</dimen>
<dimenname="_75spx">24.8sp</dimen>
<dimenname="_76spx">25.1sp</dimen>
<dimenname="_77spx">25.4sp</dimen>
<dimenname="_78spx">25.7sp</dimen>
<dimenname="_79spx">26.1sp</dimen>
<dimenname="_80spx">26.4sp</dimen>
<dimenname="_81spx">26.7sp</dimen>
<dimenname="_82spx">27.1sp</dimen>
<dimenname="_83spx">27.4sp</dimen>
<dimenname="_84spx">27.7sp</dimen>
<dimenname="_85spx">28.1sp</dimen>
<dimenname="_86spx">28.4sp</dimen>
<dimenname="_87spx">28.7sp</dimen>
<dimenname="_88spx">29.0sp</dimen>
<dimenname="_89spx">29.4sp</dimen>
<dimenname="_90spx">29.7sp</dimen>
<dimenname="_91spx">30.0sp</dimen>
<dimenname="_92spx">30.4sp</dimen>
<dimenname="_93spx">30.7sp</dimen>
<dimenname="_94spx">31.0sp</dimen>
<dimenname="_95spx">31.4sp</dimen>
<dimenname="_96spx">31.7sp</dimen>
<dimenname="_97spx">32.0sp</dimen>
<dimenname="_98spx">32.3sp</dimen>
<dimenname="_99spx">32.7sp</dimen>
<dimenname="_100spx">33.0sp</dimen>
 

将以上复制到你项目的dimens.xml中,以后可以直接按照设计图的px值,在layout.xml中写 @dimen/_**px 了。

 
标签: XML 安卓开发
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • View绘制详解
    View绘制详解
    在介绍View绘制之前先来介绍一下LayoutInflater,而介绍LayoutInflater之前,先介绍一种单例实现模式:使用容器实现单例模式public class SingletonManager {   private static MapString, Object objMap = new HashMapString,Object();  private Singlet
  • Android 中处理 XML 的四种方式-XPath
    适用场景:只取 XML中的部分节点值非常方便,我很喜欢 XPath,关于 XPath语法请参考SelectNodes 与 XPath,这是 C#中的,但是 XPath语法是通用的。import org.xml.sax.InputSource;import java.io.ByteArrayInputStream;import java.io.IOException;import ja
  • Android 中处理 XML 的四种方式-PULL
    PULL和 SAX很相像,都是在节点中走,然后遇到开始节点了、结束节点会触发事件,此时就可以获取值。import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import java.io.ByteArrayInputStream;import java.io.IOException;impo
  • Android 中处理 XML 的四种方式-SAX
    SAX(Simple API for XML)解析速度快,占用内存少。适用为 SAX的场景:映射为对象很方便。流程SAX通过一个 Handler将 XML“映射”到一个对象。XML - Handler - ObjectXML示例?xml version=1.0?rootsiteName千一网络/siteNamesiteUrlhttp://www.cftea.com//si
  • Android 中处理 XML 的四种方式-DOM
    Android 中处理 XML 的几种方式连载中,我们就不介绍合成 XML了,因为合成 XML可以直接拼接字符串,虽然看起很不高大上,但却很有效。我们主要介绍如何取 XML中的值。适用 DOM的场景:只取 XML中的部分节点值方便,但还不如 XPath方便。DOM解析小 XML很快,大
  • 使用FileProvider
    像这样的代码:privatevoidinstall(File apkFile){ Uri uri = Uri.fromFile(apkFile); Intent intent = newIntent(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setDataAndType(uri, "application/vnd.android.package-arch
  • 炫酷:一句代码实现标题栏、导航栏滑动隐藏。ByeBurger库的使用和实现
    炫酷:一句代码实现标题栏、导航栏滑动隐藏。By
    其实上周五的时候已经发过一篇文章。基本实现了底部导航栏隐藏的效果。但是使用起来可能不是很实用。因为之前我实现的方式是继承了系统的导航栏,并且提供了响应的隐藏显示方法。这样就变相等于强制使用这个view,体验不是很好。所以抽时间把他优化了一下。因
  • LayoutInflater踩坑日记
    Android开发中ayoutInflater还是比较常见的,例如在Adapter或是Fragment中加载Layout布局,拿Adapter来说,在onCreateViewHolder中加载布局然后传给自定义的ViewHolder,通常我们都是这么用的:@Override public CustomViewHolder onCreateViewHolder(ViewGro
  • Android - 自定义View冷知识之动态替换layout.x
    在开发迭代中,有这么一个场景:我们给TextView定制了不少功能,在下一个版本,需要把程序中的所有TextView都替换成我自己的CustomTextView,这个时候你会怎么做?有没有一种方法在不改动布局文件的情况下就能实现动态替换呢?原理:layout.xml - Java 对象首
    10-10 安卓开发
  • Gank中的MVP模式
    Gank中的MVP模式
    第一次看到 Gank,还是源于 drakeet 的 Meizhi 项目,后来各种干货项目层出不穷,自己的项目中也借鉴了其中不少的写法,恰好最近公司决定让我做点前端了,同时项目经理也和我一样偏爱 Material Design,在说服了老板后,我就开始边学边用 Materialize 框架重
    10-01 MVC模式XML
点击排行