Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Jun 5, 2024. It is now read-only.

Commit 2533868

Browse files
committed
专栏
1 parent 6995e20 commit 2533868

File tree

26 files changed

+616
-155
lines changed

26 files changed

+616
-155
lines changed

‎app/src/main/java/com/rae/cnblogs/MainActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ protected void onCreate(Bundle savedInstanceState) {
9393
*/
9494
protected void debugLogin() {
9595
String url = "cnblogs.com";
96-
String cookie = "C2233C4672D83E274F6855541518CC64234BD6435653410D10A93ABB386C31B2B63EE915CF0AC11A146D49479D241685754BC7481AA33380CE931CC08BCA790A3AA8920B0E9B9DA29C27396EA39EADC6BE41B2BD";
97-
String netCoreCookie = "CfDJ8KlpyPucjmhMuZTmH8oiYTPjMAwCN7fxq5On8NXtiPH1soexQVsDurq8ZBzzXvihmlBKmvwaktbI6djETf6LcgZnKGemP8imggPdaBBKh7D0g3fbKKDt429KA5YxhsxSbqLbs8O6D_Thom1ErthQWCVIUXGFwfbeL4o-CShi0B3wswbHC-f3EG33pINydgs6XTdCQ2I1lP-PpV53K-1KEpcjNO4Dj3pxyKPbxlGWCPY3WOlzywS0D8DFhGyoM8QnTcqhHEFfDXlgilOhIk2BGLS0jj-W-GWW9Mjc2gI9_qsm-h8E-moxc_c_iOprixSVmg";
96+
String cookie = "E81A93EE56CCF35A38D82BB24CDF03234B87BC295CEE9EED1801BCF87F3AEE26D826F58CB7A79F86239D5591DCA114DCC93B8B1C66ABCBCD66A55F425AE40C6C20FB1EA0C2F98469AA461ECBFE461D963D52788D";
97+
String netCoreCookie = "CfDJ8KlpyPucjmhMuZTmH8oiYTMICe85qPfEpOMJev01gxVvtTs9P8v2OGsOwmyNDNmQMqDEV81TTH-xpa9qYhV95LJjKOzd1ajoz-e4L5z4NUBePK0l2OPEEAB1y4PKeIL23b46_0JNHrVmUZb4Dn7t0530503qC2xcL57c_Dn6-Rb6eE41UdKPSyBT70LUP9-4AyAKjTLuL3kay__dEpNeEiHEDRa-rIfvwuK3SeihCUhP8KU9Jo8ruk5RQ2EvqcArEJiJ7BahZM_Abbg6OPRxbIMt7vDSU-S5PMbYZlgOdYdV";
9898
CookieManager cookieManager = CookieManager.getInstance();
9999
cookieManager.removeAllCookie();
100100
cookieManager.setCookie(url, ".CNBlogsCookie=" + cookie + "; domain=.cnblogs.com; path=/; HttpOnly");
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.rae.cnblogs.discover;
2+
3+
import com.rae.cnblogs.PageObservable;
4+
import com.rae.cnblogs.basic.IPageView;
5+
import com.rae.cnblogs.basic.IPresenter;
6+
import com.rae.cnblogs.basic.rx.LifecycleProvider;
7+
import com.rae.cnblogs.sdk.ApiDefaultObserver;
8+
9+
import java.util.List;
10+
11+
public abstract class AntPageObservable<T> extends PageObservable<T> {
12+
13+
public AntPageObservable(IPageView view, IPresenter presenter) {
14+
super(view, presenter);
15+
}
16+
17+
public AntPageObservable(IPageView view, LifecycleProvider provider, int startIndex) {
18+
super(view, provider, startIndex);
19+
}
20+
21+
@Override
22+
protected ApiDefaultObserver<List<T>> createObserver() {
23+
return new AntSdkDefaultObserver<List<T>>() {
24+
@Override
25+
protected void onError(String message) {
26+
notifyError(message);
27+
}
28+
29+
@Override
30+
protected void accept(List<T> data) {
31+
notifyData(data);
32+
}
33+
34+
@Override
35+
protected void onLoginExpired() {
36+
notifyLoginExpired();
37+
}
38+
};
39+
}
40+
}
Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,27 @@
11
package com.rae.cnblogs.discover;
22

3+
import com.antcode.sdk.AntSessionManager;
34
import com.rae.cnblogs.sdk.ApiDefaultObserver;
45

56
/**
6-
* ant sdk observer
7+
* ant sdk default observer
8+
*
79
* @param <T>
810
*/
911
public abstract class AntSdkDefaultObserver<T> extends ApiDefaultObserver<T> {
12+
13+
@Override
14+
public void onError(Throwable e) {
15+
if (e.getMessage().contains("登录失效")) {
16+
clearLoginToken();
17+
onLoginExpired();
18+
return;
19+
}
20+
super.onError(e);
21+
}
22+
23+
@Override
24+
protected void clearLoginToken() {
25+
AntSessionManager.getDefault().clear();
26+
}
1027
}

‎module-discover/src/main/java/com/rae/cnblogs/discover/RaeBaseQuickAdapter.java

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,18 @@
33
import android.content.Context;
44
import android.support.annotation.NonNull;
55
import android.support.annotation.Nullable;
6-
import android.view.View;
76
import android.view.ViewGroup;
87

98
import com.chad.library.adapter.base.BaseQuickAdapter;
109
import com.chad.library.adapter.base.BaseViewHolder;
11-
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
1210
import com.rae.cnblogs.widget.PlaceholderView;
1311

1412
import java.util.List;
1513

1614
public abstract class RaeBaseQuickAdapter<T, K extends BaseViewHolder> extends BaseQuickAdapter<T, K> {
1715

1816
@NonNull
19-
private PlaceholderView mPlaceholderView;
17+
protected PlaceholderView mPlaceholderView;
2018

2119
public RaeBaseQuickAdapter(Context context, int layoutResId, @Nullable List<T> data) {
2220
super(layoutResId, data);
@@ -44,16 +42,6 @@ protected void initView(Context context) {
4442
mPlaceholderView = new PlaceholderView(context);
4543
mPlaceholderView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
4644
setEmptyView(mPlaceholderView);
47-
48-
}
49-
50-
@Override
51-
protected K createBaseViewHolder(View view) {
52-
if (view == getEmptyView()) {
53-
int padding = QMUIDisplayHelper.dp2px(view.getContext(), 20);
54-
view.setPadding(padding, padding, padding, padding);
55-
}
56-
return super.createBaseViewHolder(view);
5745
}
5846

5947
@Override
@@ -62,8 +50,8 @@ public void setNewData(@Nullable List<T> data) {
6250
dismissLoading();
6351
}
6452

65-
private void dismissLoading() {
66-
mPlaceholderView.empty();
53+
public void dismissLoading() {
54+
mPlaceholderView.dismiss();
6755
}
6856

6957
public void showLoading() {
@@ -75,4 +63,6 @@ public void showEmpty(String message) {
7563
mPlaceholderView.empty(message);
7664
notifyDataSetChanged();
7765
}
66+
67+
7868
}

‎module-discover/src/main/java/com/rae/cnblogs/discover/fragment/AntColumnFragment.java

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,17 @@
44
import android.os.Bundle;
55
import android.support.annotation.NonNull;
66
import android.support.annotation.Nullable;
7+
import android.support.v4.content.ContextCompat;
78
import android.support.v4.widget.SwipeRefreshLayout;
89
import android.support.v7.widget.LinearLayoutManager;
910
import android.support.v7.widget.RecyclerView;
1011
import android.view.View;
12+
import android.widget.FrameLayout;
1113

1214
import com.antcode.sdk.model.AntColumnInfo;
1315
import com.chad.library.adapter.base.BaseQuickAdapter;
1416
import com.chad.library.adapter.base.BaseViewHolder;
17+
import com.rae.cnblogs.UICompat;
1518
import com.rae.cnblogs.basic.BasicFragment;
1619
import com.rae.cnblogs.discover.R;
1720
import com.rae.cnblogs.discover.R2;
@@ -27,6 +30,8 @@
2730
public class AntColumnFragment extends BasicFragment implements IAntColumnContract.View {
2831

2932
private int mType;
33+
@Nullable
34+
private AntLoginPlaceHolderFragment mLoginFragment;
3035

3136
public static AntColumnFragment newInstance(int type) {
3237

@@ -43,6 +48,9 @@ public static AntColumnFragment newInstance(int type) {
4348
@BindView(R2.id.refresh_layout)
4449
SwipeRefreshLayout mRefreshLayout;
4550

51+
@BindView(R2.id.placeholder)
52+
FrameLayout mPlaceholderLayout;
53+
4654
AntColumnAdapter mAdapter;
4755

4856
IAntColumnContract.Presenter mPresenter;
@@ -67,7 +75,8 @@ protected void onReceiveArguments(@NonNull Bundle arguments) {
6775
@Override
6876
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
6977
super.onViewCreated(view, savedInstanceState);
70-
mAdapter = new AntColumnAdapter(getContext(), R.layout.item_discover_home_column);
78+
int itemLayoutId = mType == IAntColumnContract.TYPE_MY ? R.layout.item_discover_mine_column : R.layout.item_discover_home_column;
79+
mAdapter = new AntColumnAdapter(getContext(), itemLayoutId);
7180
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
7281
mRecyclerView.setAdapter(mAdapter);
7382
mRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@@ -93,6 +102,15 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
93102
mPresenter.start();
94103
}
95104

105+
@Override
106+
public void onDestroy() {
107+
super.onDestroy();
108+
if (mPresenter != null) {
109+
mPresenter.destroy();
110+
mPresenter = null;
111+
}
112+
}
113+
96114
@Override
97115
public int getType() {
98116
return mType;
@@ -113,14 +131,35 @@ public void onEmptyData(String msg) {
113131

114132
@Override
115133
public void onLoadData(List<AntColumnInfo> data) {
134+
dismissLogin();
116135
mRefreshLayout.setRefreshing(false);
117136
mAdapter.loadMoreComplete();
118137
mAdapter.replaceData(data);
119138
}
120139

140+
private void dismissLogin() {
141+
UICompat.setVisibility(mPlaceholderLayout, false);
142+
}
143+
121144
@Override
122145
public void onLoginExpired() {
123-
// 显示登录提示
146+
UICompat.setVisibility(mPlaceholderLayout, true);
147+
mRefreshLayout.setRefreshing(false);
148+
mAdapter.dismissLoading();
149+
150+
// 登录失败,切换Fragment显示
151+
if (mLoginFragment == null) {
152+
mLoginFragment = AntLoginPlaceHolderFragment.newInstance();
153+
}
154+
155+
if (mLoginFragment != null) {
156+
getChildFragmentManager()
157+
.beginTransaction()
158+
.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out)
159+
.replace(R.id.placeholder, mLoginFragment)
160+
.commitNow();
161+
}
162+
124163
}
125164

126165

@@ -130,9 +169,16 @@ class AntColumnAdapter extends RaeBaseQuickAdapter<AntColumnInfo, BaseViewHolder
130169
super(context, layoutId, null);
131170
}
132171

172+
@Override
173+
protected void initView(Context context) {
174+
super.initView(context);
175+
mPlaceholderView.setBackgroundColor(ContextCompat.getColor(context, R.color.white));
176+
}
177+
133178
@Override
134179
protected void convert(BaseViewHolder helper, AntColumnInfo item) {
135-
AntColumnHolder holder = new AntColumnHolder(helper);
180+
int itemType = getLayoutId() == R.layout.item_discover_mine_column ? AntColumnHolder.TYPE_MINE : AntColumnHolder.TYPE_NORMAL;
181+
AntColumnHolder holder = new AntColumnHolder(helper, itemType);
136182
holder.bindData(item);
137183
}
138184
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.rae.cnblogs.discover.fragment;
2+
3+
import android.os.Bundle;
4+
5+
import com.antcode.sdk.model.AntUserInfo;
6+
import com.rae.cnblogs.AppRoute;
7+
import com.rae.cnblogs.basic.BasicFragment;
8+
import com.rae.cnblogs.discover.R;
9+
import com.rae.cnblogs.discover.R2;
10+
11+
import org.greenrobot.eventbus.EventBus;
12+
13+
import butterknife.OnClick;
14+
15+
/**
16+
* 登录替代页面
17+
*/
18+
public class AntLoginPlaceHolderFragment extends BasicFragment {
19+
20+
public static AntLoginPlaceHolderFragment newInstance() {
21+
22+
Bundle args = new Bundle();
23+
24+
AntLoginPlaceHolderFragment fragment = new AntLoginPlaceHolderFragment();
25+
fragment.setArguments(args);
26+
return fragment;
27+
}
28+
29+
@Override
30+
protected int getLayoutId() {
31+
return R.layout.view_ant_login_placeholder;
32+
}
33+
34+
@OnClick(R2.id.btn_placeholder_login)
35+
public void OnLoginClick() {
36+
// AntUserInfo m = new AntUserInfo();
37+
// m.setNickName("test user info");
38+
// EventBus.getDefault().post(m);
39+
AppRoute.routeToAntUserAuth(getContext());
40+
}
41+
}

‎module-discover/src/main/java/com/rae/cnblogs/discover/fragment/DiscoverFragment.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.chad.library.adapter.base.loadmore.LoadMoreView;
2222
import com.chad.library.adapter.base.loadmore.SimpleLoadMoreView;
2323
import com.rae.cnblogs.AppRoute;
24+
import com.rae.cnblogs.UICompat;
2425
import com.rae.cnblogs.basic.AppImageLoader;
2526
import com.rae.cnblogs.basic.BasicFragment;
2627
import com.rae.cnblogs.discover.BannerImageLoader;
@@ -75,8 +76,6 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
7576
// init views
7677
mAdapter = new DiscoverHomeAdapter();
7778
mAdapter.setEnableLoadMore(true);
78-
LoadMoreView loadMoreView = new SimpleLoadMoreView();
79-
mAdapter.setLoadMoreView(loadMoreView);
8079
mAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
8180
@Override
8281
public void onLoadMoreRequested() {
@@ -102,7 +101,7 @@ public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
102101
int viewType = item.getItemType();
103102
// 查看更多
104103
if (viewType == DiscoverItem.TYPE_SESSION) {
105-
AppRoute.routeToAntColumn(view.getContext());
104+
AppRoute.routeToAntColumn(view.getContext(), 1);
106105
}
107106
Object data = item.getData();
108107
if (data instanceof AntColumnInfo) {
@@ -136,7 +135,7 @@ public void onPageSelected(int position) {
136135
banner.setOnBannerListener(new OnBannerListener() {
137136
@Override
138137
public void OnBannerClick(int position) {
139-
AntAdInfo adInfo = ads.get(position);
138+
AntAdInfo adInfo = ads.get(position % ads.size());
140139
AppRoute.autoRoute(getContext(), adInfo.getType(), adInfo.getUrl(), adInfo.getData());
141140
}
142141
});
@@ -147,6 +146,7 @@ public void OnBannerClick(int position) {
147146
mBanner = banner;
148147
}
149148

149+
UICompat.setVisibility(mBanner, ads.size() > 0);
150150
mBanner.setImages(ads).start();
151151
}
152152

‎module-discover/src/main/java/com/rae/cnblogs/discover/holder/AntColumnHolder.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414

1515
public class AntColumnHolder {
1616

17+
public static int TYPE_NORMAL = 0;
18+
public static int TYPE_MINE = 1;
19+
1720
@BindView(R2.id.img_logo)
1821
ImageView logoView;
1922
@BindView(R2.id.tv_title)
@@ -27,13 +30,24 @@ public class AntColumnHolder {
2730
@BindView(R2.id.tv_recommendation)
2831
TextView recommendationView;
2932

33+
private int itemType;
34+
3035

3136
public AntColumnHolder(BaseViewHolder holder) {
37+
this(holder, TYPE_NORMAL);
38+
}
39+
40+
public AntColumnHolder(BaseViewHolder holder, int itemType) {
3241
ButterKnife.bind(this, holder.itemView);
42+
this.itemType = itemType;
3343
}
3444

3545
public void bindData(AntColumnInfo data) {
36-
AppImageLoader.display(data.getLogo(), logoView);
46+
if (itemType == TYPE_MINE) {
47+
AppImageLoader.display(data.getAvatar(), logoView);
48+
} else {
49+
AppImageLoader.display(data.getLogo(), logoView);
50+
}
3751
titleView.setText(data.getTitle());
3852
numberView.setText(numberView.getResources().getString(R.string.article_num_format, data.getArticleNum()));
3953
authorView.setText(String.format("%s %s", data.getAntAuthor().getNickname(), data.getAntAuthor().getTitle()));

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /