px-Android的那些单位,求不要粘贴网址

问题描述

Android的那些单位,求不要粘贴网址

今天看了很多Android的什么dp,px,sp……头都晕了
还是一对一的解答比较好,谢谢大神。
请问:
xml中有一个 : 50dp
那么在Java中我如何获得50dp呢?要转单位不?

解决方案

px是像素,就是屏幕上可见最小的一个点。
dp可以转化为px,不同的屏幕上有不同的比率,不过只有4种:1dp=[0.75|1|1.5|2]px,近似160dp=1英寸。
sp是按文字大小(小、正常、大、超大等)和dp的比例,正常字体情况下1sp=1dp。
使用:
如果你要按全屏幕大小设置,用px。
如果按(近似的)物理大小设置,用dp。
如果按字体大小匹配,用sp。

解决方案二:

单位互转,程序里写的50是px。

 dp(dip): device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。
dp也就是dip,这个和sp基本类似。如果设置表示长度、高度等属性时可以使用dp 或sp。但如果设置字体,需要使用sp。dp是与密度无关,sp除了与密度无关外,还与scale无关。如果屏幕密度为160,这时dp和sp和px是一 样的。1dp=1sp=1px,但如果使用px作单位,如果屏幕大小不变(假设还是3.2寸),而屏幕密度变成了320。那么原来TextView的宽度 设成160px,在密度为320的3.2寸屏幕里看要比在密度为160的3.2寸屏幕上看短了一半。但如果设置成160dp或160sp的话。系统会自动 将width属性值设置成320px的。也就是160 * 320 / 160。其中320 / 160可称为密度比例因子。也就是说,如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。
px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。
pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;
sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。

转换代码如下

[java] view plaincopy

    /**
     * dp、sp 转换为 px 的工具类
     *
     * @author fxsky 2012.11.12
     *
     */
    public class DisplayUtil {
        /**
         * 将px值转换为dip或dp值,保证尺寸大小不变
         *
         * @param pxValue
         * @param scale
         *            (DisplayMetrics类中属性density)
         * @return
         */
        public static int px2dip(Context context, float pxValue) {
            final float scale = context.getResources().getDisplayMetrics().density;
            return (int) (pxValue / scale + 0.5f);
        } 

        /**
         * 将dip或dp值转换为px值,保证尺寸大小不变
         *
         * @param dipValue
         * @param scale
         *            (DisplayMetrics类中属性density)
         * @return
         */
        public static int dip2px(Context context, float dipValue) {
            final float scale = context.getResources().getDisplayMetrics().density;
            return (int) (dipValue * scale + 0.5f);
        } 

        /**
         * 将px值转换为sp值,保证文字大小不变
         *
         * @param pxValue
         * @param fontScale
         *            (DisplayMetrics类中属性scaledDensity)
         * @return
         */
        public static int px2sp(Context context, float pxValue) {
            final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
            return (int) (pxValue / fontScale + 0.5f);
        } 

        /**
         * 将sp值转换为px值,保证文字大小不变
         *
         * @param spValue
         * @param fontScale
         *            (DisplayMetrics类中属性scaledDensity)
         * @return
         */
        public static int sp2px(Context context, float spValue) {
            final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
            return (int) (spValue * fontScale + 0.5f);
        }
    }

解决方案三:

如果你的屏幕密度是3(1920),那么50dp就是50*3=150像素

解决方案四:

getHeight(),由于得到的都是px所以需要进行单位装换:
/**
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
*/

public static int px2dip(Context context, float pxValue) {

final float scale = context.getResources().getDisplayMetrics().density;

return (int) (pxValue / scale + 0.5f);

}

解决方案五:

手机上的,不发网址了。。看我博客,里面有篇我的解决方案,,这样做就不用考虑这些问题了

解决方案六:

我的问题是这样的我使用canvas.drawLine();时如何适配到屏幕?就是不知道什么的标准,画了一写图案

解决方案七:

据说,
px是像素
dp可以根据平台的分辨率自动转换成px
sp是文字的使用单位
在对布局或控件进行尺寸编写的时候
我比较喜欢用权重来调节大小

解决方案八:

大家都说得好复杂。
你就记住 textSize用单位: sp
其他的用单位:dp( = dip)
如果你想固定大小的话才用px(因为要适配,一般不会用px)

时间: 2024-12-30 22:24:19

