Skip to content
This repository was archived by the owner on Jun 5, 2024. It is now read-only.

Commit d4d7dc1

Browse files
committed
完成基本逻辑和界面移植
1 parent e1c4f03 commit d4d7dc1

File tree

16 files changed

+510
-255
lines changed

16 files changed

+510
-255
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2-
package="com.rae.cnblogs">
2+
package="com.rae.cnblogs">
33

44
<application
55
android:allowBackup="true"
66
android:label="@string/app_name"
77
android:supportsRtl="true"
88
android:theme="@style/AppTheme">
99
<!--主界面-->
10-
<activity android:name=".MainActivity">
10+
<activity
11+
android:name=".MainActivity"
12+
android:configChanges="keyboard|keyboardHidden|orientation"
13+
android:screenOrientation="portrait">
1114

1215
</activity>
1316
</application>
Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,30 @@
11
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2-
package="com.rae.cnblogs.blog">
2+
package="com.rae.cnblogs.blog">
33

44
<application
55
android:allowBackup="true"
66
android:fullBackupContent="true">
77

8-
<activity android:name=".ContentDetailActivity" />
8+
<activity android:name=".ContentDetailActivity"/>
99
<activity
1010
android:name=".CommentActivity"
11-
android:label="@string/label_comment" />
11+
android:label="@string/label_comment"/>
1212
<activity
1313
android:name=".FavoritesActivity"
14-
android:label="@string/my_favorites" />
14+
android:label="@string/my_favorites"/>
1515
<activity
1616
android:name=".HistoryActivity"
17-
android:label="@string/history" />
17+
android:label="@string/history"/>
1818
<activity
1919
android:name=".CategoryActivity"
20-
android:label="@string/title_category" />
20+
android:label="@string/title_category"/>
21+
22+
<activity
23+
android:name=".BloggerActivity"/>
2124

2225
<service
2326
android:name=".CnblogsService"
2427
android:exported="false"
25-
android:label="@string/service_name" />
28+
android:label="@string/service_name"/>
2629
</application>
2730
</manifest>

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

Lines changed: 32 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import android.support.design.widget.RaeTabLayout;
88
import android.support.v4.content.ContextCompat;
99
import android.support.v4.view.ViewPager;
10-
import android.support.v7.widget.Toolbar;
1110
import android.text.TextUtils;
1211
import android.view.View;
1312
import android.view.animation.Animation;
@@ -30,16 +29,17 @@
3029
import com.rae.cnblogs.basic.GlideRequest;
3130
import com.rae.cnblogs.blog.blogger.BloggerContract;
3231
import com.rae.cnblogs.blog.blogger.BloggerPresenterImpl;
32+
import com.rae.cnblogs.blog.fragment.FeedListFragment;
3333
import com.rae.cnblogs.blog.fragment.MultipleTypeBlogListFragment;
3434
import com.rae.cnblogs.sdk.UserProvider;
3535
import com.rae.cnblogs.sdk.bean.BlogCommentBean;
3636
import com.rae.cnblogs.sdk.bean.CategoryBean;
3737
import com.rae.cnblogs.sdk.bean.FriendsInfoBean;
3838
import com.rae.cnblogs.sdk.event.UserInfoEvent;
39+
import com.rae.cnblogs.theme.ThemeCompat;
3940
import com.rae.cnblogs.widget.RaeSkinDesignTabLayout;
4041
import com.rae.swift.app.RaeFragmentAdapter;
41-
import com.rae.cnblogs.blog.R;
42-
import com.rae.cnblogs.blog.R2;
42+
4343
import org.greenrobot.eventbus.EventBus;
4444

4545
import java.util.ArrayList;
@@ -77,8 +77,8 @@ public class BloggerActivity extends SwipeBackBasicActivity implements BloggerCo
7777
@BindView(R2.id.btn_blogger_follow)
7878
Button mFollowView;
7979

80-
@BindView(R2.id.tool_bar)
81-
Toolbar mToolbar;
80+
// @BindView(R2.id.tool_bar)
81+
// Toolbar mToolbar;
8282

