Skip to content

Commit 886790f

Browse files
committed
优化在没有指明 View 背景渐变色方向的情况下默认设定的方向没有适配 RTL 特性的问题
1 parent 69bd262 commit 886790f

1 file changed

Lines changed: 16 additions & 6 deletions

File tree

library/src/main/java/com/hjq/shape/builder/ShapeDrawableBuilder.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,8 @@ public ShapeDrawableBuilder(View view, TypedArray typedArray, IShapeDrawableStyl
179179
}
180180
}
181181

182-
mSolidGradientOrientation = transformGradientOrientation(typedArray.getInt(styleable.getSolidGradientOrientationStyleable(), 0));
182+
mSolidGradientOrientation = transformGradientOrientation(typedArray.getInt(styleable.getSolidGradientOrientationStyleable(),
183+
getDefaultGradientOrientation()));
183184
mSolidGradientType = typedArray.getInt(styleable.getSolidGradientTypeStyleable(), ShapeGradientType.LINEAR_GRADIENT);
184185
mSolidGradientCenterX = typedArray.getFloat(styleable.getSolidGradientCenterXStyleable(), 0.5f);
185186
mSolidGradientCenterY = typedArray.getFloat(styleable.getSolidGradientCenterYStyleable(), 0.5f);
@@ -213,7 +214,8 @@ public ShapeDrawableBuilder(View view, TypedArray typedArray, IShapeDrawableStyl
213214
}
214215
}
215216

216-
mStrokeGradientOrientation = transformGradientOrientation(typedArray.getInt(styleable.getStrokeGradientOrientationStyleable(), 0));
217+
mStrokeGradientOrientation = transformGradientOrientation(typedArray.getInt(styleable.getStrokeGradientOrientationStyleable(),
218+
getDefaultGradientOrientation()));
217219

218220
mStrokeSize = typedArray.getDimensionPixelSize(styleable.getStrokeSizeStyleable(), 0);
219221
mStrokeDashSize = typedArray.getDimensionPixelSize(styleable.getStrokeDashSizeStyleable(), 0);
@@ -858,13 +860,21 @@ private static int getLayoutDirection(View view) {
858860
return layoutDirection;
859861
}
860862

863+
/**
864+
* 获取默认的渐变色方向
865+
*/
866+
private int getDefaultGradientOrientation() {
867+
// Github issue 地址:https://github.com/getActivity/ShapeView/issues/109
868+
return 10;
869+
}
870+
861871
/**
862872
* 将 ShapeView 框架中渐变色的 xml 属性值转换成 ShapeDrawable 中的枚举值
863873
*/
864874
private ShapeGradientOrientation transformGradientOrientation(int value) {
865875
switch (value) {
866-
case 10:
867-
return ShapeGradientOrientation.START_TO_END;
876+
case 0:
877+
return ShapeGradientOrientation.LEFT_TO_RIGHT;
868878
case 180:
869879
return ShapeGradientOrientation.RIGHT_TO_LEFT;
870880
case 1800:
@@ -889,9 +899,9 @@ private ShapeGradientOrientation transformGradientOrientation(int value) {
889899
return ShapeGradientOrientation.BOTTOM_RIGHT_TO_TOP_LEFT;
890900
case 1350:
891901
return ShapeGradientOrientation.BOTTOM_END_TO_TOP_START;
892-
case 0:
902+
case 10:
893903
default:
894-
return ShapeGradientOrientation.LEFT_TO_RIGHT;
904+
return ShapeGradientOrientation.START_TO_END;
895905
}
896906
}
897907
}

0 commit comments

Comments
 (0)