0
点赞
收藏
分享

微信扫一扫

Android 封装工具类DensityUtil(dp转px、px转dp),flutter开发工具idea

杰森wang 2022-03-19 阅读 101

return (int)(context.getResources().getDisplayMetrics().widthPixels / scale);//360

}

/**获取屏幕的高度(像素)*/

public static int getScreenHeight(Context context) {

return context.getResources().getDisplayMetrics().heightPixels;//1776

}

/**获取屏幕的高度(像素)*/

public static int getScreenHeightDp(Context context) {

float scale = getScreenDendity(context);

return (int)(context.getResources().getDisplayMetrics().heightPixels / scale);//592

}

/*屏幕密度比例/

public static float getScreenDendity(Context context){

return context.getResources().getDisplayMetrics().density;//3

}

/**获取状态栏的高度 72px

  • http://www.2cto.com/kf/201501/374049.html*/

public static int getStatusBarHeight(Context context) {

int statusHeight = -1;

try {

Class<?> aClass = Class.forName(“com.android.internal.R$dimen”);

Object object = aClass.newInstance();

int height = Integer.parseInt(aClass.getField(“status_bar_height”).get(object).toString());

statusHeight = context.getResources().getDimensionPixelSize(height);

} catch (Exception e) {

e.printStackTrace();

}

return statusHeight;

//依赖于WMS(窗口管理服务的回调)【不建议使用】

/*Rect outRect = new Rect();

((Activity)context).getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect);

return outRect.top;*/

}

/**

  • 指定机型(displayMetrics.xdpi)下dp转px

  • 18dp - 50px*/

public static int dpToPx(Context context, int

dp) {

return Math.round(((float)dp * getPixelScaleFactor(context)));

}

/**

  • 指定机型(displayMetrics.xdpi)下px 转 dp

  • 50px - 18dp*/

public static int pxToDp(Context context, int px) {

return Math.round(((float)px / getPixelScaleFactor(context)));

}

/**获取水平方向的dpi的密度比例值

  • 2.7653186*/

public static float getPixelScaleFactor(Context context) {

DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();

return (displayMetrics.xdpi / 160.0f);

}

/**

  • dp转px

  • @param context

  • @param dpVal

  • @return

*/

public static int dp2px(Context context, float dpVal) {

return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,

dpVal, context.getResources().getDisplayMetrics());
}
}

要如何成为Android架构师?

搭建自己的知识框架,全面提升自己的技术体系,并且往底层源码方向深入钻研。
大多数技术人喜欢用思维脑图来构建自己的知识体系,一目了然。这里给大家分享一份大厂主流的Android架构师技术体系,可以用来搭建自己的知识框架,或者查漏补缺;

最后我必须强调几点:

1.搭建知识框架可不是说你整理好要学习的知识顺序,然后看一遍理解了能复制粘贴就够了,大多都是需要你自己读懂源码和原理,能自己手写出来的。
2.学习的时候你一定要多看多练几遍,把知识才吃透,还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。

你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境
2.学习的时候你一定要多看多练几遍,把知识才吃透,还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。

你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境

举报

相关推荐

0 条评论