Android单位转换

PT->SP

根据TypedValue.javaapplyDimension方法:

public static float applyDimension(int unit, float value,
                                       DisplayMetrics metrics)
    {
        switch (unit) {
        case COMPLEX_UNIT_PX:
            return value;
       case COMPLEX_UNIT_DIP:
            return value * metrics.density;
       case COMPLEX_UNIT_SP:
            return value * metrics.scaledDensity;
        case COMPLEX_UNIT_PT:
            return value * metrics.xdpi * (1.0f/72);
        case COMPLEX_UNIT_IN:
            return value * metrics.xdpi;
        case COMPLEX_UNIT_MM:
            return value * metrics.xdpi * (1.0f/25.4f);
        }
        return 0;
    }

把COMPLEX_UNIT_PT转换为COMPLEX_UNIT_SP的换算为:

value * metrics.xdpi * (1.0f/72))/ metrics.scaledDensity = value *  metrics.xdpi  /  (72*metrics.scaledDensity) )

所以1pt =  metrics.xdpi  /  (72 * metrics.scaledDensity)
 sp

(其中xdpi 和 metrics.scaledDensity可以从系统获取到, 注意的是ui标注的pt要先转换为系统对应的pt. 取决于ui标注的尺寸)

值取决于机器, 大致约等于2.22, 部分机器是2.15.

时间: 2024-09-27 22:12:27

Android单位转换的相关文章

Android单位转换 (px、dp、sp之间的转换工具类)

在Android开发中,涉及到屏幕视频问题的时候,px.dp.sp之间的转换比较重要的一部分,所以杨哥整理了一个工具类给大伙用. package com.zw.express.tool; import android.content.Context;import android.util.DisplayMetrics;/** * ydc * @author Administrator * */public class DensityUtils { /**     * 根据手机的分辨率从 dip

Android 尺寸单位转换和屏幕适配相关

一:Android 屏幕适配 众所周知,Android机型尺寸各种各样,于是屏幕适配就成了Android开发中很重要的一环.Android屏幕适配可能一些开发者都会遇到这样的问题,今天就来分享下屏幕适配,其实Android屏幕适配也可以很简单. 基本概念 Android屏幕适配必须要理解的一些概念: px 是英文单词pixel的缩写,意为像素,屏幕上的点.我们通常所说的分辨率如480X800就是指的像素. 在设计领域中,像素是用来计算数码影像的最小单位.计算机中显示的图像并非连续的线条组成,而是

Android中dip(dp)与px之间单位转换

px   :是屏幕的像素点in    :英寸mm :毫米pt    :磅,1/72 英寸dp   :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1pxdip  :等同于dpsp   :同dp相似,但还会根据用户的字体大小偏好来缩放.建议使用sp作为文本的单位,其它用dip 针对dip和px 的关系,做以下概述: QVGA屏density=120:          QVGA(240*320) HVGA屏density=160:          HVGA(320*480

安卓工具类------>常用单位转换的辅助类

import android.content.Context; import android.util.TypedValue; //常用单位转换的辅助类 public class DensityUtils { private DensityUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * dp转px * * @

使用命令行工具将Android应用转换成BlackBerry PlayBook应用

昨天写了篇文章关于Android应用转换的,通过BlackBerry的在线转换工具将Android应用转换成BlackBerry PlayBook应用.有网友反映说方法有点麻烦,所以今天补上新的转换方法:使用命令行工具将Android应用转换成BlackBerry PlayBook应用. 首先要强调的是命令行工具使用起来虽然比较方便,但是对使用者有一定要求.而使用在线的网页进行转换虽然步骤比较多,但是操作比较简单.所以,对于初步接触的同学来讲,建议还是使用上一篇博文的在线转换工具比较好. 如果准

System.currentTimeMillis()计算方式与时间的单位转换

目录[-] 一.时间的单位转换 二.System.currentTimeMillis()计算方式 一.时间的单位转换 1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s)1秒=1,000,000 微秒(μs) 1微秒=1/1,000,000秒(s)1秒=1,000,000,000 纳秒(ns) 1纳秒=1/1,000,000,000秒(s)1秒=1,000,000,000,000 皮秒(ps) 1皮秒=1/1,000,000,000,000秒(s) 1分钟=60秒 1小时=60分钟=360

Xamarin.Android之转换,呼叫,查看历史纪录

E文文章. 功能:能将输入的字母转换成相应的数字.并且能呼叫出去.能查看呼叫的历史纪录. 界面代码如下: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 an

单位转换小程序

单位转换 - 根据输入内容自由判断 - 温度 - 长度 - 货币 学习要点 - 字符串 ,数字转换 - 字典当作菜单 - print格式化 - 初步了解for 和if s = '1F' s.strip('F') '1' print('欢迎使用万能单位转换器'.center(30,'*')) menu = {'T':'温度转换','L':'长度转换','C':'货币转换'} for k,v in menu.items(): print(k,v) choose = input('请输入转换类型:')

spring-boot前端参数单位转换

前端时间单位用的是unix时间戳,单位秒,而java后端用的是Date类型. 在request请求时,如何把前端的时间戳类型优雅的转换为后端的Date类型呢. 如果你想在response时,把后端的Date类型转换到前端的时间戳类型 可以看这篇文章java中JsonSerializer用法,前后端单位转换必备 这里我使用的是SpringBoot框架. Controller代码 @RequestMapping(value = "/add", method = RequestMethod.