Skip to content

Commit 935cfd1

Browse files
committed
闪存添加图片解析以及查看
1 parent fb887f1 commit 935cfd1

22 files changed

+341
-32
lines changed

Diff for: .idea/misc.xml

+1-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -750,7 +750,7 @@ public void setTabTextColors(int normalColor, int selectedColor) {
750750
}
751751

752752
/**
753-
* The one-stop shop for setting up this {@link DesignTabLayout} with a {@link ViewPager}.
753+
* The one-cancel shop for setting up this {@link DesignTabLayout} with a {@link ViewPager}.
754754
* <p>
755755
* <p>This is the same as calling {@link #setupWithViewPager(ViewPager, boolean)} with
756756
* auto-refresh enabled.</p>
@@ -762,7 +762,7 @@ public void setupWithViewPager(@Nullable ViewPager viewPager) {
762762
}
763763

764764
/**
765-
* The one-stop shop for setting up this {@link DesignTabLayout} with a {@link ViewPager}.
765+
* The one-cancel shop for setting up this {@link DesignTabLayout} with a {@link ViewPager}.
766766
* <p>
767767
* <p>This method will link the given ViewPager and this RaeTabLayout together so that
768768
* changes in one are automatically reflected in the other. This includes scroll state changes

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

+6-1
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,11 @@ private void onLoadData(BlogBean blog) {
243243
// 分享
244244
@OnClick(R.id.img_action_bar_more)
245245
public void onActionMenuMoreClick() {
246+
// 从搜索进来的处理
247+
if (!TextUtils.isEmpty(mBlog.getSummary())) {
248+
mBlog.setSummary(Jsoup.parse(mBlog.getSummary()).text());
249+
}
250+
246251
mShareDialog.show(mBlog);
247252
}
248253

@@ -337,7 +342,7 @@ public void onPostCommentSuccess() {
337342

338343
if (Rx.parseInt(mBlog.getComment()) <= 0) {
339344
mCommentBadgeView.setSelected(true);
340-
}else{
345+
} else {
341346
mCommentBadgeView.setSelected(false);
342347
}
343348

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

+15-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.rae.cnblogs.presenter.CnblogsPresenterFactory;
1515
import com.rae.cnblogs.presenter.ILauncherPresenter;
1616
import com.rae.cnblogs.sdk.bean.BlogType;
17+
import com.rae.cnblogs.widget.CountDownTextView;
1718

1819
import butterknife.BindView;
1920
import butterknife.OnClick;
@@ -30,6 +31,9 @@ public class LauncherActivity extends BaseActivity implements ILauncherPresenter
3031
@BindView(R.id.tv_launcher_name)
3132
TextView mNameView;
3233

34+
@BindView(R.id.tv_skip)
35+
CountDownTextView mCountDownTextView;
36+
3337
ILauncherPresenter mLauncherPresenter;
3438

3539

@@ -44,11 +48,14 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
4448
protected void onResume() {
4549
super.onResume();
4650
mLauncherPresenter.start();
51+
mCountDownTextView.start();
4752
}
4853

4954
@Override
5055
protected void onStop() {
51-
mLauncherPresenter.stop();
56+
mLauncherPresenter.cancel();
57+
mCountDownTextView.stop();
58+
mCountDownTextView.reset();
5259
super.onStop();
5360
}
5461

@@ -108,4 +115,11 @@ public void onJumpToMain() {
108115
AppRoute.jumpToMain(this);
109116
finish();
110117
}
118+
119+
120+
@OnClick(R.id.tv_skip)
121+
public void onSkipClick() {
122+
mLauncherPresenter.stop();
123+
mCountDownTextView.stop();
124+
}
111125
}

Diff for: app/src/main/java/com/rae/cnblogs/adapter/BaseItemAdapter.java

+6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ public interface onItemClickListener<T> {
3636

3737
private onItemClickListener<T> mOnItemClickListener;
3838

39+
public BaseItemAdapter() {
40+
}
41+
42+
public BaseItemAdapter(List<T> dataList) {
43+
mDataList = dataList;
44+
}
3945

4046
@Override
4147
public VH onCreateViewHolder(ViewGroup parent, int viewType) {

Diff for: app/src/main/java/com/rae/cnblogs/adapter/MomentAdapter.java

+16
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package com.rae.cnblogs.adapter;
22

3+
import android.support.v7.widget.GridLayoutManager;
4+
import android.support.v7.widget.LinearLayoutManager;
35
import android.view.LayoutInflater;
6+
import android.view.View;
47
import android.view.ViewGroup;
58

69
import com.rae.cnblogs.R;
710
import com.rae.cnblogs.RaeImageLoader;
811
import com.rae.cnblogs.model.MomentHolder;
912
import com.rae.cnblogs.sdk.bean.MomentBean;
13+
import com.rae.swift.Rx;
1014

1115
/**
1216
* 闪存
@@ -21,6 +25,18 @@ public MomentHolder onCreateViewHolder(LayoutInflater inflater, ViewGroup parent
2125

2226
@Override
2327
public void onBindViewHolder(MomentHolder holder, int position, MomentBean m) {
28+
holder.mRecyclerView.setVisibility(Rx.isEmpty(m.getImageList()) ? View.GONE : View.VISIBLE);
29+
30+
int imageCount = Rx.getCount(m.getImageList());
31+
if (imageCount == 1) {
32+
holder.mRecyclerView.setLayoutManager(new LinearLayoutManager(holder.itemView.getContext()));
33+
} else {
34+
int spanCount = imageCount == 4 || imageCount == 2 ? 2 : 3;
35+
holder.mRecyclerView.setLayoutManager(new GridLayoutManager(holder.itemView.getContext(), spanCount));
36+
}
37+
38+
holder.mRecyclerView.setAdapter(new MomentImageAdapter(m.getImageList()));
39+
2440
RaeImageLoader.displayHeaderImage(m.getAvatar(), holder.avatarView);
2541
holder.authorView.setText(m.getAuthorName());
2642
holder.dateView.setText(m.getPostTime());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.rae.cnblogs.adapter;
2+
3+
import android.view.LayoutInflater;
4+
import android.view.View;
5+
import android.view.ViewGroup;
6+
7+
import com.rae.cnblogs.AppRoute;
8+
import com.rae.cnblogs.R;
9+
import com.rae.cnblogs.RaeImageLoader;
10+
import com.rae.cnblogs.model.MomentImageHolder;
11+
12+
import java.util.ArrayList;
13+
import java.util.List;
14+
15+
/**
16+
* 图片
17+
* Created by ChenRui on 2017/11/1 0001 0:50.
18+
*/
19+
public class MomentImageAdapter extends BaseItemAdapter<String, MomentImageHolder> implements View.OnClickListener {
20+
21+
public MomentImageAdapter(List<String> dataList) {
22+
super(dataList);
23+
}
24+
25+
@Override
26+
public MomentImageHolder onCreateViewHolder(LayoutInflater inflater, ViewGroup parent, int viewType) {
27+
if (getItemCount() == 1) {
28+
return new MomentImageHolder(inflateView(parent, R.layout.item_moment_image_single));
29+
}
30+
return new MomentImageHolder(inflateView(parent, R.layout.item_moment_image));
31+
}
32+
33+
@Override
34+
public void onBindViewHolder(MomentImageHolder holder, int position, String m) {
35+
holder.itemView.setOnClickListener(this);
36+
holder.itemView.setContentDescription(m);
37+
RaeImageLoader.displayImage(m, holder.getImageView());
38+
}
39+
40+
@Override
41+
public void onClick(View v) {
42+
AppRoute.jumpToImagePreview(v.getContext(), (ArrayList<String>) mDataList, mDataList.indexOf(v.getContentDescription().toString()));
43+
}
44+
}

