@@ -45,9 +45,12 @@ protected void onInitDefaultValues() {
45
45
@ Override
46
46
protected void setAttributes (AttributeSet attrs ) {
47
47
super .setAttributes (attrs );
48
- getBackground ().setAlpha (0 );
48
+ if (!isInEditMode ()) {
49
+ getBackground ().setAlpha (0 );
50
+ }
49
51
iSchecked = attrs .getAttributeBooleanValue (MATERIALDESIGNXML , "checked" , false );
50
52
eventCheck = iSchecked ;
53
+ //添加监听器,如果点击了这个控件(不包括ball的区域),这个控件就开始判断是否是开启状态。
51
54
setOnClickListener (new OnClickListener () {
52
55
@ Override
53
56
public void onClick (View arg0 ) {
@@ -63,6 +66,15 @@ public void onClick(View arg0) {
63
66
ball = new Ball (getContext ());
64
67
setThumbParams (size );
65
68
addView (ball );
69
+ // 给圆球添加监听器,点击圆球后就开始判断是否进入开启状态
70
+ ball .setOnClickListener (new OnClickListener () {
71
+
72
+ @ Override
73
+ public void onClick (View v ) {
74
+ // TODO 自动生成的方法存根
75
+ setChecked (iSchecked ? false : true );
76
+ }
77
+ });
66
78
}
67
79
68
80
private void setThumbParams (float size ) {
@@ -79,6 +91,7 @@ public boolean onTouchEvent(MotionEvent event) {
79
91
if (event .getAction () == MotionEvent .ACTION_DOWN ) {
80
92
press = true ;
81
93
} else if (event .getAction () == MotionEvent .ACTION_MOVE ) {
94
+ requestDisallowInterceptTouchEvent (true );
82
95
float x = event .getX ();
83
96
x = (x < ball .xIni ) ? ball .xIni : x ;
84
97
x = (x > ball .xFin ) ? ball .xFin : x ;
@@ -93,7 +106,9 @@ public boolean onTouchEvent(MotionEvent event) {
93
106
isLastTouch = false ;
94
107
press = false ;
95
108
}
96
- } else if (event .getAction () == MotionEvent .ACTION_UP ) {
109
+ } else if (event .getAction () == MotionEvent .ACTION_UP
110
+ || event .getAction () == MotionEvent .ACTION_CANCEL ) {
111
+ requestDisallowInterceptTouchEvent (false );
97
112
press = false ;
98
113
isLastTouch = false ;
99
114
if (eventCheck != iSchecked ) {
@@ -108,7 +123,13 @@ public boolean onTouchEvent(MotionEvent event) {
108
123
}
109
124
return true ;
110
125
}
111
-
126
+
127
+ /* @Override
128
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
129
+ //return super.onInterceptTouchEvent(ev);
130
+ return false;
131
+ }
132
+ */
112
133
@ Override
113
134
protected void onDraw (Canvas canvas ) {
114
135
super .onDraw (canvas );
0 commit comments