Android px转dip px转sp法则

在一些情况下,美工往往给我的都是px 这个时候我们就需要根据屏幕分辨率把px转成dip或者sp 下面就是计算公式:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:background="@android:color/white">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="20dp"
        android:text="开始"/>

</FrameLayout>
package com.example.test5;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.main);

		findViewById(R.id.button).setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Test();

			}
		});

	}

	public boolean isGreaterThan(String time){
		String time1=time.replace(":", "").trim();
		String time2="0130";
		return Integer.parseInt(time2)-Integer.parseInt(time1)<=0;

	}

	private void Test() {
		final float fontScale = this.getResources().getDisplayMetrics().scaledDensity;
		final float scale = this.getResources().getDisplayMetrics().density;
		int screenWidth  = getWindowManager().getDefaultDisplay().getWidth();
	    int screenHeight = getWindowManager().getDefaultDisplay().getHeight();
	    DisplayMetrics dm = new DisplayMetrics();
	    dm = new DisplayMetrics();
	    getWindowManager().getDefaultDisplay().getMetrics(dm);
	    float density  = dm.density;
	    float densityDPI = dm.densityDpi;
		Log.d("text", "scale="+scale+"fontScale="+fontScale+"screenWidth="+screenWidth+"screenHeight="+screenHeight);
		Log.d("text", "density="+density+"densityDPI="+densityDPI);
		 int a=px2sp(26,scale);

		String s1=px2dip(this,13)+"";
		String s6=px2dip(this,60)+"";
		String s7=px2dip(this,11)+"";
		String s8=px2dip(this,162)+"";
		String s9=px2dip(this,232)+"";
		String s10=px2dip(this,44)+"";
		String s11=px2dip(this,178)+"";
		String s12=px2dip(this,610)+"";
		String s13=px2dip(this,420)+"";
		String s14=px2dip(this,126)+"";

		String s2=px2dip(this,32)+"";
		String s3=px2sp(26, fontScale)+"";
		String s4=px2sp(22, fontScale)+"";
		String s5=px2sp(18, fontScale)+"";

		System.out.println("s1: "+s1+"-----"
				+"s6:"+s6+"-----"
				+"s7:"+s7+"-----"
				+"s8:"+s8+"-----"
				+"s9:"+s9+"-----"
				+"s10:"+s10+"-----"
				+"s11:"+s11+"-----"
				+"s12:"+s12+"-----"
				+"s13:"+s13+"-----"
				+"s14:"+s14+"-----"
		+"s2:"+s2+"-----"
		+"s3"+s3+"-----"
		+"s4"+s4+"-----"
		+"s5"+s5+"-----");

	}

	public static int dip2px(Context context, float dpValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dpValue * scale + 0.5f);
	}

    public static int px2dip(Context context, float pxValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (pxValue / scale + 0.5f);
	}

    public static int px2sp(float pxValue, float fontScale) {
		return (int) (pxValue / fontScale + 0.5f);
	}

    public static int sp2px(float spValue, float fontScale) {
		return (int) (spValue * fontScale + 0.5f);
	}

    public void sT(String s){
    	Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
    }

}

源码下载

时间: 2024-10-21 02:16:54

Android px转dip px转sp法则的相关文章

C++实现android中px转换为dip功能的小程序

首先需要明白dip和px代表什么意思. dip:device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关. px:pixels(像素),不同的设备不同的显示屏显示效果是相同的,这是绝对像素,是多少就永远是多少不会改变. dip的换算: dip = (int)  (px/1.5 + 0.5). 详细的介绍可以参考http://www.cnblogs.com/error404/archive/2011/11/03/2234165.html.

Android开发之dip, dp, px, sp区别

显示单位px和dip以及sp的区别 dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖像素. px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多. pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用: sp: scaled pixels(放大像素). 主要用于字

在Android中,px,dp,dip,sp的不同之处

       最近在学习Android开发,一直没有弄清楚px,dp,dip,sp的区别.今天正好有时间,就花时间研究了一下.     众所周知,Android厂商非常多,各种尺寸的Android手机.平板层出不穷.导致了Android生态环境的碎片化现象越来越严重.Google公司为了解决分辨率过多的问题,在Android的开发文档中定义了px,dp,dip,sp,方便开发者适配不同分辨率的Android设备. 1.基础知识:     mm:millimeters 毫米,长度单位.     i

android 长度单位 dp dip sp px pt

基本知识 QVGA 240*320像素 VGA 640*480像素 WVGA 800*480像素 HVGA 480*320像素 看到有很多人不太理解dp.sp和px的区别:现在这里介绍一下dp和sp. dp也就是dip.这个和sp基本类似. 如果设置表示长度.高度等属性时可以使用dp或sp.但如果设置字体,需要使用sp.dp是与密度无关,sp除了与密度无关外,还与scale无关.如果屏幕密度为160,这时dp和sp和px是一样的. 1dp=1sp=1px,但如果使用px作单位,如果屏幕大小不变(

Android度量单位说明(DIP,DP,PX,SP)

(一)概念 dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖像素.px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多.pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用:sp: scaled pixels(放大像素). 主要用于字体显示best for tex

31.Android之常用单位px、dip、sp学习

一.  概述 我们在页面布局的时候,经常会设置容器的长度,但是到底该使用哪个作为长度的单位而懊恼. 在Android中支持的描述大小区域的类型有以下几种. px(pixels)——像素:不同的设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多. dip(device independent pixels)——设备独立像素:这个和设备硬件有关,一般哦我们为了支持WCGA.HVGA和QVGA推荐使用这个,不依赖于像素.等同于dp. sp(scaled pixels—best f

Android的px、dip、sp的区别

Android的px.dip.sp的区别 我们在页面布局的时候,经常会设置容器的长度,但是到底该使用哪个作为长度的单位而懊恼. 在Android中支持的描述大小区域的类型有以下几种: px(pixels)——像素:不同的设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多. dip(device independent pixels)——设备独立像素:这个和设备硬件有关,一般哦我们为了支持WCGA.HVGA和QVGA推荐使用这个,不依赖于像素.等同于dp.是一种与密度无关的像

android布局单位dip dp sp px

android布局常用单位有dip.dp.sp.px. dip/dp 表示密度无关像素(density-independent pixel),是基于屏幕物理密度的抽象单元.dp是相对一个160dpi密度的屏幕来讲的,所以在160dpi密度的屏幕里1个dp表示一个像素.屏幕密度高单位dp对应像素值高,屏幕密度低单位dp对应像素值低.也就是说不同密度的屏幕,单位dp对应的像素值也不一样.但记住一点就行,无论哪种密度,1个dp在屏幕上总是表示1/160英寸,从而保证不同屏幕上dp总能表示相同的尺寸.

[转]Android中px dpi dip density densityDpi 的相关说明

概念解释 名词 解释 Px (Pixel像素) 不同设备显示效果相同.这里的“相同”是指像素数不会变,比如指定UI长度是100px,那不管分辨率是多少UI长度都是100px.也正是因为如此才造成了UI在小分辨率设备上被放大而失真,在大分辨率上被缩小. Screen Size (屏幕尺寸) 一般所说的手机屏幕大小如1.6英寸.1.9英寸.2.2英寸,都是指的对角线的长度,而不是手机面积.我们可以根据勾股定理获取手机的宽和长,当然还有面积. Resolution (分辨率) 指手机屏幕垂直和水平方向