Diff for: app/src/main/java/com/rae/cnblogs/model/MomentHolder.java

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.rae.cnblogs.model;
22

3+
import android.support.v7.widget.RecyclerView;
34
import android.view.View;
45
import android.widget.ImageView;
56
import android.widget.TextView;
@@ -33,6 +34,9 @@ public class MomentHolder extends SimpleViewHolder {
3334
@BindView(R.id.tv_blog_comment)
3435
public TextView commentView;
3536

37+
@BindView(R.id.recycler_view)
38+
public RecyclerView mRecyclerView;
39+
3640

3741
// @BindView(R.id.img_blog_list_large_thumb)
3842
// public ImageView largeThumbView;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.rae.cnblogs.model;
2+
3+
import android.view.View;
4+
import android.widget.ImageView;
5+
6+
import com.rae.cnblogs.R;
7+
8+
/**
9+
* Created by ChenRui on 2017/11/1 0001 0:51.
10+
*/
11+
public class MomentImageHolder extends SimpleViewHolder {
12+
ImageView mImageView;
13+
14+
public ImageView getImageView() {
15+
return mImageView;
16+
}
17+
18+
public MomentImageHolder(View itemView) {
19+
super(itemView);
20+
mImageView = itemView.findViewById(R.id.img_thumb);
21+
}
22+
}

Diff for: app/src/main/java/com/rae/cnblogs/presenter/ILauncherPresenter.java

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ public interface ILauncherPresenter extends IAppPresenter {
88

99
void advertClick();
1010

11+
void cancel();
12+
1113
void stop();
1214

1315

Diff for: app/src/main/java/com/rae/cnblogs/presenter/impl/LauncherPresenterImpl.java

+10-8
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,9 @@ public LauncherPresenterImpl(Context context, ILauncherView view) {
3131
super(context, view);
3232
mRaeServerApi = getApiProvider().getRaeServerApi();
3333
mDbAdvert = DbFactory.getInstance().getAdvert();
34-
mCountDownTimer = new CountDownTimer(3500, 1000) {
34+
mCountDownTimer = new CountDownTimer(5000, 1000) {
3535
@Override
36-
public void onTick(long l) {
37-
36+
public void onTick(long millisUntilFinished) {
3837
}
3938

4039
@Override
@@ -62,23 +61,26 @@ public void advertClick() {
6261
}
6362

6463
@Override
65-
public void stop() {
64+
public void cancel() {
6665
RxObservable.dispose("thread");
6766
mCountDownTimer.cancel();
6867
}
6968

69+
@Override
70+
public void stop() {
71+
cancel();
72+
mCountDownTimer.onFinish();
73+
}
74+
7075
@Override
7176
public void destroy() {
72-
stop();
77+
cancel();
7378
super.destroy();
7479
}
7580

7681
@Override
7782
public void start() {
78-
79-
8083
mCountDownTimer.start();
81-
8284
// 异步下载新的
8385
createObservable(mRaeServerApi.getLauncherAd())
8486
.subscribe(new ApiDefaultObserver<AdvertBean>() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
package com.rae.cnblogs.widget;
2+
3+
import android.animation.ValueAnimator;
4+
import android.content.Context;
5+
import android.graphics.Canvas;
6+
import android.graphics.Color;
7+
import android.graphics.Paint;
8+
import android.graphics.RectF;
9+
import android.util.AttributeSet;
10+
import android.util.TypedValue;
11+
import android.view.animation.LinearInterpolator;
12+
13+
/**
14+
* 倒计时文本
15+
* Created by ChenRui on 2017/10/31 0031 23:01.
16+
*/
17+
public class CountDownTextView extends RaeTextView {
18+
19+
// 倒计时
20+
private int duration = 5000;
21+
22+
// 扫过的角度
23+
private int mSweepAngle = 360;
24+
private ValueAnimator animator;
25+
private final RectF mRect = new RectF();
26+
private Paint mBackgroundPaint;
27+
28+
public CountDownTextView(Context context) {
29+
super(context);
30+
}
31+
32+
public CountDownTextView(Context context, AttributeSet attrs) {
33+
super(context, attrs);
34+
}
35+
36+
public CountDownTextView(Context context, AttributeSet attrs, int defStyleAttr) {
37+
super(context, attrs, defStyleAttr);
38+
}
39+
40+
@Override
41+
void init() {
42+
super.init();
43+
mBackgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
44+
mBackgroundPaint.setColor(Color.WHITE);
45+
mBackgroundPaint.setStrokeWidth(dp2px(2));
46+
mBackgroundPaint.setStyle(Paint.Style.STROKE);
47+
}
48+
49+
/**
50+
* 开始倒计时
51+
*/
52+
public void start() {
53+
// 在动画中
54+
if (mSweepAngle != 360) return;
55+
56+
mSweepAngle = 360;
57+
animator = ValueAnimator.ofInt(mSweepAngle).setDuration(duration);
58+
animator.setInterpolator(new LinearInterpolator());
59+
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
60+
@Override
61+
public void onAnimationUpdate(ValueAnimator animation) {
62+
int value = (int) animation.getAnimatedValue();
63+
mSweepAngle = 360 - value;
64+
invalidate();
65+
}
66+
});
67+
animator.start();
68+
}
69+
70+
@Override
71+
protected void onDetachedFromWindow() {
72+
stop();
73+
super.onDetachedFromWindow();
74+
}
75+
76+
@Override
77+
protected void onDraw(Canvas canvas) {
78+
int padding = dp2px(4);
79+
mRect.top = padding;
80+
mRect.left = padding;
81+
mRect.right = canvas.getWidth() - padding;
82+
mRect.bottom = canvas.getHeight() - padding;
83+
84+
// 画倒计时线内圆
85+
canvas.drawArc(mRect, //弧线所使用的矩形区域大小
86+
270, //开始角度
87+
mSweepAngle, //扫过的角度
88+
false, //是否使用中心
89+
mBackgroundPaint);
90+
91+
super.onDraw(canvas);
92+
}
93+
94+
private int dp2px(int dp) {
95+
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics());
96+
}
97+
98+
public void reset() {
99+
mSweepAngle = 360;
100+
animator = null;
101+
}
102+
103+
public void stop() {
104+
if (animator != null) {
105+
animator.cancel();
106+
animator = null;
107+
}
108+
}
109+
}

0 commit comments

Comments
 (0)