8383
@BindView(R2.id.vp_blogger)
8484
ViewPager mViewPager;
@@ -92,7 +92,7 @@ public class BloggerActivity extends SwipeBackBasicActivity implements BloggerCo
9292
@BindView(R2.id.layout_account_follow)
9393
View mFollowLayout;
9494

95-
@BindView(R2.id.tv_title)
95+
@BindView(R2.id.tv_title_1)
9696
TextView mTitleView;
9797

9898
@BindView(R2.id.app_bar)
@@ -104,18 +104,13 @@ public class BloggerActivity extends SwipeBackBasicActivity implements BloggerCo
104104
@BindView(R2.id.pb_blogger_follow)
105105
View mFollowProgressBar;
106106

107-
// @BindView(R2.id.img_alpha)
108-
// ImageView mAlphaImageView;
109-
110-
// @BindView(R2.id.layout_blogger)
111-
// BloggerLayout mBloggerLayout;
112107

113108
String mBlogApp;
114109

115110
@Nullable
116111
private FriendsInfoBean mUserInfo;
117112
private BloggerContract.Presenter mBloggerPresenter;
118-
// private FeedListFragment mFeedListFragment;
113+
private FeedListFragment mFeedListFragment;
119114
private MultipleTypeBlogListFragment mBlogListFragment;
120115

121116
@Override
@@ -125,7 +120,6 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
125120
ButterKnife.bind(this);
126121
mFollowView.setEnabled(false);
127122

128-
// showHomeAsUp(mToolbar);
129123
mBlogApp = getIntent().getStringExtra("blogApp");
130124

131125
if (mBlogApp == null) {
@@ -138,7 +132,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
138132
CategoryBean category = new CategoryBean();
139133
category.setCategoryId(getBlogApp()); // 这里设置blogApp
140134

141-
// mFeedListFragment = FeedListFragment.newInstance(getBlogApp());
135+
mFeedListFragment = FeedListFragment.newInstance(getBlogApp());
142136
mBlogListFragment = mBlogListFragment.newInstance(category);
143137

144138
adapter.add(getString(R.string.feed), mFeedListFragment);
@@ -148,7 +142,9 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
148142
mTabLayout.setupWithViewPager(mViewPager);
149143

150144
mTabLayout.addOnTabSelectedListener(this);
151-
145+
if (getSupportActionBar() != null) {
146+
getSupportActionBar().setTitle("");
147+
}
152148
mAppBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
153149
final Animation mAnimation = AnimationUtils.loadAnimation(getContext(), android.R.anim.fade_in);
154150

@@ -158,20 +154,16 @@ public void onStateChanged(AppBarLayout appBarLayout, State state) {
158154
mAnimation.setDuration(800);
159155

160156
if (state == State.COLLAPSED) {
161-
// ThemeCompat.refreshStatusColor(getContext(), true);
162-
// setHomeAsUpIndicator(R.drawable.ic_back);
163-
// mFollowView.setBackgroundResource(R.drawable.bg_btn_follow_drak);
164-
// mFollowView.setTextColor(ContextCompat.getColor(getContext(), R.color.ph2));
157+
ThemeCompat.refreshStatusColor(BloggerActivity.this, true);
158+
setHomeAsUpIndicator(R.drawable.ic_back);
165159
mTitleView.setVisibility(View.VISIBLE);
166160
mTitleView.clearAnimation();
167161
mTitleView.startAnimation(mAnimation);
168162
} else {
169163
mTitleView.clearAnimation();
170164
mTitleView.setVisibility(View.GONE);
171-
// ThemeCompat.refreshStatusColor(getContext(), false);
172-
// setHomeAsUpIndicator(R.drawable.ic_back_white);
173-
// mFollowView.setBackgroundResource(R.drawable.bg_btn_follow);
174-
// mFollowView.setTextColor(ContextCompat.getColor(getContext(), R.color.white));
165+
ThemeCompat.refreshStatusColor(BloggerActivity.this, false);
166+
setHomeAsUpIndicator(R.drawable.ic_back_white);
175167
}
176168
}
177169

@@ -181,31 +173,6 @@ void setHomeAsUpIndicator(int homeAsUpIndicator) {
181173
}
182174
});
183175

