diff --git a/shadowlayout/src/main/java/com/lijiankun24/shadowlayout/AttrUtil.java b/shadowlayout/src/main/java/com/lijiankun24/shadowlayout/AttrUtil.java index 9e68bcf700ae98baeb5eb186a5060276dbe9cb59..d47f001df262635fb08164ab3b2d658c18c08fc4 100644 --- a/shadowlayout/src/main/java/com/lijiankun24/shadowlayout/AttrUtil.java +++ b/shadowlayout/src/main/java/com/lijiankun24/shadowlayout/AttrUtil.java @@ -162,7 +162,7 @@ public class AttrUtil { String value = attrSet.getAttr(resourceKey).get().getStringValue(); if (value.contains(colon)) { try { - resourceId = Integer.parseInt(value.substring(value.indexOf(":") + 1)); + resourceId = Integer.parseInt(value.substring(value.indexOf(':') + 1)); } catch (NumberFormatException e) { HiLog.error(logLabel,e.toString()); } @@ -188,7 +188,7 @@ public class AttrUtil { String value = attrSet.getAttr(resourceKey).get().getStringValue(); if (value.contains(colon)) { try { - resourceId = Integer.parseInt(value.substring(value.indexOf(":") + 1)); + resourceId = Integer.parseInt(value.substring(value.indexOf(':') + 1)); } catch (NumberFormatException e) { HiLog.error(logLabel,e.toString()); } diff --git a/shadowlayout/src/main/java/com/lijiankun24/shadowlayout/ShadowLayout.java b/shadowlayout/src/main/java/com/lijiankun24/shadowlayout/ShadowLayout.java index 94b1ce927190db7361ff8ccb8e88e000390654e3..c58203d8b400a5bea8d20b3871d69a4e95b546b0 100644 --- a/shadowlayout/src/main/java/com/lijiankun24/shadowlayout/ShadowLayout.java +++ b/shadowlayout/src/main/java/com/lijiankun24/shadowlayout/ShadowLayout.java @@ -320,8 +320,11 @@ public class ShadowLayout extends DependentLayout implements Component.EstimateS */ private float dip2px(float dpValue) { Optional defaultDisplay = DisplayManager.getInstance().getDefaultDisplay(this.getContext()); - DisplayAttributes attributes = defaultDisplay.get().getAttributes(); - float scale = attributes.densityPixels; + float scale = 0; + if (defaultDisplay.isPresent()) { + DisplayAttributes attributes = defaultDisplay.get().getAttributes(); + scale = attributes.densityPixels; + } return (float) NumberUtil.add(NumberUtil.mul(dpValue,scale),DP_VALUE1); } } diff --git a/shadowlayout/src/main/java/com/lijiankun24/shadowlayout/v2/ShadowLayout1.java b/shadowlayout/src/main/java/com/lijiankun24/shadowlayout/v2/ShadowLayout1.java index 54d6334d60ef67e4edaebb2c7c8858421292990a..d19c6bbcc14b12dc5ac9b00c6b2b7d6dae1cb46b 100644 --- a/shadowlayout/src/main/java/com/lijiankun24/shadowlayout/v2/ShadowLayout1.java +++ b/shadowlayout/src/main/java/com/lijiankun24/shadowlayout/v2/ShadowLayout1.java @@ -27,7 +27,6 @@ import java.util.Optional; * @since 2021-03-08 */ public class ShadowLayout1 extends StackLayout implements Component.EstimateSizeListener,Component.DrawTask { - /** * 全部阴影 */ @@ -245,8 +244,11 @@ public class ShadowLayout1 extends StackLayout implements Component.EstimateSize */ private float dp2Px(float dpValue) { Optional defaultDisplay = DisplayManager.getInstance().getDefaultDisplay(this.getContext()); - DisplayAttributes attributes = defaultDisplay.get().getAttributes(); - float scale = attributes.densityPixels; + float scale = 0; + if (defaultDisplay.isPresent()) { + DisplayAttributes attributes = defaultDisplay.get().getAttributes(); + scale = attributes.densityPixels; + } return (float) (dpValue * scale + NUM); } @@ -254,22 +256,26 @@ public class ShadowLayout1 extends StackLayout implements Component.EstimateSize * 根据手机的分辨率从 px(像素) 的单位 转成为 dp */ private int px2dip(float pxValue) { + int pxToDip = 0; Optional defaultDisplay = DisplayManager.getInstance().getDefaultDisplay(this.getContext()); - DisplayAttributes attributes = defaultDisplay.get().getAttributes(); - final float scale = attributes.densityPixels; - return (int) (pxValue / scale + NUM); + if (defaultDisplay.isPresent()) { + DisplayAttributes attributes = defaultDisplay.get().getAttributes(); + float scale = attributes.densityPixels; + if (scale != 0) { + pxToDip = (int) ((pxValue / scale) + NUM); + } + } + return pxToDip; } /** * Color int类型转RGB */ private int[] toRgb(int color) { - int red = (color & RED) >> SIXTEEN; int green = (color & GREEN) >> EIGHT; int blue = color & BLUE; return new int[]{red,green,blue}; } - }