匿名类优化

Posted by Jfson on 2018-03-22

举例说明,通常对动画进行监听时的addListener需要对匿名类复写所有的回调监听,如果用一个实现接口类,去包一层,这时候添加回调监听时只需要Override需要的方法,大大增加代码可读性和简洁性,参考test()方法中的两种setListener方式。

  • 往往只需要end回调时,避免了重写其他多余的方法
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
public class ITest {
void test(){
setAllListenr(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
// 往往只需要end回调时,避免了重写其他多余的方法
setFixListener(new FixAnimator(){
@Override
public void onAnimationEnd(Animator animator) {
super.onAnimationEnd(animator);
}
});
}
public void setAllListenr(Animator.AnimatorListener listenr) {
}
public void setFixListener(Animator.AnimatorListener listenr) {
}
class FixAnimator implements Animator.AnimatorListener{
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
}
}

pv UV: