标签:
Android平台xxxxx.setBackgroundDrawable(mRoundRectDradable);
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
import
android.graphics.Canvas;import
android.graphics.Color;import
android.graphics.ColorFilter;import
android.graphics.Paint;import
android.graphics.Rect;import
android.graphics.drawable.Drawable;import
android.graphics.drawable.shapes.RoundRectShape;import
android.view.MotionEvent;public
class
RoundRectDradable extends
Drawable{ private
static
final
float
DEFAULT_RADIUS = 6.f; private
Paint mPaint = new
Paint(); private
RoundRectShape mShape; private
float[]
mOuter; private
int
mColor; private
int
mPressColor; private
float
mTopLeftRadius = DEFAULT_RADIUS; private
float
mTopRightRadius = DEFAULT_RADIUS; private
float
mBottomLeftRadius = DEFAULT_RADIUS; private
float
mBottomRightRadius = DEFAULT_RADIUS; public
RoundRectDradable() { mColor
= Color.WHITE; mPressColor
= Color.WHITE; mPaint.setColor(mColor); mPaint.setAntiAlias(true); } public
float
getTopLeftRadius() { return
mTopLeftRadius; } public
void
setTopLeftRadius(float
topLeftRadius) { this.mTopLeftRadius
= topLeftRadius; } public
float
getTopRightRadius() { return
mTopRightRadius; } public
void
setTopRightRadius(float
topRightRadius) { this.mTopRightRadius
= topRightRadius; } public
float
getBottomLeftRadius() { return
mBottomLeftRadius; } public
void
setBottomLeftRadius(float
bottomLeftRadius) { this.mBottomLeftRadius
= bottomLeftRadius; } public
float
getBottomRightRadius() { return
mBottomRightRadius; } public
void
setBottomRightRadius(float
bottomRightRadius) { this.mBottomRightRadius
= bottomRightRadius; } public
int
getPressColor() { return
mPressColor; } public
void
setPressColor(int
pressColor) { this.mPressColor
= pressColor; } @Override protected
void
onBoundsChange(Rect bounds) { super.onBoundsChange(bounds); refreshShape(); mShape.resize(bounds.right
- bounds.left, bounds.bottom - bounds.top); } private
void
refreshShape(){ mOuter
= new
float[]{mTopLeftRadius,
mTopLeftRadius ,
mTopRightRadius, mTopRightRadius ,
mBottomLeftRadius, mBottomLeftRadius ,
mBottomRightRadius, mBottomLeftRadius}; mShape
= new
RoundRectShape(mOuter, null,
null); } public
void
setColor(int
color){ mColor
= color; mPaint.setColor(color); } @Override public
void
draw(Canvas canvas) { mShape.draw(canvas,
mPaint); } @Override public
void
setAlpha(int
alpha) { mPaint.setAlpha(alpha); } @Override public
void
setColorFilter(ColorFilter cf) { mPaint.setColorFilter(cf); } @Override public
int
getOpacity() { return
mPaint.getAlpha(); }} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
import
android.graphics.Rect;import
android.graphics.drawable.StateListDrawable;public
class
StateRoundRectDrawable extends
StateListDrawable{ private
static
final
float
DEFAULT_RADIUS = 6.f; private
float
mTopLeftRadius = DEFAULT_RADIUS; private
float
mTopRightRadius = DEFAULT_RADIUS; private
float
mBottomLeftRadius = DEFAULT_RADIUS; private
float
mBottomRightRadius = DEFAULT_RADIUS; private
int
mNormalColor; private
int
mPressedColor; private
RoundRectDradable mNormalDradable; private
RoundRectDradable mPressedDradable; public
StateRoundRectDrawable(int
normalCorlor, int
pressColor) { this.mNormalColor
= normalCorlor; this.mPressedColor
= pressColor; } @Override protected
void
onBoundsChange(Rect bounds) { if(mNormalDradable
== null){ mNormalDradable
= new
RoundRectDradable(); mNormalDradable.setTopLeftRadius(mTopLeftRadius); mNormalDradable.setTopRightRadius(mTopRightRadius); mNormalDradable.setBottomLeftRadius(mBottomLeftRadius); mNormalDradable.setBottomRightRadius(mBottomRightRadius); mNormalDradable.setColor(mNormalColor); mNormalDradable.onBoundsChange(bounds); } if(mPressedDradable
== null){ mPressedDradable
= new
RoundRectDradable(); mPressedDradable.setTopLeftRadius(mTopLeftRadius); mPressedDradable.setTopRightRadius(mTopRightRadius); mPressedDradable.setBottomLeftRadius(mBottomLeftRadius); mPressedDradable.setBottomRightRadius(mBottomRightRadius); mPressedDradable.setColor(mPressedColor); mPressedDradable.onBoundsChange(bounds); } this.addState(new
int[]{-android.R.attr.state_pressed},
mNormalDradable); this.addState(new
int[]{android.R.attr.state_pressed},
mPressedDradable); } public
float
getTopLeftRadius() { return
mTopLeftRadius; } public
void
setTopLeftRadius(float
topLeftRadius) { this.mTopLeftRadius
= topLeftRadius; } public
float
getTopRightRadius() { return
mTopRightRadius; } public
void
setTopRightRadius(float
topRightRadius) { this.mTopRightRadius
= topRightRadius; } public
float
getBottomLeftRadius() { return
mBottomLeftRadius; } public
void
setBottomLeftRadius(float
bottomLeftRadius) { this.mBottomLeftRadius
= bottomLeftRadius; } public
float
getBottomRightRadius() { return
mBottomRightRadius; } public
void
setBottomRightRadius(float
bottomRightRadius) { this.mBottomRightRadius
= bottomRightRadius; } public
int
getNormalColor() { return
mNormalColor; } public
void
setNormalColor(int
normalColor) { this.mNormalColor
= normalColor; } public
int
getPressedColor() { return
mPressedColor; } public
void
setPressedColor(int
pressedColor) { this.mPressedColor
= pressedColor; } } |
标签:
原文地址:http://blog.csdn.net/u014311077/article/details/42675957