/
FragmentTransactionOptions.java
122 lines (93 loc) · 3.05 KB
/
FragmentTransactionOptions.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
113
114
115
116
117
118
119
120
121
122
package com.fragstack.controller;
import android.view.View;
import androidx.annotation.AnimRes;
import androidx.annotation.AnimatorRes;
import androidx.annotation.IntDef;
import androidx.annotation.StyleRes;
import androidx.fragment.app.FragmentTransaction;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
public class FragmentTransactionOptions {
@IntDef({FragmentTransaction.TRANSIT_UNSET, FragmentTransaction.TRANSIT_NONE, FragmentTransaction.TRANSIT_FRAGMENT_OPEN,
FragmentTransaction.TRANSIT_FRAGMENT_CLOSE, FragmentTransaction.TRANSIT_FRAGMENT_FADE})
@Retention(RetentionPolicy.SOURCE)
public @interface Transit {
}
@StyleRes
public int transitionStyle = 0;
@Transit
public int transit = FragmentTransaction.TRANSIT_UNSET;
public View sharedElement;
public String name;
@AnimatorRes
@AnimRes
public int enter = 0;
@AnimatorRes
@AnimRes
public int exit = 0;
@AnimatorRes
@AnimRes
public int popEnter = 0;
@AnimatorRes
@AnimRes
public int popExit = 0;
private FragmentTransactionOptions(Builder builder) {
this.transitionStyle = builder.transitionStyle;
this.transit = builder.transit;
this.sharedElement = builder.sharedElement;
this.name = builder.name;
this.enter = builder.enter;
this.exit = builder.exit;
this.popEnter = builder.popEnter;
this.popExit = builder.popExit;
}
public static class Builder {
@StyleRes
int transitionStyle;
@Transit
int transit;
View sharedElement;
String name;
@AnimatorRes
@AnimRes
int enter;
@AnimatorRes
@AnimRes
int exit;
@AnimatorRes
@AnimRes
int popEnter;
@AnimatorRes
@AnimRes
int popExit;
public Builder setTransitionStyle(@StyleRes int transitionStyle) {
this.transitionStyle = transitionStyle;
return this;
}
public Builder setTransition(int transit) {
this.transit = transit;
return this;
}
public Builder addSharedElement(View sharedElement, String name) {
this.sharedElement = sharedElement;
this.name = name;
return this;
}
public Builder setCustomAnimations(@AnimatorRes @AnimRes int enter, @AnimatorRes @AnimRes int exit,
@AnimatorRes @AnimRes int popEnter, @AnimatorRes @AnimRes int popExit) {
this.enter = enter;
this.exit = exit;
this.popEnter = popEnter;
this.popExit = popExit;
return this;
}
public Builder setCustomAnimations(@AnimatorRes @AnimRes int enter, @AnimatorRes @AnimRes int exit) {
this.exit = exit;
this.enter = enter;
return this;
}
public FragmentTransactionOptions build() {
return new FragmentTransactionOptions(this);
}
}
}