-
Notifications
You must be signed in to change notification settings - Fork 0
/
LockSwitch.java
112 lines (91 loc) · 2.84 KB
/
LockSwitch.java
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
108
109
110
111
112
package com.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.ScaleAnimation;
import android.view.animation.Animation.AnimationListener;
import android.widget.CheckBox;
import android.widget.ListView;
public class LockSwitch extends CheckBox {
private ListView listView;
private int oldLeft;
private int oldTop;
private int oldRight;
private int oldBottom;
public LockSwitch(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public LockSwitch(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public ListView getListView() {
return listView;
}
public void setListView(ListView listView) {
this.listView = listView;
}
public void showList() {
listView.startAnimation(getShowAnimation());
}
public void hideList() {
listView.startAnimation(getHideAnimation());
}
public AnimationSet getHideAnimation() {
AnimationSet animationSet = new AnimationSet(true);
Animation hideAnimation = new AlphaAnimation(1.0f, 0.0f);
Animation scalaAniamtion = new ScaleAnimation(1.0f, 1.0f, 1.0f, 0.0f);
scalaAniamtion.setFillAfter(true);
hideAnimation.setFillAfter(true);
scalaAniamtion.setDuration(300);
hideAnimation.setDuration(300);
animationSet.addAnimation(hideAnimation);
animationSet.setFillAfter(true);
animationSet.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
oldLeft = listView.getLeft();
oldBottom = listView.getBottom();
oldRight = listView.getRight();
oldTop = listView.getTop();
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
Log.e("debug", "l:"+oldLeft+" t:"+oldTop+"r:"+oldRight+" b"+oldBottom);
listView.layout(0, 0, 0, 0);
}
});
// animationSet.addAnimation(scalaAniamtion);
return animationSet;
}
public Animation getShowAnimation() {
Animation animation = new AlphaAnimation(0.0f, 1.0f);
animation.setFillAfter(true);
animation.setDuration(300);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
listView.layout(oldLeft, oldTop, oldRight, oldBottom);
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
}
});
return animation;
}
}