Skip to content

Commit a73c1dd

Browse files
committed
操作符常用编写和Demo演示UI更新
1 parent 1e6ddea commit a73c1dd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+2174
-88
lines changed

app/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ dependencies {
3131
compile 'com.jakewharton:butterknife:8.6.0'
3232
compile 'io.reactivex.rxjava2:rxjava:2.1.0'
3333
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
34+
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.20'
3435
testCompile 'junit:junit:4.12'
3536
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
3637
}

app/src/main/AndroidManifest.xml

+37-21
Original file line numberDiff line numberDiff line change
@@ -14,56 +14,72 @@
1414
android:theme="@style/AppTheme">
1515

1616
<!-- 主页面,程序入口 -->
17-
<activity android:name=".RxOperatorsActivity">
17+
<activity android:name=".module.HomeActivity">
1818
<intent-filter>
1919
<action android:name="android.intent.action.MAIN"/>
2020

2121
<category android:name="android.intent.category.LAUNCHER"/>
2222
</intent-filter>
2323
</activity>
2424

25+
26+
<activity android:name=".module.rxjava2.RxOperatorsActivity">
27+
</activity>
28+
2529
<!-- Create -->
26-
<activity android:name=".module.rxjava2.operators.RxCreateActivity">
30+
<activity android:name=".module.rxjava2.operators.item.RxCreateActivity">
2731
</activity>
2832

2933
<!-- Just -->
30-
<activity android:name=".module.rxjava2.operators.RxJustActivity">
34+
<activity android:name=".module.rxjava2.operators.item.RxJustActivity">
35+
</activity>
36+
37+
<!-- Map -->
38+
<activity android:name=".module.rxjava2.operators.item.RxMapActivity">
39+
</activity>
40+
41+
<!-- FlatMap -->
42+
<activity android:name=".module.rxjava2.operators.item.RxFlatMapActivity">
43+
</activity>
44+
45+
<!-- concatMap -->
46+
<activity android:name=".module.rxjava2.operators.item.RxConcatMapActivity">
3147
</activity>
3248

33-
<!--Map-->
34-
<activity android:name=".module.rxjava2.operators.RxMapActivity">
49+
<!-- take -->
50+
<activity android:name=".module.rxjava2.operators.item.RxTakeActivity">
3551
</activity>
3652

37-
<!--FlatMap-->
38-
<activity android:name=".module.rxjava2.operators.RxFlatMapActivity">
53+
<!-- interval -->
54+
<activity android:name=".module.rxjava2.operators.item.RxIntervalActivity">
3955
</activity>
4056

41-
<!--concatMap-->
42-
<activity android:name=".module.rxjava2.operators.RxConcatMapActivity">
57+
<!-- timer -->
58+
<activity android:name=".module.rxjava2.operators.item.RxTimerActivity">
4359
</activity>
4460

45-
<!--take-->
46-
<activity android:name=".module.rxjava2.operators.RxTakeActivity">
61+
<!-- zip -->
62+
<activity android:name=".module.rxjava2.operators.item.RxZipActivity">
4763
</activity>
4864

49-
<!--interval-->
50-
<activity android:name=".module.rxjava2.operators.RxIntervalActivity">
65+
<!-- doOnNext -->
66+
<activity android:name=".module.rxjava2.operators.item.RxDoOnNextActivity">
5167
</activity>
5268

53-
<!--timer-->
54-
<activity android:name=".module.rxjava2.operators.RxTimerActivity">
69+
<!-- filter -->
70+
<activity android:name=".module.rxjava2.operators.item.RxFilterActivity">
5571
</activity>
5672

57-
<!--zip-->
58-
<activity android:name=".module.rxjava2.operators.RxZipActivity">
73+
<!-- skip -->
74+
<activity android:name=".module.rxjava2.operators.item.RxSkipActivity">
5975
</activity>
6076

61-
<!--doOnNext-->
62-
<activity android:name=".module.rxjava2.operators.RxDoOnNextActivity">
77+
<!-- single -->
78+
<activity android:name=".module.rxjava2.operators.item.RxSingleActivity">
6379
</activity>
6480

65-
<!--filter-->
66-
<activity android:name=".module.rxjava2.operators.RxFilterActivity">
81+
<!--WebView-->
82+
<activity android:name=".module.web.WebViewActivity">
6783
</activity>
6884

6985
</application>
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,30 @@
11
package com.nanchen.rxjava2examples.base;
22

3+
import android.graphics.Color;
4+
import android.os.Build;
35
import android.os.Bundle;
46
import android.support.annotation.LayoutRes;
57
import android.support.annotation.Nullable;
68
import android.support.v7.app.AppCompatActivity;
7-
import android.support.v7.widget.Toolbar;
89
import android.view.View;
9-
import android.widget.TextView;
10+
import android.view.Window;
11+
import android.view.WindowManager;
1012

1113
import com.nanchen.rxjava2examples.R;
14+
import com.nanchen.rxjava2examples.ui.SystemBarTintManager;
1215

13-
import butterknife.BindView;
1416
import butterknife.ButterKnife;
1517

1618
/**
17-
* 封装一个带ToolBar和Butterknife注解的Activity基类
19+
* Activity基类
1820
*
1921
* Author: nanchen
2022
21-
* Date: 2017-06-19 13:51
23+
* Date: 2017-06-20 14:21
2224
*/
2325

