diff --git a/README.md b/README.md
index d9cb054..72b3879 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,7 @@ android {
dependencies {
// Shape 框架:https://github.com/getActivity/ShapeView
- implementation 'com.github.getActivity:ShapeView:5.0'
+ implementation 'com.github.getActivity:ShapeView:5.2'
}
```
diff --git a/ShapeView.apk b/ShapeView.apk
index 6e9c7a9..db15fa3 100644
Binary files a/ShapeView.apk and b/ShapeView.apk differ
diff --git a/app/build.gradle b/app/build.gradle
index b8d2455..a0b454a 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,8 +8,8 @@ android {
minSdkVersion 16
// noinspection ExpiredTargetSdkVersion
targetSdkVersion 28
- versionCode 50
- versionName "5.0"
+ versionCode 52
+ versionName "5.2"
}
// 支持 Java JDK 8
@@ -41,6 +41,13 @@ android {
signingConfig signingConfigs.config
}
}
+
+ applicationVariants.all { variant ->
+ // apk 输出文件名配置
+ variant.outputs.all { output ->
+ outputFileName = rootProject.getName() + '.apk'
+ }
+ }
}
dependencies {
diff --git a/app/src/main/java/com/hjq/shape/demo/MainActivity.java b/app/src/main/java/com/hjq/shape/demo/MainActivity.java
index 9f84750..102ef7b 100644
--- a/app/src/main/java/com/hjq/shape/demo/MainActivity.java
+++ b/app/src/main/java/com/hjq/shape/demo/MainActivity.java
@@ -2,6 +2,9 @@
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
+import android.view.View;
+
+import com.hjq.shape.view.ShapeButton;
public class MainActivity extends AppCompatActivity {
@@ -9,5 +12,17 @@ public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
+
+ ShapeButton shapeButton = findViewById(R.id.btn_main_test);
+ shapeButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ shapeButton.setSolidColor(0xFF000000)
+ .setStrokeColor(0xFF5A8DDF)
+ .intoBackground();
+
+ shapeButton.setText("颜色已经改变啦");
+ }
+ });
}
-}
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index e5c8c8b..b75e913 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -50,6 +50,22 @@
app:shape_solidColor="#5A8DDF"
app:shape_solidPressedColor="#AA5A8DDF" />
+
+
+
+
+ app:shape_solidColor="#80ff0000"
+ app:shape_thicknessRatio="4" />
+ app:shape_thicknessRatio="4" />
+ app:shape_thicknessRatio="4" />
+ app:shape_thicknessRatio="4" />
+ app:shape_thicknessRatio="4" />
0;
+ }
+
V setInnerRadius(int radius);
int getInnerRadius();
@@ -229,12 +233,22 @@ default Drawable buildBackgroundDrawable() {
return null;
}
- if (isGradientColor() || getSolidColor() == getSolidPressedColor() && getStrokeColor() == getStrokePressedColor() &&
+ ShapeDrawable defaultDrawable = createShapeDrawable(getSolidColor(), getStrokeColor());
+ // 判断是否设置了渐变色
+ if (isGradientColor()) {
+ if (getCenterColor() == getSolidColor()) {
+ defaultDrawable.setColors(new int[]{getStartColor(), getEndColor()});
+ } else {
+ defaultDrawable.setColors(new int[]{getStartColor(), getCenterColor(), getEndColor()});
+ }
+ }
+
+ if (getSolidColor() == getSolidPressedColor() && getStrokeColor() == getStrokePressedColor() &&
getSolidColor() == getSolidCheckedColor() && getStrokeColor() == getStrokeCheckedColor() &&
getSolidColor() == getSolidDisabledColor() && getStrokeColor() == getStrokeDisabledColor() &&
getSolidColor() == getSolidFocusedColor() && getStrokeColor() == getStrokeFocusedColor() &&
getSolidColor() == getSolidSelectedColor() && getStrokeColor() == getStrokeSelectedColor()) {
- return createShapeDrawable(getSolidColor(), getStrokeColor());
+ return defaultDrawable;
}
StateListDrawable drawable = new StateListDrawable();
@@ -253,30 +267,19 @@ default Drawable buildBackgroundDrawable() {
if (getSolidColor() != getSolidSelectedColor() || getStrokeColor() != getStrokeSelectedColor()) {
drawable.addState(new int[]{android.R.attr.state_selected}, createShapeDrawable(getSolidSelectedColor(), getStrokeSelectedColor()));
}
- drawable.addState(new int[]{}, createShapeDrawable(getSolidColor(), getStrokeColor()));
+
+ drawable.addState(new int[]{}, defaultDrawable);
return drawable;
}
- default Drawable createShapeDrawable(int solidColor, int strokeColor) {
+ default ShapeDrawable createShapeDrawable(int solidColor, int strokeColor) {
ShapeDrawable drawable = new ShapeDrawable();
drawable.setShape(getShapeType());
drawable.setSize(getShapeWidth(), getShapeHeight());
drawable.setCornerRadii(new float[]{getTopLeftRadius(), getTopLeftRadius(), getTopRightRadius(), getTopRightRadius(),
getBottomRightRadius(), getBottomRightRadius(), getBottomLeftRadius(), getBottomLeftRadius()});
- int startColor = getStartColor();
- int centerColor = getCenterColor();
- int endColor = getEndColor();
- if (isGradientColor()) {
- if (centerColor == solidColor) {
- drawable.setColors(new int[]{startColor, endColor});
- } else {
- drawable.setColors(new int[]{startColor, centerColor, endColor});
- }
- } else {
- drawable.setColor(solidColor);
- }
-
+ drawable.setColor(solidColor);
drawable.setGradientCenter(getCenterX(), getCenterY());
drawable.setUseLevel(isUseLevel());
drawable.setGradientAngle(getAngle());
diff --git a/library/src/main/java/com/hjq/shape/core/ShapeDrawable.java b/library/src/main/java/com/hjq/shape/core/ShapeDrawable.java
index f922d5e..85b94fd 100644
--- a/library/src/main/java/com/hjq/shape/core/ShapeDrawable.java
+++ b/library/src/main/java/com/hjq/shape/core/ShapeDrawable.java
@@ -274,7 +274,7 @@ public void setColor(int argb) {
* 设置渐变颜色
*/
public void setColors(int[] colors) {
- mShapeState.setColors(colors);
+ mShapeState.setGradientColor(colors);
mRectIsDirty = true;
invalidateSelf();
}
@@ -641,7 +641,7 @@ private boolean ensureValidRect() {
mRect.set(bounds.left + inset + mShapeState.mShadowSize, bounds.top + inset + mShapeState.mShadowSize,
bounds.right - inset - mShapeState.mShadowSize, bounds.bottom - inset - mShapeState.mShadowSize);
- final int[] colors = st.mColors;
+ final int[] colors = st.mGradientColors;
if (colors != null) {
RectF r = mRect;
float x0, x1, y0, y1;
@@ -765,7 +765,7 @@ public Drawable mutate() {
private void initializeWithState(ShapeState state) {
if (state.mHasSolidColor) {
mFillPaint.setColor(state.mSolidColor);
- } else if (state.mColors == null) {
+ } else if (state.mGradientColors == null) {
// If we don't have a solid color and we don't have a gradient,
// the app is stroking the shape, set the color to the default
// value of state.mSolidColor
diff --git a/library/src/main/java/com/hjq/shape/core/ShapeState.java b/library/src/main/java/com/hjq/shape/core/ShapeState.java
index a2f531f..d248905 100644
--- a/library/src/main/java/com/hjq/shape/core/ShapeState.java
+++ b/library/src/main/java/com/hjq/shape/core/ShapeState.java
@@ -16,7 +16,7 @@ public class ShapeState extends Drawable.ConstantState {
public int mShapeType = ShapeType.RECTANGLE;
public int mGradient = ShapeGradientType.LINEAR_GRADIENT;
public ShapeGradientOrientation mOrientation;
- public int[] mColors;
+ public int[] mGradientColors;
public int[] mTempColors; // no need to copy
public float[] mTempPositions; // no need to copy
public float[] mPositions;
@@ -49,7 +49,7 @@ public class ShapeState extends Drawable.ConstantState {
public ShapeState(ShapeGradientOrientation orientation, int[] colors) {
mOrientation = orientation;
- setColors(colors);
+ setGradientColor(colors);
}
public ShapeState(ShapeState state) {
@@ -57,8 +57,8 @@ public ShapeState(ShapeState state) {
mShapeType = state.mShapeType;
mGradient = state.mGradient;
mOrientation = state.mOrientation;
- if (state.mColors != null) {
- mColors = state.mColors.clone();
+ if (state.mGradientColors != null) {
+ mGradientColors = state.mGradientColors.clone();
}
if (state.mPositions != null) {
mPositions = state.mPositions.clone();
@@ -124,16 +124,16 @@ public void setGradientCenter(float x, float y) {
mCenterY = y;
}
- public void setColors(int[] colors) {
+ public void setGradientColor(int[] colors) {
mHasSolidColor = false;
- mColors = colors;
+ mGradientColors = colors;
computeOpacity();
}
public void setSolidColor(int argb) {
mHasSolidColor = true;
mSolidColor = argb;
- mColors = null;
+ mGradientColors = null;
computeOpacity();
}
@@ -158,8 +158,8 @@ private void computeOpacity() {
return;
}
- if (mColors != null) {
- for (int color : mColors) {
+ if (mGradientColors != null) {
+ for (int color : mGradientColors) {
if (!isOpaque(color)) {
mOpaque = false;
return;
diff --git a/library/src/main/java/com/hjq/shape/layout/ShapeConstraintLayout.java b/library/src/main/java/com/hjq/shape/layout/ShapeConstraintLayout.java
index 15fb5de..bb3eeb9 100644
--- a/library/src/main/java/com/hjq/shape/layout/ShapeConstraintLayout.java
+++ b/library/src/main/java/com/hjq/shape/layout/ShapeConstraintLayout.java
@@ -165,7 +165,22 @@ public int getShapeHeight() {
@Override
public ShapeConstraintLayout setSolidColor(int color) {
+ if (mSolidPressedColor == mSolidColor) {
+ mSolidPressedColor = color;
+ }
+ if (mSolidDisabledColor == mSolidColor) {
+ mSolidDisabledColor = color;
+ }
+ if (mSolidFocusedColor == mSolidColor) {
+ mSolidFocusedColor = color;
+ }
+ if (mSolidSelectedColor == mSolidColor) {
+ mSolidSelectedColor = color;
+ }
mSolidColor = color;
+ mStartColor = color;
+ mCenterColor = color;
+ mEndColor = color;
return this;
}
@@ -363,6 +378,18 @@ public int getGradientRadius() {
@Override
public ShapeConstraintLayout setStrokeColor(int color) {
+ if (mStrokePressedColor == mStrokeColor) {
+ mStrokePressedColor = color;
+ }
+ if (mStrokeDisabledColor == mStrokeColor) {
+ mStrokeDisabledColor = color;
+ }
+ if (mStrokeFocusedColor == mStrokeColor) {
+ mStrokeFocusedColor = color;
+ }
+ if (mStrokeSelectedColor == mStrokeColor) {
+ mStrokeSelectedColor = color;
+ }
mStrokeColor = color;
return this;
}
@@ -543,8 +570,8 @@ public void intoBackground() {
if (drawable == null) {
return;
}
- if (isShadowEnable()) {
- // 需要关闭硬件加速,否则阴影无法生效
+ if (isDashLineEnable() || isShadowEnable()) {
+ // 需要关闭硬件加速,否则虚线或者阴影在某些手机上面无法生效
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
setBackground(drawable);
diff --git a/library/src/main/java/com/hjq/shape/layout/ShapeFrameLayout.java b/library/src/main/java/com/hjq/shape/layout/ShapeFrameLayout.java
index 5811cb7..151ef6e 100644
--- a/library/src/main/java/com/hjq/shape/layout/ShapeFrameLayout.java
+++ b/library/src/main/java/com/hjq/shape/layout/ShapeFrameLayout.java
@@ -165,7 +165,22 @@ public int getShapeHeight() {
@Override
public ShapeFrameLayout setSolidColor(int color) {
+ if (mSolidPressedColor == mSolidColor) {
+ mSolidPressedColor = color;
+ }
+ if (mSolidDisabledColor == mSolidColor) {
+ mSolidDisabledColor = color;
+ }
+ if (mSolidFocusedColor == mSolidColor) {
+ mSolidFocusedColor = color;
+ }
+ if (mSolidSelectedColor == mSolidColor) {
+ mSolidSelectedColor = color;
+ }
mSolidColor = color;
+ mStartColor = color;
+ mCenterColor = color;
+ mEndColor = color;
return this;
}
@@ -363,6 +378,18 @@ public int getGradientRadius() {
@Override
public ShapeFrameLayout setStrokeColor(int color) {
+ if (mStrokePressedColor == mStrokeColor) {
+ mStrokePressedColor = color;
+ }
+ if (mStrokeDisabledColor == mStrokeColor) {
+ mStrokeDisabledColor = color;
+ }
+ if (mStrokeFocusedColor == mStrokeColor) {
+ mStrokeFocusedColor = color;
+ }
+ if (mStrokeSelectedColor == mStrokeColor) {
+ mStrokeSelectedColor = color;
+ }
mStrokeColor = color;
return this;
}
@@ -543,8 +570,8 @@ public void intoBackground() {
if (drawable == null) {
return;
}
- if (isShadowEnable()) {
- // 需要关闭硬件加速,否则阴影无法生效
+ if (isDashLineEnable() || isShadowEnable()) {
+ // 需要关闭硬件加速,否则虚线或者阴影在某些手机上面无法生效
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
setBackground(drawable);
diff --git a/library/src/main/java/com/hjq/shape/layout/ShapeLinearLayout.java b/library/src/main/java/com/hjq/shape/layout/ShapeLinearLayout.java
index 78bce0c..7c85468 100644
--- a/library/src/main/java/com/hjq/shape/layout/ShapeLinearLayout.java
+++ b/library/src/main/java/com/hjq/shape/layout/ShapeLinearLayout.java
@@ -165,7 +165,22 @@ public int getShapeHeight() {
@Override
public ShapeLinearLayout setSolidColor(int color) {
+ if (mSolidPressedColor == mSolidColor) {
+ mSolidPressedColor = color;
+ }
+ if (mSolidDisabledColor == mSolidColor) {
+ mSolidDisabledColor = color;
+ }
+ if (mSolidFocusedColor == mSolidColor) {
+ mSolidFocusedColor = color;
+ }
+ if (mSolidSelectedColor == mSolidColor) {
+ mSolidSelectedColor = color;
+ }
mSolidColor = color;
+ mStartColor = color;
+ mCenterColor = color;
+ mEndColor = color;
return this;
}
@@ -363,6 +378,18 @@ public int getGradientRadius() {
@Override
public ShapeLinearLayout setStrokeColor(int color) {
+ if (mStrokePressedColor == mStrokeColor) {
+ mStrokePressedColor = color;
+ }
+ if (mStrokeDisabledColor == mStrokeColor) {
+ mStrokeDisabledColor = color;
+ }
+ if (mStrokeFocusedColor == mStrokeColor) {
+ mStrokeFocusedColor = color;
+ }
+ if (mStrokeSelectedColor == mStrokeColor) {
+ mStrokeSelectedColor = color;
+ }
mStrokeColor = color;
return this;
}
@@ -543,8 +570,8 @@ public void intoBackground() {
if (drawable == null) {
return;
}
- if (isShadowEnable()) {
- // 需要关闭硬件加速,否则阴影无法生效
+ if (isDashLineEnable() || isShadowEnable()) {
+ // 需要关闭硬件加速,否则虚线或者阴影在某些手机上面无法生效
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
setBackground(drawable);
diff --git a/library/src/main/java/com/hjq/shape/layout/ShapeRecyclerView.java b/library/src/main/java/com/hjq/shape/layout/ShapeRecyclerView.java
index 5a03a17..3c2a0f2 100644
--- a/library/src/main/java/com/hjq/shape/layout/ShapeRecyclerView.java
+++ b/library/src/main/java/com/hjq/shape/layout/ShapeRecyclerView.java
@@ -165,7 +165,22 @@ public int getShapeHeight() {
@Override
public ShapeRecyclerView setSolidColor(int color) {
+ if (mSolidPressedColor == mSolidColor) {
+ mSolidPressedColor = color;
+ }
+ if (mSolidDisabledColor == mSolidColor) {
+ mSolidDisabledColor = color;
+ }
+ if (mSolidFocusedColor == mSolidColor) {
+ mSolidFocusedColor = color;
+ }
+ if (mSolidSelectedColor == mSolidColor) {
+ mSolidSelectedColor = color;
+ }
mSolidColor = color;
+ mStartColor = color;
+ mCenterColor = color;
+ mEndColor = color;
return this;
}
@@ -363,6 +378,18 @@ public int getGradientRadius() {
@Override
public ShapeRecyclerView setStrokeColor(int color) {
+ if (mStrokePressedColor == mStrokeColor) {
+ mStrokePressedColor = color;
+ }
+ if (mStrokeDisabledColor == mStrokeColor) {
+ mStrokeDisabledColor = color;
+ }
+ if (mStrokeFocusedColor == mStrokeColor) {
+ mStrokeFocusedColor = color;
+ }
+ if (mStrokeSelectedColor == mStrokeColor) {
+ mStrokeSelectedColor = color;
+ }
mStrokeColor = color;
return this;
}
@@ -543,8 +570,8 @@ public void intoBackground() {
if (drawable == null) {
return;
}
- if (isShadowEnable()) {
- // 需要关闭硬件加速,否则阴影无法生效
+ if (isDashLineEnable() || isShadowEnable()) {
+ // 需要关闭硬件加速,否则虚线或者阴影在某些手机上面无法生效
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
setBackground(drawable);
diff --git a/library/src/main/java/com/hjq/shape/layout/ShapeRelativeLayout.java b/library/src/main/java/com/hjq/shape/layout/ShapeRelativeLayout.java
index 566bcca..8b36a0b 100644
--- a/library/src/main/java/com/hjq/shape/layout/ShapeRelativeLayout.java
+++ b/library/src/main/java/com/hjq/shape/layout/ShapeRelativeLayout.java
@@ -165,7 +165,22 @@ public int getShapeHeight() {
@Override
public ShapeRelativeLayout setSolidColor(int color) {
+ if (mSolidPressedColor == mSolidColor) {
+ mSolidPressedColor = color;
+ }
+ if (mSolidDisabledColor == mSolidColor) {
+ mSolidDisabledColor = color;
+ }
+ if (mSolidFocusedColor == mSolidColor) {
+ mSolidFocusedColor = color;
+ }
+ if (mSolidSelectedColor == mSolidColor) {
+ mSolidSelectedColor = color;
+ }
mSolidColor = color;
+ mStartColor = color;
+ mCenterColor = color;
+ mEndColor = color;
return this;
}
@@ -363,6 +378,18 @@ public int getGradientRadius() {
@Override
public ShapeRelativeLayout setStrokeColor(int color) {
+ if (mStrokePressedColor == mStrokeColor) {
+ mStrokePressedColor = color;
+ }
+ if (mStrokeDisabledColor == mStrokeColor) {
+ mStrokeDisabledColor = color;
+ }
+ if (mStrokeFocusedColor == mStrokeColor) {
+ mStrokeFocusedColor = color;
+ }
+ if (mStrokeSelectedColor == mStrokeColor) {
+ mStrokeSelectedColor = color;
+ }
mStrokeColor = color;
return this;
}
@@ -543,8 +570,8 @@ public void intoBackground() {
if (drawable == null) {
return;
}
- if (isShadowEnable()) {
- // 需要关闭硬件加速,否则阴影无法生效
+ if (isDashLineEnable() || isShadowEnable()) {
+ // 需要关闭硬件加速,否则虚线或者阴影在某些手机上面无法生效
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
setBackground(drawable);
diff --git a/library/src/main/java/com/hjq/shape/view/ShapeButton.java b/library/src/main/java/com/hjq/shape/view/ShapeButton.java
index ca3ad33..0aaa45c 100644
--- a/library/src/main/java/com/hjq/shape/view/ShapeButton.java
+++ b/library/src/main/java/com/hjq/shape/view/ShapeButton.java
@@ -204,7 +204,22 @@ public int getShapeHeight() {
@Override
public ShapeButton setSolidColor(int color) {
+ if (mSolidPressedColor == mSolidColor) {
+ mSolidPressedColor = color;
+ }
+ if (mSolidDisabledColor == mSolidColor) {
+ mSolidDisabledColor = color;
+ }
+ if (mSolidFocusedColor == mSolidColor) {
+ mSolidFocusedColor = color;
+ }
+ if (mSolidSelectedColor == mSolidColor) {
+ mSolidSelectedColor = color;
+ }
mSolidColor = color;
+ mStartColor = color;
+ mCenterColor = color;
+ mEndColor = color;
return this;
}
@@ -402,6 +417,18 @@ public int getGradientRadius() {
@Override
public ShapeButton setStrokeColor(int color) {
+ if (mStrokePressedColor == mStrokeColor) {
+ mStrokePressedColor = color;
+ }
+ if (mStrokeDisabledColor == mStrokeColor) {
+ mStrokeDisabledColor = color;
+ }
+ if (mStrokeFocusedColor == mStrokeColor) {
+ mStrokeFocusedColor = color;
+ }
+ if (mStrokeSelectedColor == mStrokeColor) {
+ mStrokeSelectedColor = color;
+ }
mStrokeColor = color;
return this;
}
@@ -589,8 +616,8 @@ public void intoBackground() {
if (drawable == null) {
return;
}
- if (isShadowEnable()) {
- // 需要关闭硬件加速,否则阴影无法生效
+ if (isDashLineEnable() || isShadowEnable()) {
+ // 需要关闭硬件加速,否则虚线或者阴影在某些手机上面无法生效
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
setBackground(drawable);
diff --git a/library/src/main/java/com/hjq/shape/view/ShapeCheckBox.java b/library/src/main/java/com/hjq/shape/view/ShapeCheckBox.java
index 70f4f9e..adc56be 100644
--- a/library/src/main/java/com/hjq/shape/view/ShapeCheckBox.java
+++ b/library/src/main/java/com/hjq/shape/view/ShapeCheckBox.java
@@ -209,7 +209,25 @@ public int getShapeHeight() {
@Override
public ShapeCheckBox setSolidColor(int color) {
+ if (mSolidPressedColor == mSolidColor) {
+ mSolidPressedColor = color;
+ }
+ if (mSolidCheckedColor == mSolidColor) {
+ mSolidCheckedColor = color;
+ }
+ if (mSolidDisabledColor == mSolidColor) {
+ mSolidDisabledColor = color;
+ }
+ if (mSolidFocusedColor == mSolidColor) {
+ mSolidFocusedColor = color;
+ }
+ if (mSolidSelectedColor == mSolidColor) {
+ mSolidSelectedColor = color;
+ }
mSolidColor = color;
+ mStartColor = color;
+ mCenterColor = color;
+ mEndColor = color;
return this;
}
@@ -418,6 +436,21 @@ public int getGradientRadius() {
@Override
public ShapeCheckBox setStrokeColor(int color) {
+ if (mStrokePressedColor == mStrokeColor) {
+ mStrokePressedColor = color;
+ }
+ if (mStrokeCheckedColor == mStrokeColor) {
+ mStrokeCheckedColor = color;
+ }
+ if (mStrokeDisabledColor == mStrokeColor) {
+ mStrokeDisabledColor = color;
+ }
+ if (mStrokeFocusedColor == mStrokeColor) {
+ mStrokeFocusedColor = color;
+ }
+ if (mStrokeSelectedColor == mStrokeColor) {
+ mStrokeSelectedColor = color;
+ }
mStrokeColor = color;
return this;
}
@@ -616,8 +649,8 @@ public void intoBackground() {
if (drawable == null) {
return;
}
- if (isShadowEnable()) {
- // 需要关闭硬件加速,否则阴影无法生效
+ if (isDashLineEnable() || isShadowEnable()) {
+ // 需要关闭硬件加速,否则虚线或者阴影在某些手机上面无法生效
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
setBackground(drawable);
diff --git a/library/src/main/java/com/hjq/shape/view/ShapeEditText.java b/library/src/main/java/com/hjq/shape/view/ShapeEditText.java
index 7ab0417..d4e003e 100644
--- a/library/src/main/java/com/hjq/shape/view/ShapeEditText.java
+++ b/library/src/main/java/com/hjq/shape/view/ShapeEditText.java
@@ -203,7 +203,22 @@ public int getShapeHeight() {
@Override
public ShapeEditText setSolidColor(int color) {
+ if (mSolidPressedColor == mSolidColor) {
+ mSolidPressedColor = color;
+ }
+ if (mSolidDisabledColor == mSolidColor) {
+ mSolidDisabledColor = color;
+ }
+ if (mSolidFocusedColor == mSolidColor) {
+ mSolidFocusedColor = color;
+ }
+ if (mSolidSelectedColor == mSolidColor) {
+ mSolidSelectedColor = color;
+ }
mSolidColor = color;
+ mStartColor = color;
+ mCenterColor = color;
+ mEndColor = color;
return this;
}
@@ -401,6 +416,18 @@ public int getGradientRadius() {
@Override
public ShapeEditText setStrokeColor(int color) {
+ if (mStrokePressedColor == mStrokeColor) {
+ mStrokePressedColor = color;
+ }
+ if (mStrokeDisabledColor == mStrokeColor) {
+ mStrokeDisabledColor = color;
+ }
+ if (mStrokeFocusedColor == mStrokeColor) {
+ mStrokeFocusedColor = color;
+ }
+ if (mStrokeSelectedColor == mStrokeColor) {
+ mStrokeSelectedColor = color;
+ }
mStrokeColor = color;
return this;
}
@@ -588,8 +615,8 @@ public void intoBackground() {
if (drawable == null) {
return;
}
- if (isShadowEnable()) {
- // 需要关闭硬件加速,否则阴影无法生效
+ if (isDashLineEnable() || isShadowEnable()) {
+ // 需要关闭硬件加速,否则虚线或者阴影在某些手机上面无法生效
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
setBackground(drawable);
diff --git a/library/src/main/java/com/hjq/shape/view/ShapeImageView.java b/library/src/main/java/com/hjq/shape/view/ShapeImageView.java
index 153d15c..c924c9d 100644
--- a/library/src/main/java/com/hjq/shape/view/ShapeImageView.java
+++ b/library/src/main/java/com/hjq/shape/view/ShapeImageView.java
@@ -165,7 +165,22 @@ public int getShapeHeight() {
@Override
public ShapeImageView setSolidColor(int color) {
+ if (mSolidPressedColor == mSolidColor) {
+ mSolidPressedColor = color;
+ }
+ if (mSolidDisabledColor == mSolidColor) {
+ mSolidDisabledColor = color;
+ }
+ if (mSolidFocusedColor == mSolidColor) {
+ mSolidFocusedColor = color;
+ }
+ if (mSolidSelectedColor == mSolidColor) {
+ mSolidSelectedColor = color;
+ }
mSolidColor = color;
+ mStartColor = color;
+ mCenterColor = color;
+ mEndColor = color;
return this;
}
@@ -363,6 +378,18 @@ public int getGradientRadius() {
@Override
public ShapeImageView setStrokeColor(int color) {
+ if (mStrokePressedColor == mStrokeColor) {
+ mStrokePressedColor = color;
+ }
+ if (mStrokeDisabledColor == mStrokeColor) {
+ mStrokeDisabledColor = color;
+ }
+ if (mStrokeFocusedColor == mStrokeColor) {
+ mStrokeFocusedColor = color;
+ }
+ if (mStrokeSelectedColor == mStrokeColor) {
+ mStrokeSelectedColor = color;
+ }
mStrokeColor = color;
return this;
}
@@ -543,8 +570,8 @@ public void intoBackground() {
if (drawable == null) {
return;
}
- if (isShadowEnable()) {
- // 需要关闭硬件加速,否则阴影无法生效
+ if (isDashLineEnable() || isShadowEnable()) {
+ // 需要关闭硬件加速,否则虚线或者阴影在某些手机上面无法生效
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
setBackground(drawable);
diff --git a/library/src/main/java/com/hjq/shape/view/ShapeRadioButton.java b/library/src/main/java/com/hjq/shape/view/ShapeRadioButton.java
index 8fb468c..1f6770a 100644
--- a/library/src/main/java/com/hjq/shape/view/ShapeRadioButton.java
+++ b/library/src/main/java/com/hjq/shape/view/ShapeRadioButton.java
@@ -209,7 +209,25 @@ public int getShapeHeight() {
@Override
public ShapeRadioButton setSolidColor(int color) {
+ if (mSolidPressedColor == mSolidColor) {
+ mSolidPressedColor = color;
+ }
+ if (mSolidCheckedColor == mSolidColor) {
+ mSolidCheckedColor = color;
+ }
+ if (mSolidDisabledColor == mSolidColor) {
+ mSolidDisabledColor = color;
+ }
+ if (mSolidFocusedColor == mSolidColor) {
+ mSolidFocusedColor = color;
+ }
+ if (mSolidSelectedColor == mSolidColor) {
+ mSolidSelectedColor = color;
+ }
mSolidColor = color;
+ mStartColor = color;
+ mCenterColor = color;
+ mEndColor = color;
return this;
}
@@ -418,6 +436,21 @@ public int getGradientRadius() {
@Override
public ShapeRadioButton setStrokeColor(int color) {
+ if (mStrokePressedColor == mStrokeColor) {
+ mStrokePressedColor = color;
+ }
+ if (mStrokeCheckedColor == mStrokeColor) {
+ mStrokeCheckedColor = color;
+ }
+ if (mStrokeDisabledColor == mStrokeColor) {
+ mStrokeDisabledColor = color;
+ }
+ if (mStrokeFocusedColor == mStrokeColor) {
+ mStrokeFocusedColor = color;
+ }
+ if (mStrokeSelectedColor == mStrokeColor) {
+ mStrokeSelectedColor = color;
+ }
mStrokeColor = color;
return this;
}
@@ -616,8 +649,8 @@ public void intoBackground() {
if (drawable == null) {
return;
}
- if (isShadowEnable()) {
- // 需要关闭硬件加速,否则阴影无法生效
+ if (isDashLineEnable() || isShadowEnable()) {
+ // 需要关闭硬件加速,否则虚线或者阴影在某些手机上面无法生效
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
setBackground(drawable);
diff --git a/library/src/main/java/com/hjq/shape/view/ShapeTextView.java b/library/src/main/java/com/hjq/shape/view/ShapeTextView.java
index 89662ff..eec892f 100644
--- a/library/src/main/java/com/hjq/shape/view/ShapeTextView.java
+++ b/library/src/main/java/com/hjq/shape/view/ShapeTextView.java
@@ -203,7 +203,22 @@ public int getShapeHeight() {
@Override
public ShapeTextView setSolidColor(int color) {
+ if (mSolidPressedColor == mSolidColor) {
+ mSolidPressedColor = color;
+ }
+ if (mSolidDisabledColor == mSolidColor) {
+ mSolidDisabledColor = color;
+ }
+ if (mSolidFocusedColor == mSolidColor) {
+ mSolidFocusedColor = color;
+ }
+ if (mSolidSelectedColor == mSolidColor) {
+ mSolidSelectedColor = color;
+ }
mSolidColor = color;
+ mStartColor = color;
+ mCenterColor = color;
+ mEndColor = color;
return this;
}
@@ -401,6 +416,18 @@ public int getGradientRadius() {
@Override
public ShapeTextView setStrokeColor(int color) {
+ if (mStrokePressedColor == mStrokeColor) {
+ mStrokePressedColor = color;
+ }
+ if (mStrokeDisabledColor == mStrokeColor) {
+ mStrokeDisabledColor = color;
+ }
+ if (mStrokeFocusedColor == mStrokeColor) {
+ mStrokeFocusedColor = color;
+ }
+ if (mStrokeSelectedColor == mStrokeColor) {
+ mStrokeSelectedColor = color;
+ }
mStrokeColor = color;
return this;
}
@@ -588,8 +615,8 @@ public void intoBackground() {
if (drawable == null) {
return;
}
- if (isShadowEnable()) {
- // 需要关闭硬件加速,否则阴影无法生效
+ if (isDashLineEnable() || isShadowEnable()) {
+ // 需要关闭硬件加速,否则虚线或者阴影在某些手机上面无法生效
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
setBackground(drawable);
diff --git a/library/src/main/java/com/hjq/shape/view/ShapeView.java b/library/src/main/java/com/hjq/shape/view/ShapeView.java
index fbfc959..0402b19 100644
--- a/library/src/main/java/com/hjq/shape/view/ShapeView.java
+++ b/library/src/main/java/com/hjq/shape/view/ShapeView.java
@@ -164,7 +164,22 @@ public int getShapeHeight() {
@Override
public ShapeView setSolidColor(int color) {
+ if (mSolidPressedColor == mSolidColor) {
+ mSolidPressedColor = color;
+ }
+ if (mSolidDisabledColor == mSolidColor) {
+ mSolidDisabledColor = color;
+ }
+ if (mSolidFocusedColor == mSolidColor) {
+ mSolidFocusedColor = color;
+ }
+ if (mSolidSelectedColor == mSolidColor) {
+ mSolidSelectedColor = color;
+ }
mSolidColor = color;
+ mStartColor = color;
+ mCenterColor = color;
+ mEndColor = color;
return this;
}
@@ -362,6 +377,18 @@ public int getGradientRadius() {
@Override
public ShapeView setStrokeColor(int color) {
+ if (mStrokePressedColor == mStrokeColor) {
+ mStrokePressedColor = color;
+ }
+ if (mStrokeDisabledColor == mStrokeColor) {
+ mStrokeDisabledColor = color;
+ }
+ if (mStrokeFocusedColor == mStrokeColor) {
+ mStrokeFocusedColor = color;
+ }
+ if (mStrokeSelectedColor == mStrokeColor) {
+ mStrokeSelectedColor = color;
+ }
mStrokeColor = color;
return this;
}
@@ -542,8 +569,8 @@ public void intoBackground() {
if (drawable == null) {
return;
}
- if (isShadowEnable()) {
- // 需要关闭硬件加速,否则阴影无法生效
+ if (isDashLineEnable() || isShadowEnable()) {
+ // 需要关闭硬件加速,否则虚线或者阴影在某些手机上面无法生效
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
setBackground(drawable);