在一些情况下,美工往往给我的都是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"> </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();
}
}