2426
public abstract class BaseActivity extends AppCompatActivity {
2527

26-
@BindView(R.id.toolbar)
27-
Toolbar mToolbar;
28-
@BindView(R.id.title_text)
29-
TextView mTitleName;
30-
3128
/**
3229
* 获取布局ID
3330
*
@@ -49,11 +46,6 @@ protected void beforeInit() {
4946
*/
5047
protected abstract void initView(Bundle savedInstanceState);
5148

52-
/**
53-
* 设置标题文本
54-
*/
55-
protected abstract String getSubTitle();
56-
5749
@Override
5850
public void setContentView(@LayoutRes int layoutResID) {
5951
super.setContentView(layoutResID);
@@ -63,42 +55,51 @@ public void setContentView(@LayoutRes int layoutResID) {
6355
@Override
6456
protected void onCreate(@Nullable Bundle savedInstanceState) {
6557
super.onCreate(savedInstanceState);
58+
initSystemBarTint();
6659
beforeInit();
6760
if (getContentViewLayoutID() != 0) {
6861
setContentView(getContentViewLayoutID());
69-
initToolbar();
7062
initView(savedInstanceState);
7163
}
7264
}
7365

74-
private void initToolbar() {
75-
if (mToolbar != null){
76-
mToolbar.setTitle("");
77-
mTitleName.setText(getSubTitle());
78-
if (isShowBack()){
79-
showBack();
80-
}
81-
}
66+
/** 子类可以重写决定是否使用透明状态栏 */
67+
protected boolean translucentStatusBar() {
68+
return false;
8269
}
8370

84-
/**
85-
* 版本号小于21的后退按钮图片
86-
*/
87-
private void showBack(){
88-
//setNavigationIcon必须在setSupportActionBar(toolbar);方法后面加入
89-
setSupportActionBar(mToolbar);
90-
mToolbar.setNavigationIcon(R.mipmap.icon_back);
91-
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
92-
@Override
93-
public void onClick(View v) {
94-
onBackPressed();
71+
/** 设置状态栏颜色 */
72+
protected void initSystemBarTint() {
73+
Window window = getWindow();
74+
if (translucentStatusBar()) {
75+
// 设置状态栏全透明
76+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
77+
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
78+
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
79+
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
80+
window.setStatusBarColor(Color.TRANSPARENT);
81+
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
82+
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
9583
}
96-
});
84+
return;
85+
}
86+
// 沉浸式状态栏
87+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
88+
//5.0以上使用原生方法
89+
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
90+
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
91+
window.setStatusBarColor(setStatusBarColor());
92+
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
93+
//4.4-5.0使用三方工具类,有些4.4的手机有问题,这里为演示方便,不使用沉浸式
94+
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
95+
SystemBarTintManager tintManager = new SystemBarTintManager(this);
96+
tintManager.setStatusBarTintEnabled(true);
97+
tintManager.setStatusBarTintColor(setStatusBarColor());
98+
}
9799
}
98100

99-
100-
protected boolean isShowBack(){
101-
return true;
101+
/** 子类可以重写改变状态栏颜色 */
102+
protected int setStatusBarColor() {
103+
return R.color.blue;
102104
}
103-
104105
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.nanchen.rxjava2examples.base;
2+
3+
import android.os.Bundle;
4+
import android.support.annotation.Nullable;
5+
import android.support.v4.app.Fragment;
6+
import android.view.LayoutInflater;
7+
import android.view.View;
8+
import android.view.ViewGroup;
9+
10+
import butterknife.ButterKnife;
11+
import butterknife.Unbinder;
12+
13+
/**
14+
* Author: nanchen
15+
16+
* Date: 2017-06-20 14:47
17+
*/
18+
19+
public abstract class BaseFragment extends Fragment {
20+
21+
private Unbinder unbinder;
22+
23+
/**
24+
* 获取布局ID
25+
*/
26+
protected abstract int getContentViewLayoutID();
27+
28+
/**
29+
* 界面初始化
30+
*/
31+
protected abstract void init();
32+
33+
@Nullable
34+
@Override
35+
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
36+
if (getContentViewLayoutID() != 0) {
37+
return inflater.inflate(getContentViewLayoutID(), container, false);
38+
} else {
39+
return super.onCreateView(inflater, container, savedInstanceState);
40+
}
41+
}
42+
43+
@Override
44+
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
45+
super.onViewCreated(view, savedInstanceState);
46+
unbinder = ButterKnife.bind(this, view);
47+
init();
48+
}
49+
50+
@Override
51+
public void onDestroyView() {
52+
super.onDestroyView();
53+
unbinder.unbind();
54+
}
55+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.nanchen.rxjava2examples.base;
2+
3+
/**
4+
* BasePresenter
5+
*
6+
* Author: nanchen
7+
8+
* Date: 2017-06-20 14:12
9+
*/
10+
11+
public interface BasePresenter {
12+
void subscribe();
13+
void unSubscribe();
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.nanchen.rxjava2examples.base;
2+
3+
/**
4+
* BaseView
5+
*
6+
* Author: nanchen
7+
8+
* Date: 2017-06-20 14:12
9+
*/
10+
11+
public interface BaseView {
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.nanchen.rxjava2examples.base;
2+
3+
import android.support.v4.app.Fragment;
4+
import android.support.v4.app.FragmentManager;
5+
import android.support.v4.app.FragmentPagerAdapter;
6+
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
10+
/**
11+
* BaseViewPagerAdapter
12+
*
13+
* Author: nanchen
14+
15+
* Date: 2017-06-20 14:47
16+
*/
17+
18+
public class BaseViewPagerAdapter extends FragmentPagerAdapter {
19+
private String[] title;
20+
private List<Fragment> mFragments = new ArrayList<>();
21+
22+
public BaseViewPagerAdapter(FragmentManager fm, String[] titles) {
23+
super(fm);
24+
title = titles;
25+
}
26+
27+
public void addFragment(Fragment fragment) {
28+
mFragments.add(fragment);
29+
}
30+
31+
@Override
32+
public Fragment getItem(int position) {
33+
return mFragments.get(position);
34+
}
35+
36+
@Override
37+
public int getCount() {
38+
return mFragments.size();
39+
}
40+
41+
@Override
42+
public CharSequence getPageTitle(int position) {
43+
return title[position];
44+
}
45+
}

0 commit comments

Comments
 (0)