Skip to content

Commit 9b99e3a

Browse files
committed
首页改版,添加闪存以及发现功能
1 parent 748eeb5 commit 9b99e3a

16 files changed

+2683
-54
lines changed

Diff for: app/src/main/java/android/support/design/widget/DesignTabLayout.java

+2,269
Large diffs are not rendered by default.

Diff for: app/src/main/java/com/rae/cnblogs/activity/MainActivity.java

+6-18
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,7 @@
1717
import android.widget.ImageView;
1818
import android.widget.TextView;
1919

20-
import com.avos.avoscloud.AVException;
21-
import com.avos.avoscloud.feedback.Comment;
22-
import com.avos.avoscloud.feedback.FeedbackThread;
2320
import com.rae.cnblogs.AppMobclickAgent;
24-
import com.rae.cnblogs.AppRoute;
2521
import com.rae.cnblogs.AppStatusBar;
2622
import com.rae.cnblogs.AppUI;
2723
import com.rae.cnblogs.R;
@@ -32,15 +28,14 @@
3228
import com.rae.cnblogs.dialog.IAppDialogClickListener;
3329
import com.rae.cnblogs.dialog.impl.HintCardDialog;
3430
import com.rae.cnblogs.dialog.impl.VersionUpdateDialog;
35-
import com.rae.cnblogs.fragment.BlogTypeListFragment;
31+
import com.rae.cnblogs.fragment.DiscoverFragment;
3632
import com.rae.cnblogs.fragment.HomeFragment;
3733
import com.rae.cnblogs.fragment.MineFragment;
34+
import com.rae.cnblogs.fragment.SNSFragment;
3835
import com.rae.cnblogs.message.TabEvent;
3936
import com.rae.cnblogs.message.ThemeChangedEvent;
4037
import com.rae.cnblogs.sdk.ApiDefaultObserver;
4138
import com.rae.cnblogs.sdk.CnblogsApiFactory;
42-
import com.rae.cnblogs.sdk.bean.BlogType;
43-
import com.rae.cnblogs.sdk.bean.CategoryBean;
4439
import com.rae.cnblogs.sdk.bean.VersionInfo;
4540
import com.rae.cnblogs.service.CnblogsService;
4641
import com.rae.cnblogs.service.CnblogsServiceBinder;
@@ -50,8 +45,6 @@
5045
import org.greenrobot.eventbus.EventBus;
5146
import org.greenrobot.eventbus.Subscribe;
5247

53-
import java.util.List;
54-
5548
import butterknife.BindView;
5649

