StateButton
项目地址:
niniloveyou/StateButton
简介:再也不用根据不同状态写不同的 selector 了
Do you hate to write a background for each button?
Do you hate to write a bunch of selector?
That's why I'm writing this view.
Here to download demo
https://raw.githubusercontent.com/niniloveyou/StateButton/master/demo.apk
Screenshot
Manually
Copy/merge the following files to corresponding folder/file:
- deadline/stabutton/StateButton.java
- res/values/attrs.xml
Customizable attributes
Attribute | default value | xml | java |
---|---|---|---|
normalTextColor | original text color | normalTextColor | setNormalTextColor(int color) |
pressedTextColor | original text color | pressedTextColor | setPressedTextColor(int color) |
unableTextColor | original text color | unableTextColor | setUnableTextColor(int color) |
strokeDashWidth | 0 | strokeDashWidth | setStrokeDash(int dashWidth, int dashGap) |
strokeDashGap | 0 | strokeDashGap | setStrokeDash(int dashWidth, int dashGap) |
normalStrokeWidth | 0 | normalStrokeWidth | setNormalStrokeWidth(int widht) |
pressedStrokeWidth | 0 | pressedStrokeWidth | setPressedStrokeWidth(int widht) |
unableStrokeWidth | 0 | unableStrokeWidth | setUnableStrokeWidth(int widht) |
normalStrokeColor | 0 | normalStrokeColor | setNormalStrokeColor(int color) |
pressedStrokeColor | 0 | pressedStrokeColor | setPressedStrokeColor(int color) |
unableStrokeColor | 0 | unableStrokeColor | setUnableStrokeColor(int color) |
normalBackgroundColor | 0 | normalBackgroundColor | setNormalBackgroundColor(int color) |
pressedBackgroundColor | 0 | pressedBackgroundColor | setPressedBackgroundColor(int color) |
unableBackgroundColor | 0 | unableBackgroundColor | setUnableBackgroundColor(int color) |
radius | 0 | radius | setRadius(int radius) / setRadius(float[] radii) |
round | false | round | setRound(boolean round) |
animationDuration | 0ms | animationDuration | setAnimationDuration(int duration) |
Usage
If the default values of custom attribues did not meet your requirement, you can easily re-config that attributes. This is sample code that you can refer. you can also browse demo app for more details.
via xml (sample)
- Define
xmlns:app="http://schemas.android.com/apk/res-auto"
on root of your xml file
<deadline.statebutton.StateButton
android:id="@+id/stateButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="StateButton"
app:radius="5dp"
app:round="true"
app:animationDuration="200"
app:strokeDashGap="2dp"
app:strokeDashWidth="5dp"
app:normalStrokeWidth="2dp"
app:pressedStrokeWidth="2dp"
app:unableStrokeWidth="2dp"
app:normalStrokeColor="@android:color/white"
app:pressedStrokeColor="@android:color/white"
app:unableStrokeColor="@android:color/white"
app:normalTextColor="@android:color/white"
app:pressedTextColor="@android:color/white"
app:unableTextColor="@android:color/white"
app:normalBackgroundColor="@color/colorPrimaryDark"
app:pressedBackgroundColor="@color/colorPrimaryDark"
app:unableBackgroundColor="@color/colorPrimaryDark"/>
Developed By
deadline
Blog : http://www.jianshu.com/users/25e80ace21b8/latest_articles