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一定不是终点,技术无止境