5750
public class MainActivity extends BaseActivity {
@@ -89,18 +82,14 @@ public void onServiceDisconnected(ComponentName name) {
8982
// 绑定服务
9083
bindService(new Intent(this, CnblogsService.class), mServiceConnection, BIND_AUTO_CREATE);
9184
mFragmentAdapter = new RaeFragmentAdapter(getSupportFragmentManager());
92-
CategoryBean kb = new CategoryBean();
93-
kb.setType("kb");
94-
kb.setName(getString(R.string.tab_library));
9585

96-
CategoryBean news = new CategoryBean();
97-
news.setType("news");
98-
news.setName(getString(R.string.tab_news));
9986

10087
// 初始化TAB
10188
addTab(R.string.tab_home, R.drawable.tab_home, HomeFragment.newInstance());
102-
addTab(R.string.tab_news, R.drawable.tab_news, BlogTypeListFragment.newInstance(1, news, BlogType.NEWS));
103-
addTab(R.string.tab_library, R.drawable.tab_library, BlogTypeListFragment.newInstance(2, kb, BlogType.KB));
89+
// addTab(R.string.tab_sns, R.drawable.tab_news, BlogTypeListFragment.newInstance(1, news, BlogType.NEWS));
90+
// addTab(R.string.tab_discover, R.drawable.tab_library, BlogTypeListFragment.newInstance(2, kb, BlogType.KB));
91+
addTab(R.string.tab_sns, R.drawable.tab_news, SNSFragment.newInstance());
92+
addTab(R.string.tab_discover, R.drawable.tab_library, DiscoverFragment.newInstance());
10493
addTab(R.string.tab_mine, R.drawable.tab_mine, MineFragment.newInstance());
10594

10695
mViewPager.setOffscreenPageLimit(4);
@@ -160,7 +149,6 @@ protected void accept(VersionInfo versionInfo) {
160149
}
161150

162151

163-
164152
/**
165153
* 申请权限
166154
*/

Diff for: app/src/main/java/com/rae/cnblogs/fragment/BlogListFragment.java

+10-7
Original file line numberDiff line numberDiff line change
@@ -244,16 +244,19 @@ public void refreshCategory(CategoryBean category) {
244244
@Subscribe
245245
public void onTabEvent(TabEvent event) {
246246
if (event.getPosition() == getArguments().getInt("position")) {
247-
mRecyclerView.post(new Runnable() {
248-
@Override
249-
public void run() {
250-
scrollToTop();
251-
252-
}
253-
});
247+
performTabEvent();
254248
}
255249
}
256250

251+
protected void performTabEvent() {
252+
mRecyclerView.post(new Runnable() {
253+
@Override
254+
public void run() {
255+
scrollToTop();
256+
}
257+
});
258+
}
259+
257260
@Subscribe
258261
public void onEvent(ThemeChangedEvent event) {
259262
if (mItemAdapter != null)
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,16 @@
11
package com.rae.cnblogs.fragment;
22

33
import android.os.Bundle;
4-
import android.support.annotation.Nullable;
5-
import android.view.View;
6-
import android.widget.TextView;
74

8-
import com.rae.cnblogs.AppRoute;
9-
import com.rae.cnblogs.R;
105
import com.rae.cnblogs.sdk.bean.BlogType;
116
import com.rae.cnblogs.sdk.bean.CategoryBean;
127

13-
import butterknife.BindView;
14-
import butterknife.OnClick;
15-
168
/**
179
* 博客类型的列表
1810
* Created by ChenRui on 2017/1/18 23:49.
1911
*/
2012
public class BlogTypeListFragment extends BlogListFragment {
2113

22-
@BindView(R.id.tv_title)
23-
TextView mTitleView;
24-
2514
public static BlogTypeListFragment newInstance(int position, CategoryBean category, BlogType type) {
2615
Bundle args = new Bundle();
2716
args.putParcelable("category", category);
@@ -33,23 +22,7 @@ public static BlogTypeListFragment newInstance(int position, CategoryBean catego
3322
}
3423

3524
@Override
36-
protected int getLayoutId() {
37-
return R.layout.fm_kb_list;
38-
}
39-
25+
protected void performTabEvent() {
4026

41-
@OnClick(R.id.img_search)
42-
public void onSearchClick() {
43-
if (mBlogType == BlogType.NEWS)
44-
AppRoute.jumpToSearchNews(getContext());
45-
if (mBlogType == BlogType.KB)
46-
AppRoute.jumpToSearchKb(getContext());
47-
}
48-
49-
50-
@Override
51-
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
52-
super.onViewCreated(view, savedInstanceState);
53-
mTitleView.setText(getTitle());
5427
}
5528
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
package com.rae.cnblogs.fragment;
2+
3+
import android.content.Context;
4+
import android.os.Bundle;
5+
import android.support.annotation.Nullable;
6+
import android.support.design.widget.DesignTabLayout;
7+
import android.support.v4.app.Fragment;
8+
import android.support.v4.app.FragmentManager;
9+
import android.support.v4.app.FragmentStatePagerAdapter;
10+
import android.view.View;
11+
12+
import com.rae.cnblogs.AppRoute;
13+
import com.rae.cnblogs.R;
14+
import com.rae.cnblogs.message.TabEvent;
15+
import com.rae.cnblogs.sdk.bean.BlogType;
16+
import com.rae.cnblogs.sdk.bean.CategoryBean;
17+
import com.rae.cnblogs.widget.RaeViewPager;
18+
19+
import org.greenrobot.eventbus.EventBus;
20+
import org.greenrobot.eventbus.Subscribe;
21+
22+
import butterknife.BindView;
23+
import butterknife.OnClick;
24+
25+
/**
26+
* 发现
27+
* Created by ChenRui on 2017/10/26 0026 23:29.
28+
*/
29+
public class DiscoverFragment extends BaseFragment {
30+
31+
@BindView(R.id.tab_layout)
32+
DesignTabLayout mTabLayout;
33+
@BindView(R.id.view_pager)
34+
RaeViewPager mViewPager;
35+
private DiscoverFragmentAdapter mAdapter;
36+
37+
public static DiscoverFragment newInstance() {
38+
return new DiscoverFragment();
39+
}
40+
41+
@Override
42+
protected int getLayoutId() {
43+
return R.layout.fm_discover;
44+
}
45+
46+
@Override
47+
public void onCreate(@Nullable Bundle savedInstanceState) {
48+
super.onCreate(savedInstanceState);
49+
EventBus.getDefault().register(this);
50+
}
51+
52+
@Override
53+
public void onDestroy() {
54+
super.onDestroy();
55+
EventBus.getDefault().unregister(this);
56+
}
57+
58+
59+
@Override
60+
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
61+
super.onViewCreated(view, savedInstanceState);
62+
mAdapter = new DiscoverFragmentAdapter(view.getContext(), getChildFragmentManager());
63+
mViewPager.setAdapter(mAdapter);
64+
// 相互关联
65+
mViewPager.addOnPageChangeListener(new DesignTabLayout.TabLayoutOnPageChangeListener(mTabLayout));
66+
mTabLayout.addOnTabSelectedListener(new DesignTabLayout.ViewPagerOnTabSelectedListener(mViewPager));
67+
mTabLayout.addOnTabSelectedListener(new DefaultOnTabSelectedListener());
68+
mTabLayout.getTabAt(0).select();
69+
}
70+
71+
72+
@OnClick(R.id.img_search)
73+
public void onSearchClick() {
74+
int position = mTabLayout.getSelectedTabPosition();
75+
if (position == 0)
76+
AppRoute.jumpToSearchNews(getContext());
77+
if (position == 1)
78+
AppRoute.jumpToSearchKb(getContext());
79+
}
80+
81+
@Subscribe
82+
public void onTabEvent(TabEvent event) {
83+
84+
// 执行刷新动作
85+
if (event.getPosition() == 2) {
86+
BlogTypeListFragment fragment = (BlogTypeListFragment) mAdapter.getItem(mViewPager.getCurrentItem());
87+
if (fragment != null && fragment.isAdded() && !fragment.isDetached()) {
88+
fragment.scrollToTop();
89+
}
90+
}
91+
}
92+
93+
public static class DiscoverFragmentAdapter extends FragmentStatePagerAdapter {
94+
95+
private final BlogTypeListFragment mNewFragment;
96+
private final BlogTypeListFragment mKBFragment;
97+
98+
public DiscoverFragmentAdapter(Context context, FragmentManager fm) {
99+
super(fm);
100+
CategoryBean kb = new CategoryBean();
101+
kb.setType("kb");
102+
kb.setName(context.getString(R.string.tab_library));
103+
104+
CategoryBean news = new CategoryBean();
105+
news.setType("news");
106+
news.setName(context.getString(R.string.tab_news));
107+
108+
mNewFragment = BlogTypeListFragment.newInstance(30, news, BlogType.NEWS);
109+
mKBFragment = BlogTypeListFragment.newInstance(31, kb, BlogType.KB);
110+
}
111+
112+
@Override
113+
public Fragment getItem(int position) {
114+
if (position == 0)
115+
return mNewFragment;
116+
else
117+
return mKBFragment;
118+
}
119+
120+
@Override
121+
public int getCount() {
122+
return 2;
123+
}
124+
}
125+
126+
class DefaultOnTabSelectedListener implements DesignTabLayout.OnTabSelectedListener {
127+
128+
@Override
129+
public void onTabSelected(DesignTabLayout.Tab tab) {
130+
int count = mTabLayout.getTabCount();
131+
for (int i = 0; i < count; i++) {
132+
DesignTabLayout.Tab tabAt = mTabLayout.getTabAt(i);
133+
if (tabAt == null) continue;
134+
tabAt.setTextStyle(tab == tabAt ? 1 : 0);
135+
}
136+
}
137+
138+
@Override
139+
public void onTabUnselected(DesignTabLayout.Tab tab) {
140+
141+
}
142+
143+
@Override
144+
public void onTabReselected(DesignTabLayout.Tab tab) {
145+
onTabSelected(tab);
146+
}
147+
}
148+
149+
}

0 commit comments

Comments
 (0)