Android px转dip px转sp法则


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

https://blog.csdn.net/xiaoyuan511/article/details/39205969

[html]  view plain  copy
  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context=".MainActivity"   
  6.     android:background="@android:color/white">  
  7.       
  8.       
  9.     <Button   
  10.         android:id="@+id/button"  
  11.         android:layout_width="wrap_content"  
  12.         android:layout_height="wrap_content"  
  13.         android:layout_gravity="center"  
  14.         android:padding="20dp"  
  15.         android:text="开始"/>  
  16.   
  17.      
  18.   
  19. </FrameLayout>  
[java]  view plain  copy
  1. package com.example.test5;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Context;  
  5. import android.os.Bundle;  
  6. import android.util.DisplayMetrics;  
  7. import android.util.Log;  
  8. import android.view.View;  
  9. import android.view.View.OnClickListener;  
  10. import android.view.Window;  
  11. import android.widget.Toast;  
  12.   
  13. public class MainActivity extends Activity {  
  14.   
  15.       
  16.       
  17.     @Override  
  18.     protected void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  21.         setContentView(R.layout.main);  
  22.           
  23.           
  24.         findViewById(R.id.button).setOnClickListener(new OnClickListener() {  
  25.             @Override  
  26.             public void onClick(View v) {  
  27.                 Test();  
  28.                   
  29.             }  
  30.         });  
  31.           
  32.     }  
  33.   
  34.     public boolean isGreaterThan(String time){  
  35.         String time1=time.replace(":""").trim();  
  36.         String time2="0130";  
  37.         return Integer.parseInt(time2)-Integer.parseInt(time1)<=0;  
  38.           
  39.     }  
  40.       
  41.       
  42.     private void Test() {  
  43.         final float fontScale = this.getResources().getDisplayMetrics().scaledDensity;    
  44.         final float scale = this.getResources().getDisplayMetrics().density;  
  45.         int screenWidth  = getWindowManager().getDefaultDisplay().getWidth();         
  46.         int screenHeight = getWindowManager().getDefaultDisplay().getHeight();    
  47.         DisplayMetrics dm = new DisplayMetrics();    
  48.         dm = new DisplayMetrics();    
  49.         getWindowManager().getDefaultDisplay().getMetrics(dm);    
  50.         float density  = dm.density;       
  51.         float densityDPI = dm.densityDpi;    
  52.         Log.d("text""scale="+scale+"fontScale="+fontScale+"screenWidth="+screenWidth+"screenHeight="+screenHeight);  
  53.         Log.d("text""density="+density+"densityDPI="+densityDPI);  
  54.          int a=px2sp(26,scale);  
  55.            
  56.           
  57.         String s1=px2dip(this,13)+"";  
  58.         String s6=px2dip(this,60)+"";  
  59.         String s7=px2dip(this,11)+"";  
  60.         String s8=px2dip(this,162)+"";  
  61.         String s9=px2dip(this,232)+"";  
  62.         String s10=px2dip(this,44)+"";  
  63.         String s11=px2dip(this,178)+"";  
  64.         String s12=px2dip(this,610)+"";  
  65.         String s13=px2dip(this,420)+"";  
  66.         String s14=px2dip(this,126)+"";  
  67.           
  68.         String s2=px2dip(this,32)+"";  
  69.         String s3=px2sp(26, fontScale)+"";  
  70.         String s4=px2sp(22, fontScale)+"";  
  71.         String s5=px2sp(18, fontScale)+"";  
  72.           
  73.         System.out.println("s1: "+s1+"-----"  
  74.                 +"s6:"+s6+"-----"  
  75.                 +"s7:"+s7+"-----"  
  76.                 +"s8:"+s8+"-----"  
  77.                 +"s9:"+s9+"-----"  
  78.                 +"s10:"+s10+"-----"  
  79.                 +"s11:"+s11+"-----"  
  80.                 +"s12:"+s12+"-----"  
  81.                 +"s13:"+s13+"-----"  
  82.                 +"s14:"+s14+"-----"  
  83.         +"s2:"+s2+"-----"  
  84.         +"s3"+s3+"-----"  
  85.         +"s4"+s4+"-----"  
  86.         +"s5"+s5+"-----");  
  87.           
  88.     }  
  89.       
  90.     public static int dip2px(Context context, float dpValue) {  
  91.         final float scale = context.getResources().getDisplayMetrics().density;  
  92.         return (int) (dpValue * scale + 0.5f);  
  93.     }  
  94.       
  95.     public static int px2dip(Context context, float pxValue) {  
  96.         final float scale = context.getResources().getDisplayMetrics().density;  
  97.         return (int) (pxValue / scale + 0.5f);  
  98.     }  
  99.       
  100.     public static int px2sp(float pxValue, float fontScale) {  
  101.         return (int) (pxValue / fontScale + 0.5f);  
  102.     }  
  103.       
  104.     public static int sp2px(float spValue, float fontScale) {  
  105.         return (int) (spValue * fontScale + 0.5f);  
  106.     }  
  107.       
  108.     public void sT(String s){  
  109.         Toast.makeText(this, s, Toast.LENGTH_SHORT).show();  
  110.     }  
  111.   
  112. }  
源码下载
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值