Skip to content

Commit aa3e7e0

Browse files
author
Kaushik Gopal
committed
refactor: move fragments/classes to make structure simpler
1 parent 7d4ad73 commit aa3e7e0

8 files changed

Lines changed: 133 additions & 99 deletions

File tree

app/src/main/java/com/morihacky/android/rxjava/rxbus/RxBusDemoFragment.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,11 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
2727

2828
getActivity().getSupportFragmentManager()
2929
.beginTransaction()
30-
.replace(R.id.demo_rxbus_frag_1, new RxBusFrag1())
31-
.replace(R.id.demo_rxbus_frag_2, new RxBusFrag2())
32-
.replace(R.id.demo_rxbus_frag_3, new RxBusFrag3())
30+
.replace(R.id.demo_rxbus_frag_1, new RxBusDemo_TopFragment())
31+
//.replace(R.id.demo_rxbus_frag_2, new RxBusDemo_BottomFragment())
32+
.replace(R.id.demo_rxbus_frag_2, new RxBusDemo_BottomFANCYFragment())
3333
.commit();
3434
}
3535

36+
public static class TapEvent {}
3637
}

app/src/main/java/com/morihacky/android/rxjava/rxbus/RxBusFrag2.java renamed to app/src/main/java/com/morihacky/android/rxjava/rxbus/RxBusDemo_BottomFANCYFragment.java

Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,17 @@
1515
import java.util.List;
1616
import java.util.concurrent.TimeUnit;
1717
import rx.Observable;
18-
import rx.Subscription;
19-
import rx.android.observables.AndroidObservable;
2018
import rx.android.schedulers.AndroidSchedulers;
2119
import rx.functions.Action1;
20+
import rx.subscriptions.CompositeSubscription;
2221

23-
import static com.morihacky.android.rxjava.rxbus.RxBusFrag1.TapEvent;
22+
import static rx.android.observables.AndroidObservable.bindFragment;
2423

25-
public class RxBusFrag2
24+
public class RxBusDemo_BottomFANCYFragment
2625
extends Fragment {
2726

2827
private RxBus _rxBus;
29-
private Subscription _subscription1_tapListen;
30-
private Subscription _subscription2_tapCollector;
28+
private CompositeSubscription _subscriptions;
3129

3230
@InjectView(R.id.demo_rxbus_tap_txt) TextView _tapEventTxtShow;
3331
@InjectView(R.id.demo_rxbus_tap_count) TextView _tapEventCountShow;
@@ -36,7 +34,7 @@ public class RxBusFrag2
3634
public View onCreateView(LayoutInflater inflater,
3735
@Nullable ViewGroup container,
3836
@Nullable Bundle savedInstanceState) {
39-
View layout = inflater.inflate(R.layout.fragment_rxbus_frag2, container, false);
37+
View layout = inflater.inflate(R.layout.fragment_rxbus_bottom, container, false);
4038
ButterKnife.inject(this, layout);
4139
return layout;
4240
}
@@ -50,31 +48,43 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
5048
@Override
5149
public void onStart() {
5250
super.onStart();
51+
_subscriptions = new CompositeSubscription();
5352

54-
// .share = publish + refcount
5553
Observable<Object> tapEventEmitter = _rxBus.toObserverable().share();
54+
Observable<Object> debouncedEmitter = tapEventEmitter.debounce(1, TimeUnit.SECONDS);
55+
Observable<List<Object>> debouncedBufferEmitter = tapEventEmitter.buffer(debouncedEmitter);
5656

57-
_subscription1_tapListen = AndroidObservable.bindFragment(this, tapEventEmitter)
58-
.subscribe(new Action1<Object>() {
59-
@Override
60-
public void call(Object event) {
61-
if (event instanceof TapEvent) {
62-
_showTapText();
63-
}
64-
}
65-
});
57+
_subscriptions//
58+
.add(bindFragment(this, tapEventEmitter)//
59+
.subscribe(new Action1<Object>() {
60+
@Override
61+
public void call(Object event) {
62+
if (event instanceof RxBusDemoFragment.TapEvent) {
63+
_showTapText();
64+
}
65+
}
66+
}));
6667

67-
Observable<Object> debouncedEventEmitter = tapEventEmitter.debounce(1, TimeUnit.SECONDS);
68-
tapEventEmitter.buffer(debouncedEventEmitter)
69-
.observeOn(AndroidSchedulers.mainThread())
70-
.subscribe(new Action1<List<Object>>() {
71-
@Override
72-
public void call(List<Object> taps) {
73-
_showTapCount(taps.size());
74-
}
75-
});
68+
_subscriptions//
69+
.add(debouncedBufferEmitter//
70+
.observeOn(AndroidSchedulers.mainThread())//
71+
.subscribe(new Action1<List<Object>>() {
72+
@Override
73+
public void call(List<Object> taps) {
74+
_showTapCount(taps.size());
75+
}
76+
}));
7677
}
7778

79+
@Override
80+
public void onStop() {
81+
super.onStop();
82+
_subscriptions.unsubscribe();
83+
}
84+
85+
// -----------------------------------------------------------------------------------
86+
// Helper to show the text via an animation
87+
7888
private void _showTapText() {
7989
_tapEventTxtShow.setVisibility(View.VISIBLE);
8090
_tapEventTxtShow.setAlpha(1f);
@@ -89,13 +99,7 @@ private void _showTapCount(int size) {
8999
ViewCompat.animate(_tapEventCountShow)
90100
.scaleXBy(-1f)
91101
.scaleYBy(-1f)
92-
.setDuration(400)
102+
.setDuration(800)
93103
.setStartDelay(100);
94104
}
95-
96-
@Override
97-
public void onStop() {
98-
super.onStop();
99-
_subscription1_tapListen.unsubscribe();
100-
}
101105
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package com.morihacky.android.rxjava.rxbus;
2+
3+
import android.os.Bundle;
4+
import android.support.annotation.Nullable;
5+
import android.support.v4.app.Fragment;
6+
import android.support.v4.view.ViewCompat;
7+
import android.view.LayoutInflater;
8+
import android.view.View;
9+
import android.view.ViewGroup;
10+
import android.widget.TextView;
11+
import butterknife.ButterKnife;
12+
import butterknife.InjectView;
13+
import com.morihacky.android.rxjava.MainActivity;
14+
import com.morihacky.android.rxjava.app.R;
15+
import rx.functions.Action1;
16+
import rx.subscriptions.CompositeSubscription;
17+
18+
import static rx.android.observables.AndroidObservable.bindFragment;
19+
20+
public class RxBusDemo_BottomFragment
21+
extends Fragment {
22+
23+
private RxBus _rxBus;
24+
private CompositeSubscription _subscriptions;
25+
26+
@InjectView(R.id.demo_rxbus_tap_txt) TextView _tapEventTxtShow;
27+
28+
@Override
29+
public View onCreateView(LayoutInflater inflater,
30+
@Nullable ViewGroup container,
31+
@Nullable Bundle savedInstanceState) {
32+
View layout = inflater.inflate(R.layout.fragment_rxbus_bottom, container, false);
33+
ButterKnife.inject(this, layout);
34+
return layout;
35+
}
36+
37+
@Override
38+
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
39+
super.onActivityCreated(savedInstanceState);
40+
_rxBus = ((MainActivity) getActivity()).getRxBusSingleton();
41+
}
42+
43+
@Override
44+
public void onStart() {
45+
super.onStart();
46+
_subscriptions = new CompositeSubscription();
47+
48+
_subscriptions//
49+
.add(bindFragment(this, _rxBus.toObserverable())//
50+
.subscribe(new Action1<Object>() {
51+
@Override
52+
public void call(Object event) {
53+
if (event instanceof RxBusDemoFragment.TapEvent) {
54+
_showTapText();
55+
}
56+
}
57+
}));
58+
}
59+
60+
private void _showTapText() {
61+
_tapEventTxtShow.setVisibility(View.VISIBLE);
62+
_tapEventTxtShow.setAlpha(1f);
63+
ViewCompat.animate(_tapEventTxtShow).alphaBy(-1f).setDuration(400);
64+
}
65+
66+
@Override
67+
public void onStop() {
68+
super.onStop();
69+
_subscriptions.unsubscribe();
70+
}
71+
}

app/src/main/java/com/morihacky/android/rxjava/rxbus/RxBusFrag1.java renamed to app/src/main/java/com/morihacky/android/rxjava/rxbus/RxBusDemo_TopFragment.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import com.morihacky.android.rxjava.MainActivity;
1212
import com.morihacky.android.rxjava.app.R;
1313

14-
public class RxBusFrag1
14+
public class RxBusDemo_TopFragment
1515
extends Fragment {
1616

1717
private RxBus _rxBus;
@@ -20,7 +20,7 @@ public class RxBusFrag1
2020
public View onCreateView(LayoutInflater inflater,
2121
@Nullable ViewGroup container,
2222
@Nullable Bundle savedInstanceState) {
23-
View layout = inflater.inflate(R.layout.fragment_rxbus_frag1, container, false);
23+
View layout = inflater.inflate(R.layout.fragment_rxbus_top, container, false);
2424
ButterKnife.inject(this, layout);
2525
return layout;
2626
}
@@ -33,9 +33,8 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
3333

3434
@OnClick(R.id.btn_demo_rxbus_tap)
3535
public void onTapButtonClicked() {
36-
_rxBus.send(new TapEvent());
37-
36+
if (_rxBus.hasObservers()) {
37+
_rxBus.send(new RxBusDemoFragment.TapEvent());
38+
}
3839
}
39-
40-
public static class TapEvent {}
4140
}

app/src/main/java/com/morihacky/android/rxjava/rxbus/RxBusFrag3.java

Lines changed: 0 additions & 32 deletions
This file was deleted.
File renamed without changes.
Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,24 @@
11
<?xml version="1.0" encoding="utf-8"?>
22

3-
<RelativeLayout
3+
<LinearLayout
4+
android:id="@+id/demo_rxbus_frag_12"
5+
android:baselineAligned="false"
6+
android:orientation="vertical"
47
android:layout_height="match_parent"
58
android:layout_width="match_parent"
9+
android:minHeight="220dp"
610
xmlns:android="http://schemas.android.com/apk/res/android">
711

8-
<LinearLayout
9-
android:id="@+id/demo_rxbus_frag_12"
10-
android:baselineAligned="false"
11-
android:orientation="horizontal"
12-
android:layout_height="wrap_content"
13-
android:layout_width="match_parent"
14-
android:minHeight="220dp">
15-
<FrameLayout
16-
android:id="@+id/demo_rxbus_frag_1"
17-
android:layout_weight="1"
18-
android:layout_height="match_parent"
19-
android:layout_width="0dp"/>
20-
<FrameLayout
21-
android:id="@+id/demo_rxbus_frag_2"
22-
android:layout_weight="1"
23-
android:layout_height="match_parent"
24-
android:layout_width="0dp"/>
25-
</LinearLayout>
26-
12+
<FrameLayout
13+
android:id="@+id/demo_rxbus_frag_1"
14+
android:layout_weight="1"
15+
android:layout_height="0dp"
16+
android:layout_width="match_parent"/>
2717

2818
<FrameLayout
29-
android:id="@+id/demo_rxbus_frag_3"
30-
android:layout_height="match_parent"
31-
android:layout_width="match_parent"
32-
android:layout_below="@id/demo_rxbus_frag_12"/>
33-
</RelativeLayout>
19+
android:id="@+id/demo_rxbus_frag_2"
20+
android:layout_weight="1"
21+
android:layout_height="0dp"
22+
android:layout_width="match_parent"/>
23+
24+
</LinearLayout>
File renamed without changes.

0 commit comments

Comments
 (0)