184-
// mBloggerLayout.setOnScrollPercentChangeListener(new BloggerLayout.ScrollPercentChangeListener() {
185-
// @Override
186-
// public void onScrollPercentChange(float percent) {
187-
// mBloggerBackgroundView.setAlpha(percent);
188-
//// mFollowView.setAlpha(percent > 0 ? percent : 1);
189-
// mTitleView.setAlpha(percent);
190-
//
191-
// if (percent > 0.5) {
192-
// getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_back);
193-
// mFollowView.setBackgroundResource(R.drawable.bg_btn_follow_drak);
194-
// mFollowView.setTextColor(ContextCompat.getColor(getContext(), R.color.ph2));
195-
// } else {
196-
// getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_back_white);
197-
// mFollowView.setBackgroundResource(R.drawable.bg_btn_follow);
198-
// mFollowView.setTextColor(ContextCompat.getColor(getContext(), R.color.white));
199-
// }
200-
// }
201-
// });
202-
203-
// mBloggerLayout.post(new Runnable() {
204-
// @Override
205-
// public void run() {
206-
// mBloggerLayout.scrollTo(0, 0);
207-
// }
208-
// });
209176

210177
// 获取博主信息
211178
mBloggerPresenter = new BloggerPresenterImpl(this);
@@ -221,7 +188,7 @@ protected void onDestroy() {
221188
mTabLayout.removeOnTabSelectedListener(this);
222189
}
223190

