Android常用代码集合

该文章介绍了在Android开发中如何获取View在窗口中的坐标,以及屏幕的宽高。同时,提供了dp转px、px转dp、px转sp以及sp转px的转换方法,涉及到了DisplayMetrics类的相关属性。
摘要由CSDN通过智能技术生成

获取view基于窗口中的坐标

private int[] getCoordinate(View view)

{int[] location = new int[2];

​	view.getLocationOnScreen(location);int x = localtion[0];int y = location[1];Log.d("test","x:" + x + ",y:" + y);return location;

}

获取屏幕的宽高

private void getWH(Context ctx)

{WindowManager wm = (WindowManager)ctx.getSystemService(Context.WINDOW_SERVICE);DisplayMetrics outMetrics = new DisplayMetrics();

​	wm.getDefaultDisplay().getRealMetrics(outMetrics);\

​	int width = outMetrics.widthPixels;int height = outMetrics.heightPixels;Log.d("test","width:" + width + ",height:" + height);

}


dp转px

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

px转dp

  • 方法一

    public static int px2dip(Context context, int pxValue) 
    {
       return ((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, pxValue, 			                      context.getResources().getDisplayMetrics()));       
    }
    
  • 方法二

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

px转sp

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

sp转px

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peak wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值