Skip to content

Commit

Permalink
1.增加屏幕适配方法
Browse files Browse the repository at this point in the history
  • Loading branch information
Leo.ZhangTJ authored and Leo.ZhangTJ committed Apr 27, 2020
1 parent 892df3d commit bbd03e6
Showing 1 changed file with 28 additions and 4 deletions.
32 changes: 28 additions & 4 deletions utils/src/main/java/com/leo/utils/ScreenUtils.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package com.leo.utils;

import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.res.Resources;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup;

Expand Down Expand Up @@ -47,17 +50,19 @@ public static int getScreenHeight(Application application) {
* dp转px
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
public static int dp2px(Context context, float dpValue) {
float scale = context.getResources().getDisplayMetrics().density;
public static int dp2px(float dpValue) {
DisplayMetrics displayMetrics = Resources.getSystem().getDisplayMetrics();
float scale = displayMetrics.density;
return (int) (dpValue * scale + 0.5f);
}

/**
* px转dp
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
*/
public static int px2dp(Context context, float pxValue) {
float scale = context.getResources().getDisplayMetrics().density;
public static int px2dp(float pxValue) {
DisplayMetrics displayMetrics = Resources.getSystem().getDisplayMetrics();
float scale = displayMetrics.density;
return (int) (pxValue / scale + 0.5f);
}

Expand Down Expand Up @@ -128,4 +133,23 @@ public static int getMeasuredWidth(final View view) {
public static int getMeasuredHeight(final View view) {
return measureView(view)[1];
}


public static void adapterScreen(Activity activity, int targetDp, boolean isVertical) {
DisplayMetrics systemDm = Resources.getSystem().getDisplayMetrics();
DisplayMetrics appDm = activity.getApplication().getResources().getDisplayMetrics();
DisplayMetrics activityDm = activity.getResources().getDisplayMetrics();

//通过目标DP 算出 逻辑密度
if (isVertical) {
activityDm.density = activityDm.heightPixels / (float) targetDp;
} else {
activityDm.density = activityDm.widthPixels / (float) targetDp;
}

//通过逻辑密度 算出比例密度
activityDm.scaledDensity = activityDm.density * (systemDm.scaledDensity / systemDm.density);
//算出 密度DPI 即修改没英寸的像素点数量
activityDm.densityDpi = (int) (DisplayMetrics.DENSITY_DEFAULT * activityDm.density);
}
}

0 comments on commit bbd03e6

Please sign in to comment.