Skip to content

Commit 0723844

Browse files
committed
[Fix]: designDensity init type
1 parent 17d74b3 commit 0723844

File tree

3 files changed

+31
-10
lines changed

3 files changed

+31
-10
lines changed

ScaleLayout/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
defaultConfig {
88
minSdkVersion 9
99
targetSdkVersion 24
10-
versionCode 3
11-
versionName "1.0.2"
10+
versionCode 4
11+
versionName "1.0.3"
1212
}
1313
buildTypes {
1414
release {
@@ -28,7 +28,7 @@ apply plugin: 'com.jfrog.bintray'
2828
def siteUrl = 'https://github.com/gavinliu/Android-ScaleLayout' // 项目的主页
2929
def gitUrl = 'https://github.com/gavinliu/Android-ScaleLayout.git' // Git仓库的url
3030

31-
version = "1.0.2"
31+
version = "1.0.3"
3232
group = "cn.gavinliu.android.lib"
3333

3434
install {

ScaleLayout/src/main/java/cn/gavinliu/android/lib/scale/config/ScaleConfig.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,15 @@ public class ScaleConfig {
2424

2525
private static ScaleConfig mInstance;
2626

27-
public static ScaleConfig create(Context ctx, int designWidth, int designHeight, int designDensity, int dimensionUnit) {
27+
/**
28+
* @param ctx Context
29+
* @param designWidth Design Width (Pixel)
30+
* @param designHeight Design Height (Pixel)
31+
* @param designDensity Design Density
32+
* @param dimensionUnit DIMENS_UNIT_DP or DIMENS_UNIT_PIX
33+
* @return Single instance
34+
*/
35+
public static ScaleConfig create(Context ctx, int designWidth, int designHeight, float designDensity, int dimensionUnit) {
2836
if (mInstance == null) {
2937
mInstance = new ScaleConfig(ctx, designWidth, designHeight, designDensity, dimensionUnit);
3038
}
@@ -49,7 +57,7 @@ private ScaleConfig(Context ctx) {
4957
mScreenDensity = density;
5058
}
5159

52-
private ScaleConfig(Context ctx, int designWidth, int designHeight, int designDensity, int dimensionUnit) {
60+
private ScaleConfig(Context ctx, int designWidth, int designHeight, float designDensity, int dimensionUnit) {
5361
this(ctx);
5462
mDesignWidth = designWidth;
5563
mDesignHeight = designHeight;

ScaleLayout/src/main/java/cn/gavinliu/android/lib/scale/helper/ScaleLayoutHelper.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -406,18 +406,31 @@ private int getRealPixelSizeByDp(int pix, int screen, int design) {
406406
float density = ScaleConfig.getInstance().getScreenDensity();
407407
float designDensity = ScaleConfig.getInstance().getDesignDensity();
408408

409-
float newPix = (screen * designDensity * pix) / (design * density);
409+
int designDp = convertPix2Dp(density, pix);
410+
int designPix = convertDp2Pix(designDensity, designDp);
411+
410412
int result;
411-
if (newPix > 1) {
412-
result = (int) Math.rint((double) newPix);
413+
414+
int res = designPix * screen;
415+
416+
if (res % design == 0) {
417+
result = res / design;
413418
} else {
414-
result = (int) Math.ceil((double) newPix);
419+
result = res / design + 1;
415420
}
416421

417422
if (ScaleConfig.getInstance().isDebug())
418-
Log.i(TAG, "pix:" + pix + ",newPix:" + newPix + ",result:" + result);
423+
Log.i(TAG, "pix:" + pix + ",dp:" + designDp + ",result:" + result);
419424
return result;
420425
}
426+
427+
private static int convertPix2Dp(float density, int px) {
428+
return (int) (px / density + 0.5f);
429+
}
430+
431+
private static int convertDp2Pix(float density, int dip) {
432+
return (int) (dip * density + 0.5f);
433+
}
421434
}
422435

423436
}

0 commit comments

Comments
 (0)