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 | setNormalTextColor(int color) | |
pressedTextColor | setPressedTextColor(int color) | ||
unableTextColor | setUnableTextColor(int color) | ||
0 | setStrokeDash(int dashWidth,int dashGap) | ||
strokeDashGap | Box-sizing: border-Box; padding: 6px 13px; word-wrap: break-word; border: 1px solid rgb(221,int dashGap) | ||
setNormalStrokeWidth(int widht) | |||
pressedStrokeWidth | setPressedStrokeWidth(int widht) | ||
setUnableStrokeWidth(int widht) | |||
normalStrokeColor | setNormalStrokeColor(int color) | ||
setPressedStrokeColor(int color) | |||
unableStrokeColor | setUnableStrokeColor(int color) | ||
setNormalBackgroundColor(int color) | |||
pressedBackgroundColor | setPressedBackgroundColor(int color) | ||
setUnableBackgroundColor(int color) | |||
radius | setRadius(int radius) / setRadius(float[] radii) | ||
false | setRound(boolean round) | ||
animationDuration | 0ms | 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