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 c51672a

Browse files
committed
单独新闻、知识库页面;添加博问功能;
1 parent ba94cba commit c51672a

File tree

43 files changed

+1185
-60
lines changed

Some content is hidden

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

43 files changed

+1185
-60
lines changed

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import android.content.DialogInterface;
55
import android.content.Intent;
66
import android.content.pm.PackageManager;
7-
import android.net.Uri;
87
import android.os.Build;
98
import android.os.Bundle;
109
import android.support.annotation.NonNull;
@@ -46,8 +45,6 @@
4645
import butterknife.BindView;
4746
import io.reactivex.Observable;
4847
import io.reactivex.ObservableSource;
49-
import io.reactivex.android.schedulers.AndroidSchedulers;
50-
import io.reactivex.annotations.SchedulerSupport;
5148
import io.reactivex.functions.Function;
5249
import io.reactivex.schedulers.Schedulers;
5350
import skin.support.SkinCompatManager;
@@ -96,8 +93,8 @@ protected void onCreate(Bundle savedInstanceState) {
9693
*/
9794
protected void debugLogin() {
9895
String url = "cnblogs.com";
99-
String cookie = "5FE90D097CFB91482ACE15CCFD172395D08CD682B8C8C0B525E5D4DCCC8BE15F0B0352B53E79EB268B14E8CF84F14C5217B244B7E8C8DE7C55BCC4053AFEC35EB6F0BEF467E9DD91646C4D28EBEAD3849FEBF091";
100-
String netCoreCookie = "CfDJ8KlpyPucjmhMuZTmH8oiYTPAP02sPZIJTcqQlPvrtRt3ypNxuiLoZhRKsCikysmkCgLvhs3z8gmn-xxTwC8mguAg3zMcZVsMfSAVhq1OiInLG5JT8cDGjOsA5LT4ZlOju7SWXfuivJKlxVkkudJzk1EnjxbNJiilSAi-MmRwjqLyhwcCTAgUlHPljHSTRtAODNAiuXzLKTmSo6plpbWMyHU9PojakONa8JBhI84CtOgUYEqsYjQ9F01QbfG8IBkwkvwnMtKR7wzvPQj7VaFEyUrTlur_r_-JBCe_EkGV6HmX";
96+
String cookie = "C2233C4672D83E274F6855541518CC64234BD6435653410D10A93ABB386C31B2B63EE915CF0AC11A146D49479D241685754BC7481AA33380CE931CC08BCA790A3AA8920B0E9B9DA29C27396EA39EADC6BE41B2BD";
97+
String netCoreCookie = "CfDJ8KlpyPucjmhMuZTmH8oiYTPjMAwCN7fxq5On8NXtiPH1soexQVsDurq8ZBzzXvihmlBKmvwaktbI6djETf6LcgZnKGemP8imggPdaBBKh7D0g3fbKKDt429KA5YxhsxSbqLbs8O6D_Thom1ErthQWCVIUXGFwfbeL4o-CShi0B3wswbHC-f3EG33pINydgs6XTdCQ2I1lP-PpV53K-1KEpcjNO4Dj3pxyKPbxlGWCPY3WOlzywS0D8DFhGyoM8QnTcqhHEFfDXlgilOhIk2BGLS0jj-W-GWW9Mjc2gI9_qsm-h8E-moxc_c_iOprixSVmg";
10198
CookieManager cookieManager = CookieManager.getInstance();
10299
cookieManager.removeAllCookie();
103100
cookieManager.setCookie(url, ".CNBlogsCookie=" + cookie + "; domain=.cnblogs.com; path=/; HttpOnly");

‎module-basic/src/main/java/com/rae/cnblogs/basic/AppImageLoader.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,11 @@ public static void displayAvatar(@Nullable String url, @Nullable ImageView view,
6060

6161
GlideApp.with(view)
6262
.load(url)
63-
.centerCrop()
64-
// .placeholder(resId)
63+
.placeholder(resId)
6564
.error(resId)
66-
// 渐变动画
67-
.transition(DrawableTransitionOptions.withCrossFade(300))
65+
.centerCrop()
66+
.transition(DrawableTransitionOptions.withCrossFade(300)) // 渐变动画
67+
.circleCrop()
6868
.into(view);
6969
}
7070

‎module-basic/src/main/java/com/rae/cnblogs/basic/ContentEntity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ public String getCommentCount() {
120120
return mCommentCount == null ? "0" : mCommentCount;
121121
}
122122

123+
123124
public void setCommentCount(String commentCount) {
124125
mCommentCount = commentCount;
125126
}

‎module-basic/src/main/java/com/rae/cnblogs/basic/RaeUIActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class RaeUIActivity extends QMUIActivity {
2020
@Nullable
2121
Toolbar mToolbar;
2222

23-
TextView mTitleView;
23+
protected TextView mTitleView;
2424

2525

2626
private boolean mIsTranslucentFull = true; // 是否为沉浸式

‎module-blog/src/main/java/com/rae/cnblogs/blog/BloggerActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,6 @@ private void showAvatar(String blogApp, final String url) {
253253
.listener(new RequestListener<Drawable>() {
254254
@Override
255255
public boolean onLoadFailed(@Nullable GlideException e, Object o, Target<Drawable> target, boolean b) {
256-
// 如果没有这张封面图就展示默认的
257-
createAvatarGlide(url).into(mBackgroundView);
258256
return true;
259257
}
260258

@@ -267,6 +265,8 @@ public boolean onResourceReady(Drawable drawable, Object o, Target<Drawable> tar
267265
return false;
268266
}
269267
})
268+
// 如果没有这张封面图就展示默认的
269+
// .error(createAvatarGlide(url))
270270
.into(mBackgroundView);
271271
}
272272

‎module-blog/src/main/java/com/rae/cnblogs/blog/ContentDetailActivity.java

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,23 @@
33
import android.content.Intent;
44
import android.os.Bundle;
55
import android.support.annotation.Nullable;
6+
import android.text.TextUtils;
7+
import android.view.View;
68

79
import com.alibaba.android.arouter.facade.annotation.Route;
810
import com.rae.cnblogs.AppRoute;
11+
import com.rae.cnblogs.ContentEntityConverter;
912
import com.rae.cnblogs.activity.SwipeBackBasicActivity;
1013
import com.rae.cnblogs.basic.ContentEntity;
14+
import com.rae.cnblogs.basic.rx.AndroidObservable;
1115
import com.rae.cnblogs.blog.fragment.BlogDetailFragment;
16+
import com.rae.cnblogs.sdk.ApiDefaultObserver;
17+
import com.rae.cnblogs.sdk.CnblogsApiFactory;
18+
import com.rae.cnblogs.sdk.api.IBlogApi;
19+
import com.rae.cnblogs.sdk.bean.BlogBean;
1220
import com.umeng.socialize.UMShareAPI;
1321

22+
import butterknife.BindView;
1423
import butterknife.OnClick;
1524

1625
/**
@@ -21,12 +30,54 @@
2130
@Route(path = AppRoute.PATH_CONTENT_DETAIL)
2231
public class ContentDetailActivity extends SwipeBackBasicActivity {
2332

33+
@BindView(R2.id.pb_loading)
34+
View mProgressBar;
35+
2436
@Override
2537
protected void onCreate(@Nullable Bundle savedInstanceState) {
2638
super.onCreate(savedInstanceState);
2739
setContentView(R.layout.activity_blog_detail);
2840
// 加载内容区域
2941
ContentEntity entity = getIntent().getParcelableExtra("entity");
42+
// 支持路径跳转
43+
String url = getIntent().getStringExtra("url");
44+
if (entity == null && !TextUtils.isEmpty(url)) {
45+
// 获取详情内容
46+
setTitle(" ");
47+
loadBlogDetail(url);
48+
} else {
49+
initBlogFragment(entity);
50+
}
51+
}
52+
53+
54+
/**
55+
* 加载博文详情
56+
*/
57+
private void loadBlogDetail(final String url) {
58+
IBlogApi blogApi = CnblogsApiFactory.getInstance(this).getBlogApi();
59+
mProgressBar.setVisibility(View.VISIBLE);
60+
AndroidObservable.create(blogApi.getBlogDetail(url))
61+
.with(this)
62+
.subscribe(new ApiDefaultObserver<BlogBean>() {
63+
@Override
64+
protected void onError(String message) {
65+
mProgressBar.setVisibility(View.GONE);
66+
// 加载错误直接加载原文链接
67+
AppRoute.routeToWeb(getContext(), url);
68+
finish();
69+
}
70+
71+
@Override
72+
protected void accept(BlogBean blogBean) {
73+
mProgressBar.setVisibility(View.GONE);
74+
ContentEntity entity = ContentEntityConverter.convert(blogBean);
75+
initBlogFragment(entity);
76+
}
77+
});
78+
}
79+
80+
private void initBlogFragment(ContentEntity entity) {
3081
BlogDetailFragment fragment = BlogDetailFragment.newInstance(entity);
3182
getSupportFragmentManager()
3283
.beginTransaction()

‎module-blog/src/main/java/com/rae/cnblogs/blog/detail/ContentDetailPresenterImpl.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -158,15 +158,15 @@ private Observable<String> createNetworkContentObservable() {
158158
ContentEntity contentEntity = getView().getContentEntity();
159159

160160
// 接口获取
161-
Observable<String> apiObservable = onCreateContentObservable(contentEntity.getId()).onErrorResumeNext(Observable.<String>empty());
161+
Observable<String> apiObservable = onCreateContentObservable(contentEntity.getId());
162162
// 网页获取
163-
Observable<String> webObservable = onCreateWebContentObservable(contentEntity.getId()).onErrorResumeNext(Observable.<String>empty());
163+
Observable<String> webObservable = onCreateWebContentObservable(contentEntity.getId());
164164
// 本地获取
165165
Observable<String> localObservable = createLocalContentObservable().onErrorResumeNext(Observable.<String>empty());
166166

167167
// 保存到本地数据库
168-
apiObservable = withSaveLocalContentObservable(apiObservable);
169-
webObservable = withSaveLocalContentObservable(webObservable);
168+
apiObservable = withSaveLocalContentObservable(apiObservable).onErrorResumeNext(Observable.<String>empty());
169+
webObservable = withSaveLocalContentObservable(webObservable).onErrorResumeNext(Observable.<String>empty());
170170

171171
// 关联顺序
172172
return Observable.concat(apiObservable, webObservable, localObservable).take(1);
@@ -180,10 +180,10 @@ private Observable<String> withSaveLocalContentObservable(Observable<String> obs
180180
return observable.map(new Function<String, String>() {
181181
@Override
182182
public String apply(String content) {
183-
Log.i("rae", "保存内容: " + content.length());
183+
// Log.i("rae", "保存内容: " + content.length());
184184
// 博文内容接口也没有返回内容
185185
if (TextUtils.isEmpty(content))
186-
returnnull;
186+
thrownewNullPointerException("blog content is null!");
187187
updateContent(content); // 内容保存到本地数据库
188188
return content;
189189
}

‎module-blog/src/main/java/com/rae/cnblogs/blog/fragment/BlogDetailFragment.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,9 @@ public void onLoadDataFailed(String message) {
242242
UICompat.failed(getContext(), message);
243243
Log.w("rae","load content failed");
244244
// 通知里面的Fragment处理
245-
mContentWebViewFragment.onLoadDataFailed(message);
245+
// mContentWebViewFragment.onLoadDataFailed(message);
246+
// 加载错误直接加载原文链接
247+
mContentWebViewFragment.loadUrl(mContentEntity.getUrl());
246248
}
247249

248250
@Override

‎module-blog/src/main/java/com/rae/cnblogs/blog/fragment/KbListFragment.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import android.os.Bundle;
44

5+
import com.alibaba.android.arouter.facade.annotation.Route;
6+
import com.rae.cnblogs.AppRoute;
57
import com.rae.cnblogs.blog.comm.ContentListContract;
68
import com.rae.cnblogs.blog.content.KbListPresenterImpl;
79
import com.rae.cnblogs.sdk.bean.CategoryBean;
@@ -11,6 +13,7 @@
1113
* Created by rae on 2018年5月28日.
1214
* Copyright (c) https://github.com/raedev All rights reserved.
1315
*/
16+
@Route(path = AppRoute.PATH_FRAGMENT_KB)
1417
public class KbListFragment extends MultipleTypeBlogListFragment {
1518

1619
public static KbListFragment newInstance(CategoryBean category) {

‎module-blog/src/main/java/com/rae/cnblogs/blog/fragment/NewsListFragment.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import android.os.Bundle;
44

5+
import com.alibaba.android.arouter.facade.annotation.Route;
6+
import com.rae.cnblogs.AppRoute;
57
import com.rae.cnblogs.blog.adapter.ContentItemAdapter;
68
import com.rae.cnblogs.blog.comm.ContentListContract;
79
import com.rae.cnblogs.blog.content.NewsListPresenterImpl;
@@ -12,6 +14,7 @@
1214
* Created by rae on 2018年5月26日.
1315
* Copyright (c) https://github.com/raedev All rights reserved.
1416
*/
17+
@Route(path = AppRoute.PATH_FRAGMENT_NEWS)
1518
public class NewsListFragment extends MultipleTypeBlogListFragment {
1619

1720
public static NewsListFragment newInstance(CategoryBean category) {

0 commit comments

Comments
(0)

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