px-Android的那些单位,求不要粘贴网址的相关文章

android 2种效果求实现方法。。。有截图。。。

问题描述 android 2种效果求实现方法...有截图... ** 可以左右滑动,里面是文字,还可以上下滑动文字...我只做过图片的... ** ----------------------分割线----------------------------- 注意看图片边角(小半圆)...是怎么实现的,我已经确认过了图片是方形的,应该是覆盖了... 我不知道怎么覆盖的... 解决方案 android-support-v4.jar中的viewpager,里面是scrollview.覆盖,用relat

android获取公网IP 求大神解答

问题描述 android获取公网IP 求大神解答 android可以获取公网IP吗 不是局域网和内网IP 不是那种获取URL的方式 解决方案 需要借助一个外网的服务器,比如常见的用ip138.cmyiphttp://blog.csdn.net/jaycee110905/article/details/8516318 解决方案二: http://www.cnblogs.com/android100/p/Android-get-ip.htmlhttp://www.2cto.com/kf/201504

cocos2d-x-3.8编译android报错,求大神帮帮忙

问题描述 cocos2d-x-3.8编译android报错,求大神帮帮忙 创建了一个cocos2d项目,添加了几行代码,在vs2012下运行正常,编译win32也正常,但是一编译android就报错 NDK用android-ndk-r9d和android-ndk-r10两个版本试过,估计不是ndk的原因,其他的原因也想不出来,求大神帮忙解决 这是报错的原文 E:cocosfu100>cocos compile -p android -j 4 执行命令:compile 编译模式:debug 使用

android启动崩溃,求指导

问题描述 android启动崩溃,求指导 我写了一个很简单的android小程序,结果程序没法编译,连启动都启动不了,但是如果我把下面那行( EditText editText = new EditText(this);)注释掉就没有问题,不知道各位能不能指点一下呢,谢谢了,代码如下: package org.crazyit.io; import android.app.Activity; import android.app.AlertDialog; import android.conten

android studio的问题求大神解决!!!

问题描述 android studio的问题求大神解决!!! android studio 自己创建的项目就可以运行,但是导入的项目不能运行怎么解决啊?其他的导入方式也试过了,导入的项目上面的运行跟模拟器都是灰色的,而且项目里面每一个文件(布局文件除外)的右下角都会有一个红色的圆圈,圆圈里面是一红色的J字母. 解决方案 重新把项目构建一边,在 解决方案二: 小伙子 ,你按这篇帖子重新导入你的Eclipse项目.http://www.cnblogs.com/ct2011/p/4183553.htm

程序员-Android的初学者,求高手帮忙解决问题

问题描述 Android的初学者,求高手帮忙解决问题 求各位大神帮帮忙: 我是一个刚踏进工程师行业的程序员,以前从没做过实战项目.现在刚进一家企业,是那种很小的公司.老板要做一个app,可什么都没有.就我一个人,我现在很迷茫,不知道怎么开始. 数据库.服务端.app端.要以那为切入口开始做起.求各位大神简要说明一下流程. 万分感谢 解决方案 首先我也是新手,只是给一些简单建议 第一,了解需求 第二,建立服务端框架 spring + spring mvc + mybaits 上手挺容易的. 第三,

android-网上的方法都试过了,软件也重装了,Android studio 报错,求解决,在线等..

问题描述 网上的方法都试过了,软件也重装了,Android studio 报错,求解决,在线等.. Error:Unable to start the daemon process. This problem might be caused by incorrect configuration of the daemon. For example, an unrecognized jvm option is used. Please refer to the user guide chapter

linux-Linux下安装Android Studio出错,求大神解答!

问题描述 Linux下安装Android Studio出错,求大神解答! JDK都配置好了,运行 zoegreen@zoegreen-Lenovo-IdeaPad-Y470:/opt/android-studio/bin$ java -version java version "1.7.0_51" Java(TM) SE Runtime Environment (build 1.7.0_51-b13) Java HotSpot(TM) Server VM (build 24.51-b0

服务端-android方面问题,求大神解答

问题描述 android方面问题,求大神解答 我想做一个吧手机照片传到服务器上的小程序,求大神告诉客户端和服务端怎么写?服务器是用tomcat做. 解决方案 就是上传图片http://www.cnblogs.com/gzggyy/archive/2011/08/02/2125237.html