224-
// @Override
191+
// @Override
225192
public void onLoadBloggerInfo(final FriendsInfoBean userInfo) {
226193
mUserInfo = userInfo;
227194
mFansLayout.setClickable(true);
@@ -256,12 +223,20 @@ public void onLoadBloggerInfo(final FriendsInfoBean userInfo) {
256223

257224
@Override
258225
public void onFollowSuccess() {
226+
mFollowProgressBar.setVisibility(ViewPager.GONE);
227+
mFollowView.setVisibility(View.VISIBLE);
259228

229+
mFollowView.setText(mBloggerPresenter.isFollowed() ? R.string.cancel_follow : R.string.following);
230+
setResult(RESULT_OK);
231+
232+
// 发送通知
233+
EventBus.getDefault().post(new UserInfoEvent());
260234
}
261235

262236
@Override
263237
public void onFollowFailed(String message) {
264-
238+
mFollowProgressBar.setVisibility(ViewPager.GONE);
239+
mFollowView.setVisibility(View.VISIBLE);
265240
}
266241

267242
private void showAvatar(String blogApp, final String url) {
@@ -307,14 +282,14 @@ private GlideRequest<Drawable> createAvatarGlide(String url) {
307282
.transition(DrawableTransitionOptions.withCrossFade());
308283
}
309284

310-
// @Override
285+
// @Override
311286
public String getBlogApp() {
312287
return mBlogApp;
313288
}
314289

315290
@Override
316291
public void onLoadBloggerInfoFailed(String msg) {
317-
292+
318293
}
319294

320295
// @Override
@@ -399,14 +374,14 @@ public void onAvatarClick(View view) {
399374
} else {
400375
images.add(mUserInfo.getAvatar());
401376
}
402-
// AppRoute.jumpToImagePreview(this, images, 0);
377+
AppRoute.routeToImagePreview(this, images, 0);
403378
}
404379

405380

406-
@OnClick(R2.id.tool_bar)
407-
public void onTitleClick() {
408-
takeScrollToTop(mViewPager.getCurrentItem());
409-
}
381+
// @OnClick(R2.id.tool_bar)
382+
// public void onTitleClick() {
383+
// takeScrollToTop(mViewPager.getCurrentItem());
384+
// }
410385

411386
/**
412387
* 返回顶部

module-blog/src/main/java/com/rae/cnblogs/blog/adapter/FeedItemAdapter.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package com.rae.cnblogs.blog.adapter;
22

3+
import android.text.TextUtils;
34
import android.view.LayoutInflater;
45
import android.view.View;
56
import android.view.ViewGroup;
67

8+
import com.rae.cnblogs.basic.AppImageLoader;
9+
import com.rae.cnblogs.basic.BaseItemAdapter;
710
import com.rae.cnblogs.blog.R;
11+
import com.rae.cnblogs.blog.holder.FeedViewHolder;
812
import com.rae.cnblogs.sdk.bean.UserFeedBean;
913
import com.rae.cnblogs.theme.ThemeCompat;
1014

@@ -35,7 +39,7 @@ public void onBindViewHolder(FeedViewHolder holder, int position, UserFeedBean m
3539
}
3640

3741
if (!TextUtils.isEmpty(m.getAvatar())) {
38-
RaeImageLoader.displayImage(m.getAvatar(), holder.avatarView);
42+
AppImageLoader.displayAvatar(m.getAvatar(), holder.avatarView);
3943
}
4044

4145
holder.feedActionView.setImageResource(ThemeCompat.isNight() ? R.drawable.link_allshare_pressed : R.drawable.ic_share_link);

module-blog/src/main/java/com/rae/cnblogs/blog/feed/FeedContract.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,6 @@ interface View extends IPresenterView, IPageView<BlogCommentBean> {
2626
}
2727

2828
interface Presenter extends IPresenter {
29+
void loadMore();
2930
}
3031
}
Lines changed: 57 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,27 @@
11
package com.rae.cnblogs.blog.feed;
22

3-
import android.content.Context;
43
import android.support.annotation.NonNull;
54

5+
import com.rae.cnblogs.basic.BasicPresenter;
6+
import com.rae.cnblogs.basic.rx.AndroidObservable;
67
import com.rae.cnblogs.basic.rx.LifecycleProvider;
7-
import com.rae.cnblogs.blog.fragment.FeedListFragment;
8+
import com.rae.cnblogs.sdk.ApiDefaultObserver;
9+
import com.rae.cnblogs.sdk.CnblogsApiFactory;
10+
import com.rae.cnblogs.sdk.bean.UserFeedBean;
11+
import com.rae.swift.Rx;
12+
13+
import java.util.ArrayList;
14+
import java.util.List;
815

916
/**
1017
* Created by dengmaohua on 2018/11/2 16:26.
1118
*/
12-
public class FeedPresenterImpl implements FeedContract.Presenter {
13-
public FeedPresenterImpl(Context context, FeedListFragment feedListFragment) {
19+
public class FeedPresenterImpl extends BasicPresenter<FeedContract.View> implements FeedContract.Presenter {
20+
private int mPage=1;
21+
private final List<UserFeedBean> mDataList = new ArrayList<>();
1422

23+
public FeedPresenterImpl(FeedContract.View view) {
24+
super(view);
1525
}
1626

1727
@NonNull
@@ -20,13 +30,53 @@ public LifecycleProvider getLifecycleProvider() {
2030
return null;
2131
}
2232

23-
@Override
24-
public void start() {
2533

34+
@Override
35+
protected void onStart() {
36+
mPage = 1;
37+
loadData();
2638
}
2739

2840
@Override
29-
public void destroy() {
41+
public void loadMore() {
42+
loadData();
43+
}
44+
45+
private void loadData() {
46+
AndroidObservable.create(CnblogsApiFactory.getInstance(getContext()).getFriendApi().getFeeds(mPage, getView().getBlogApp()))
47+
.subscribe(new ApiDefaultObserver<List<UserFeedBean>>() {
48+
@Override
49+
protected void onError(String message) {
50+
if (mPage <= 1) {
51+
getView().onLoadFeedFailed(message);
52+
} else {
53+
getView().onLoadMoreFeedFailed(message);
54+
}
55+
}
56+
57+
@Override
58+
protected void onEmpty(List<UserFeedBean> userFeedBeans) {
59+
if (mPage > 1) {
60+
getView().onLoadMoreFinish();
61+
}
62+
}
63+
64+
@Override
65+
protected void accept(List<UserFeedBean> data) {
66+
if (mPage <= 1) {
67+
mDataList.clear();
68+
} else {
69+
if (Rx.isEmpty(data)) {
70+
getView().onLoadMoreFinish();
71+
return;
72+
}
73+
}
74+
mDataList.addAll(data);
75+
getView().onLoadFeedSuccess(mDataList);
76+
mPage++;
77+
}
78+
});
79+
3080

3181
}
3282
}

0 commit comments

Comments
 (0)