在一些情况下,美工往往给我的都是px 这个时候我们就需要根据屏幕分辨率把px转成dip或者sp 下面就是计算公式:
https://blog.csdn.net/xiaoyuan511/article/details/39205969
- <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();
- }
- }