Files
assistant-android/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java

776 lines
32 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.gh.gamecenter;
import static com.gh.gamecenter.common.constant.Constants.LOGIN_TAG;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.core.view.MotionEventCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.ethanhua.skeleton.Skeleton;
import com.ethanhua.skeleton.ViewSkeletonScreen;
import com.gh.base.DownloadToolbarActivity;
import com.gh.common.filter.RegionSettingHelper;
import com.gh.common.history.HistoryHelper;
import com.gh.gamecenter.feature.utils.ApkActiveUtils;
import com.gh.common.util.CheckLoginUtils;
import com.gh.common.util.CollectionUtils;
import com.gh.common.util.DataCollectionUtils;
import com.gh.common.util.DetailDownloadUtils;
import com.gh.common.util.NewLogUtils;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.adapter.viewholder.DetailViewHolder;
import com.gh.gamecenter.common.callback.OnRequestCallBackListener;
import com.gh.gamecenter.common.constant.Constants;
import com.gh.gamecenter.common.constant.EntranceConsts;
import com.gh.gamecenter.common.retrofit.Response;
import com.gh.gamecenter.common.utils.ExtensionsKt;
import com.gh.gamecenter.common.utils.ShareUtils;
import com.gh.gamecenter.common.view.FixLinearLayoutManager;
import com.gh.gamecenter.common.view.VerticalItemDecoration;
import com.gh.gamecenter.core.utils.ClickUtils;
import com.gh.gamecenter.core.utils.DisplayUtils;
import com.gh.gamecenter.core.utils.MtaHelper;
import com.gh.gamecenter.feature.entity.GameEntity;
import com.gh.gamecenter.feature.entity.MeEntity;
import com.gh.gamecenter.entity.NewsDetailEntity;
import com.gh.gamecenter.feature.entity.NewsEntity;
import com.gh.gamecenter.eventbus.EBConcernChanged;
import com.gh.gamecenter.eventbus.EBDownloadStatus;
import com.gh.gamecenter.common.eventbus.EBNetworkState;
import com.gh.gamecenter.eventbus.EBPackage;
import com.gh.gamecenter.common.eventbus.EBReuse;
import com.gh.gamecenter.newsdetail.NewsDetailAdapter;
import com.gh.gamecenter.retrofit.RetrofitManager;
import com.lightgame.download.DataWatcher;
import com.lightgame.download.DownloadEntity;
import com.lightgame.download.DownloadStatus;
import com.lightgame.utils.Utils;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.HashSet;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import kotlin.Pair;
import retrofit2.HttpException;
/**
* 文章详情页面 要启动该页面 需要传入一下参数 放入 EssayEntity中传过来 文章 id 文章标题 title 文章发表时间 time
*
* @author 黄壮华
*/
public class NewsDetailActivity extends DownloadToolbarActivity implements OnClickListener, OnRequestCallBackListener {
RecyclerView mDetailRv;
LinearLayout mDetailBottomLl;
LinearLayout mReuseLoading;
LinearLayout mNoConn;
LinearLayout mNoneData;
LinearLayout mExceptionDataView;
TextView mNoneDataTv;
RelativeLayout mDetailCommentLl;
RelativeLayout mSkeletonView;
MenuItem mNewsShare;
MenuItem mNewsCollection;
private NewsDetailAdapter adapter;
private static final String KEY_COLLECTIONNEWS = "isCollectionNews";
private boolean isSentReport = false;
private boolean isSecondDown = false;
private boolean mIsCollectionNews;
private float Y11, Y12, Y21, Y22;
private float X11, X12, X21, X22;
private double R11;
private int fontsize;
private int scrollSize = 300;//滑动距离超过300触发事件放大缩小字体
private long start = 0L;
private String newsId;
private SharedPreferences sp;
private GameEntity gameEntity;
private NewsEntity mNewsEntity;
private DownloadEntity mDownloadEntity;
private Boolean mHideUselessInfo = false;
private Handler handler = new Handler();
private long[] mHits = new long[2];
private ViewSkeletonScreen mViewSkeletonScreen;
private RecyclerView.ItemDecoration mItemDecoration;
private DataWatcher dataWatcher = new DataWatcher() {
@Override
public void onDataChanged(DownloadEntity downloadEntity) {
if (gameEntity != null && gameEntity.getApk().size() == 1) {
String url = gameEntity.getApk().get(0).getUrl();
if (url.equals(downloadEntity.getUrl())) {
if (!"pause".equals(DownloadManager.getInstance().
getStatus(downloadEntity.getUrl()))) {
mDownloadEntity = downloadEntity;
DetailDownloadUtils.detailInvalidate(getDetailViewHolder());
}
}
} else if (gameEntity != null && gameEntity.getApk().size() > 1) {
if (DownloadStatus.downloading.equals(downloadEntity.getStatus())) {
if (getDetailViewHolder().mDownloadTips.getVisibility() == View.GONE || !getDetailViewHolder().mDownloadTips.isAnimating()) {
getDetailViewHolder().mDownloadTips.setVisibility(View.VISIBLE);
ExtensionsKt.setDownloadTipsAnimation(getDetailViewHolder().mDownloadTips, true);
}
} else if (DownloadStatus.waiting.equals(downloadEntity.getStatus()) || DownloadStatus.done.equals(downloadEntity.getStatus()) ||
DownloadStatus.pause.equals(downloadEntity.getStatus()) || DownloadStatus.timeout.equals(downloadEntity.getStatus()) ||
DownloadStatus.subscribe.equals(downloadEntity.getStatus()) || DownloadStatus.overflow.equals(downloadEntity.getStatus()) ||
DownloadStatus.neterror.equals(downloadEntity.getStatus())) {
getDetailViewHolder().mDownloadTips.setVisibility(View.VISIBLE);
ExtensionsKt.setDownloadTipsAnimation(getDetailViewHolder().mDownloadTips, false);
} else {
getDetailViewHolder().mDownloadTips.setVisibility(View.GONE);
}
}
}
@Override
public void onDataInit(@NonNull DownloadEntity downloadEntity) {
onDataChanged(downloadEntity);
}
};
Runnable runnable = new Runnable() {
@Override
public void run() {
if (newsId != null) {
getNewsDigest(newsId);
} else {
if (mNewsEntity == null) return;
if (mNewsEntity.getType() != null) {
setNavigationTitle(mNewsEntity.getType());
}
adapter.setId(mNewsEntity.getId());
adapter.setType(mNewsEntity.getType());
adapter.setTitle(mNewsEntity.getTitle());
adapter.getNewsDetail();
}
}
};
private DetailViewHolder getDetailViewHolder() {
// 每次获取需要重新创建, 防止数据刷新
return new DetailViewHolder(mContentView, gameEntity, mDownloadEntity,
true, mEntrance, "新闻详情", adapter.getTitle(), null); // 下载按钮ViewHolder
}
/**
* 启动新闻详情页面
*/
public static void startNewsDetailActivity(Context context, NewsEntity newsEntity, String entrance) {
MtaHelper.onEvent("详情页面", "文章详情", newsEntity != null ? newsEntity.getTitle() : "");
if (newsEntity != null && !TextUtils.isEmpty(newsEntity.getLink())) {
context.startActivity(WebActivity.getIntentByNews(context, newsEntity, entrance));
} else {
Intent intent = new Intent(context, NewsDetailActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(EntranceConsts.KEY_ENTRANCE, entrance);
intent.putExtra(NewsEntity.TAG, newsEntity);
context.startActivity(intent);
}
}
/**
* 在收藏启动新闻详情页面
*/
public static void startNewsDetailByCollection(Context context, NewsEntity newsEntity, String entrance) {
MtaHelper.onEvent("详情页面", "文章详情", newsEntity != null ? newsEntity.getTitle() : "");
if (newsEntity != null && !TextUtils.isEmpty(newsEntity.getLink())) {
Intent intent = WebActivity.getIntentByNews(context, newsEntity, entrance);
context.startActivity(intent);
} else {
Intent intent = new Intent(context, NewsDetailActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(EntranceConsts.KEY_ENTRANCE, entrance);
intent.putExtra(NewsEntity.TAG, newsEntity);
intent.putExtra(KEY_COLLECTIONNEWS, true);
context.startActivity(intent);
}
}
@NonNull
public static Intent getIntentById(Context context, String newsId, boolean isCollectionNews, String entrance) {
Intent intent = new Intent(context, NewsDetailActivity.class);
intent.putExtra(EntranceConsts.KEY_ENTRANCE, entrance);
intent.putExtra(KEY_COLLECTIONNEWS, isCollectionNews);
intent.putExtra(EntranceConsts.KEY_NEWSID, newsId);
return intent;
}
@NonNull
public static Intent getIntentById(Context context, String newsId, String entrance) {
Intent intent = new Intent(context, NewsDetailActivity.class);
intent.putExtra(EntranceConsts.KEY_ENTRANCE, entrance);
intent.putExtra(EntranceConsts.KEY_NEWSID, newsId);
return intent;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ImageViewerActivity.REQUEST_FOR_VIEWED_IMAGE && resultCode == Activity.RESULT_OK) {
HashSet<Integer> imageSet = (HashSet<Integer>) data.getExtras().get(ImageViewerActivity.VIEWED_IMAGE);
adapter.replaceDefaultImage(imageSet);
}
}
@Override
protected int getLayoutId() {
return R.layout.activity_news_detail;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ExtensionsKt.updateStatusBarColor(this, R.color.background_white, R.color.background_white);
mDetailRv = findViewById(R.id.news_detail_rv_show);
mDetailBottomLl = findViewById(R.id.news_detail_ll_bottom);
mReuseLoading = findViewById(R.id.reuse_ll_loading);
mNoConn = findViewById(R.id.reuse_no_connection);
mNoneData = findViewById(R.id.reuse_none_data);
mExceptionDataView = findViewById(R.id.reuse_data_exception);
mNoneDataTv = findViewById(R.id.reuseNoneDataTv);
mDetailCommentLl = findViewById(R.id.news_detail_ll_coment);
mSkeletonView = findViewById(R.id.news_skeleton);
mViewSkeletonScreen = Skeleton.bind(mSkeletonView).shimmer(false).load(R.layout.news_detail_skeleton).show();
// init toolbar
setNavigationTitle("");
mNoneDataTv.setText("页面不见了");
// init RecyclerView
mDetailRv.setHasFixedSize(true);
mDetailRv.setLayoutManager(new FixLinearLayoutManager(this));
mItemDecoration = new VerticalItemDecoration(this, 8, false);
mDetailRv.addItemDecoration(mItemDecoration);
mHideUselessInfo = getIntent().getBooleanExtra(EntranceConsts.KEY_HIDE_USELESS_INFO, false);
setToolbarMenu(R.menu.menu_news_detail);
mNewsShare = getMenuItem(R.id.menu_share);
mNewsCollection = getMenuItem(R.id.menu_collect);
mNewsShare.setVisible(false);
mNewsCollection.setVisible(false);
if (mHideUselessInfo) {
getMenuItem(R.id.menu_download).setVisible(false);
}
adapter = new NewsDetailAdapter(this, this, mHideUselessInfo, mEntrance);
mDetailRv.setAdapter(adapter);
newsId = getIntent().getStringExtra(EntranceConsts.KEY_NEWSID);
mIsCollectionNews = getIntent().getBooleanExtra(KEY_COLLECTIONNEWS, false);
if (newsId == null) {
mNewsEntity = getIntent().getParcelableExtra(NewsEntity.TAG);
if (mNewsEntity != null) {
if (mNewsEntity.getType() != null) {
setNavigationTitle(mNewsEntity.getType());
}
HistoryHelper.insertNewsEntity(mNewsEntity);
adapter.setId(mNewsEntity.getId());
adapter.setType(mNewsEntity.getType());
adapter.setTitle(mNewsEntity.getTitle());
adapter.getNewsDetail();
if (!mHideUselessInfo) {
mNewsShare.setVisible(true);
setTitleCenter();
}
}
} else {
getNewsDigest(newsId);
}
start = System.currentTimeMillis();
View view = getWindow().findViewById(Window.ID_ANDROID_CONTENT);
if (view != null) {
view.setOnClickListener(v -> {
System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
mHits[mHits.length - 1] = SystemClock.uptimeMillis();
if (mHits[0] >= (SystemClock.uptimeMillis() - 1000)) {
mDetailRv.scrollToPosition(0);
}
});
}
sp = PreferenceManager.getDefaultSharedPreferences(this);
fontsize = sp.getInt(Constants.SP_FONT_SIZE, 1);
if (fontsize == 0) {
fontsize = 1;
}
mNoConn.setOnClickListener(this);
mDetailCommentLl.setOnClickListener(this);
}
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_share:
if (adapter != null && adapter.getNewsDetailEntity() != null && !ClickUtils.isFastDoubleClick(R.id.menu_question_post)) {
DataCollectionUtils.uploadClick(NewsDetailActivity.this, "分享", "新闻详情"
, adapter.getNewsDetailEntity().getTitle());
String url = getString(R.string.share_news_article_url, adapter.getNewsDetailEntity().getShortId());
String shareIcon;
if (gameEntity == null) {
shareIcon = getString(R.string.gh_icon_url);
} else {
shareIcon = gameEntity.getIcon();
}
showShare(url, shareIcon, adapter.getNewsDetailEntity().getTitle(),
"来自光环助手(最强卡牌神器)", ShareUtils.ShareEntrance.news, adapter.getNewsDetailEntity().getId());
}
break;
case R.id.menu_collect:
CheckLoginUtils.checkLogin(this, "资讯文章详情-收藏", () -> {
final NewsDetailEntity newsDetailEntity = adapter.getNewsDetailEntity();
mNewsCollection.setEnabled(false);
if (newsDetailEntity.getMe() != null && newsDetailEntity.getMe().isArticleFavorite()) {
CollectionUtils.INSTANCE.deleteCollection(mNewsEntity.getId(),
CollectionUtils.CollectionType.ARTICLE,
new CollectionUtils.OnCollectionListener() {
@Override
public void onSuccess() {
newsDetailEntity.getMe().setArticleFavorite(false);
mNewsCollection.setEnabled(true);
mNewsCollection.setIcon(R.drawable.community_content_detail_collect_unselect);
toast(R.string.collection_cancel);
}
@Override
public void onError() {
mNewsCollection.setEnabled(true);
toast(R.string.collection_cancel_failure);
}
});
} else {
CollectionUtils.INSTANCE.postCollection(mNewsEntity.getId(),
CollectionUtils.CollectionType.ARTICLE,
new CollectionUtils.OnCollectionListener() {
@Override
public void onSuccess() {
MeEntity userData = newsDetailEntity.getMe();
if (userData == null) {
userData = new MeEntity();
newsDetailEntity.setMe(userData);
}
userData.setArticleFavorite(true);
mNewsCollection.setEnabled(true);
mNewsCollection.setIcon(R.drawable.community_content_detail_collect_select);
toast(R.string.collection_success);
}
@Override
public void onError() {
mNewsCollection.setEnabled(true);
toast(R.string.collection_failure);
}
});
}
});
break;
}
return super.onMenuItemClick(item);
}
@Override
protected void onDestroy() {
super.onDestroy();
handler.removeCallbacksAndMessages(null);
DownloadManager.getInstance().removeObserver(dataWatcher);
}
@Override
protected void onPause() {
super.onPause();
if (!isSentReport) {
long end = System.currentTimeMillis();
int seconds = (int) ((end - start) / 1000);
if (adapter.getNewsDetailEntity() != null && seconds > 0) {
DataCollectionUtils.uploadNews(this, adapter.getNewsDetailEntity(), gameEntity, seconds, mEntrance);
}
isSentReport = true;
}
}
@Override
protected void onResume() {
super.onResume();
if (gameEntity != null
&& (gameEntity.getApk().size() == 1 || gameEntity.isReservable())) {
DetailDownloadUtils.detailInitDownload(getDetailViewHolder(), true);
}
DownloadManager.getInstance().addObserver(dataWatcher);
}
@Override
public void loadDone() { // 通知更新收藏按钮
if (!mHideUselessInfo) {
mNewsCollection.setVisible(true);
setTitleCenter();
NewsDetailEntity newsDetailEntity = adapter.getNewsDetailEntity();
if (newsDetailEntity.getMe() != null && newsDetailEntity.getMe().isArticleFavorite()) {
mNewsCollection.setIcon(R.drawable.community_content_detail_collect_select);
} else {
mNewsCollection.setIcon(R.drawable.community_content_detail_collect_unselect);
}
}
}
@Override
public void loadDone(Object obj) {
if (mReuseLoading != null) {
mReuseLoading.setVisibility(View.GONE);
mDetailRv.setVisibility(View.VISIBLE);
mViewSkeletonScreen.hide();
}
getGameDetail((String) obj);
}
@Override
public void loadError() {
mDetailRv.setVisibility(View.GONE);
mReuseLoading.setVisibility(View.GONE);
mDetailBottomLl.setVisibility(View.GONE);
mNoConn.setVisibility(View.VISIBLE);
mNoneData.setVisibility(View.GONE);
mExceptionDataView.setVisibility(View.GONE);
mViewSkeletonScreen.hide();
}
@Override
public void loadNotFound() {
mDetailRv.setVisibility(View.GONE);
mReuseLoading.setVisibility(View.GONE);
mDetailBottomLl.setVisibility(View.GONE);
mNoConn.setVisibility(View.GONE);
mNoneData.setVisibility(View.GONE);
mExceptionDataView.setVisibility(View.VISIBLE);
mViewSkeletonScreen.hide();
}
@Override
public void loadEmpty() {
mDetailRv.setVisibility(View.GONE);
mReuseLoading.setVisibility(View.GONE);
mDetailBottomLl.setVisibility(View.GONE);
mNoConn.setVisibility(View.GONE);
mNoneData.setVisibility(View.VISIBLE);
mExceptionDataView.setVisibility(View.GONE);
mViewSkeletonScreen.hide();
}
private void getNewsDigest(final String newsId) {
RetrofitManager.getInstance().getApi().getNewsDigest(newsId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<NewsEntity>() {
@Override
public void onResponse(NewsEntity response) {
if (mIsCollectionNews && mNewsEntity != null && response != null) { // 对比查看收藏文章是否修改
return;
}
if (response == null) return;
mNewsEntity = response;
if (response.getType() != null) {
setNavigationTitle(response.getType());
}
adapter.setId(newsId);
adapter.setType(response.getType());
adapter.setTitle(response.getTitle());
adapter.getNewsDetail();
if (!mHideUselessInfo) {
mNewsShare.setVisible(true);
setTitleCenter();
}
HistoryHelper.insertNewsEntity(mNewsEntity);
MtaHelper.onEvent("详情页面", "文章详情", response.getTitle());
}
@Override
public void onFailure(HttpException e) {
if (e != null && e.code() == 404) {
loadNotFound();
} else {
loadError();
}
}
});
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction() & MotionEventCompat.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
isSecondDown = false;
int pointerIndex = MotionEventCompat.findPointerIndex(ev, MotionEventCompat.getPointerId(ev, 0));
Y11 = MotionEventCompat.getY(ev, pointerIndex);
X11 = MotionEventCompat.getX(ev, pointerIndex);
break;
case MotionEvent.ACTION_UP:
final int actionUpIndex = MotionEventCompat.getActionIndex(ev);
int pointerIndex2 = MotionEventCompat.findPointerIndex(ev, MotionEventCompat.getPointerId(ev, actionUpIndex));
Y12 = MotionEventCompat.getY(ev, pointerIndex2);
X12 = MotionEventCompat.getX(ev, pointerIndex2);
float X2 = Math.abs(X12 - X22);
float Y2 = Math.abs(Y12 - Y22);
float R2 = (X2 * X2) + (Y2 * Y2);
double R12 = Math.sqrt(R2);
if (adapter != null && isSecondDown) {
if ((R11 - R12) > scrollSize && fontsize > 1) {
fontsize--;
adapter.setFontSize(fontsize);
sp.edit().putInt(Constants.SP_FONT_SIZE, fontsize).apply();
String fontSizeText = getFontSize(fontsize);
Utils.toast(this, fontSizeText);
}
if ((R11 - R12) < -scrollSize && fontsize < 4) {
fontsize++;
adapter.setFontSize(fontsize);
sp.edit().putInt(Constants.SP_FONT_SIZE, fontsize).apply();
String fontSizeText = getFontSize(fontsize);
Utils.toast(this, fontSizeText);
}
}
break;
case MotionEvent.ACTION_MOVE:
if (isSecondDown) {
return true;
}
break;
case MotionEventCompat.ACTION_POINTER_DOWN:
isSecondDown = true;
final int pointerIndexDown = MotionEventCompat.getActionIndex(ev);
int pointerIndex1 = MotionEventCompat.findPointerIndex(ev, MotionEventCompat.getPointerId(ev, pointerIndexDown));
Y21 = MotionEventCompat.getY(ev, pointerIndex1);
X21 = MotionEventCompat.getX(ev, pointerIndex1);
float X1 = Math.abs(X11 - X21);
float Y1 = Math.abs(Y11 - Y21);
float R1 = (X1 * X1) + (Y1 * Y1);
R11 = Math.sqrt(R1);
break;
case MotionEventCompat.ACTION_POINTER_UP:
final int pointerIndexUp = MotionEventCompat.getActionIndex(ev);
int pointerIndex21 = MotionEventCompat.findPointerIndex(ev, MotionEventCompat.getPointerId(ev, pointerIndexUp));
Y22 = MotionEventCompat.getY(ev, pointerIndex21);
X22 = MotionEventCompat.getX(ev, pointerIndex21);
break;
}
return super.dispatchTouchEvent(ev);
}
@Override
public void onClick(final View v) {
if (v == mNoConn) {
mDetailRv.setVisibility(View.VISIBLE);
mReuseLoading.setVisibility(View.VISIBLE);
mNoConn.setVisibility(View.GONE);
handler.postDelayed(runnable, 1000);
} else if (v == mDetailCommentLl) {
CheckLoginUtils.checkLogin(this, "资讯文章详情-写评论", () -> {
Intent intent = MessageDetailActivity.getIntentById(NewsDetailActivity.this, adapter.getId(), null, true
, mEntrance + "(新闻详情[" + adapter.getTitle() + "])");
startActivity(intent);
});
}
}
private String getFontSize(int i) {
switch (i) {
case 1:
return "小字号";
case 2:
return "中字号";
case 3:
return "大字号";
case 4:
return "特大字号";
default:
return "未知字号";
}
}
private void getGameDetail(String gameId) {
if (RegionSettingHelper.shouldThisGameBeFiltered(gameId)) {
return;
}
if (TextUtils.isEmpty(gameId)) {
mDetailBottomLl.setVisibility(View.GONE);
return;
}
RetrofitManager.getInstance().getApi().getGameNewsDigest(gameId)
.map(ApkActiveUtils.filterMapper)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<GameEntity>() {
@Override
public void onResponse(GameEntity response) {
ApkActiveUtils.filterHideApk(response);
gameEntity = response;
if (!mHideUselessInfo) {
adapter.setGameEntity(gameEntity);
adapter.notifyItemInserted(1);
mDetailBottomLl.setVisibility(View.VISIBLE);
DetailDownloadUtils.detailInitDownload(getDetailViewHolder(), true);
} else {
mDetailBottomLl.setVisibility(View.GONE);
}
}
});
}
@Override
protected void onStop() {
super.onStop();
if (mEntrance.contains("板块成员") || mEntrance.contains("论坛详情")) {
long stayTime = (System.currentTimeMillis() - startPageTime) / 1000;
NewLogUtils.INSTANCE.logActivityPause("版规说明", "jump_layout_description", stayTime, "", "", "", "");
}
}
// 关注事件
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(EBConcernChanged changed) {
NewsDetailEntity newsDetailEntity = adapter.getNewsDetailEntity();
if (newsDetailEntity != null && gameEntity != null && changed.isSingle() && changed.getGameId().equals(gameEntity.getId())) {
if (newsDetailEntity.getMe() == null) {
newsDetailEntity.setMe(new MeEntity());
}
newsDetailEntity.getMe().setGameConcerned(changed.isConcern());
adapter.notifyItemChanged(1);
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(EBNetworkState busNetworkState) {
if (busNetworkState.isNetworkConnected()) {
if (mNoConn.getVisibility() == View.VISIBLE) {
mDetailRv.setVisibility(View.VISIBLE);
mReuseLoading.setVisibility(View.VISIBLE);
mDetailRv.setPadding(0, 0, 0, DisplayUtils.dip2px(getApplicationContext(), 60));
mNoConn.setVisibility(View.GONE);
handler.postDelayed(runnable, 1000);
}
}
}
// 接收下载被删除消息
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(EBDownloadStatus status) {
if ("delete".equals(status.getStatus()) && gameEntity != null && gameEntity.getApk().size() == 1) {
String url = gameEntity.getApk().get(0).getUrl();
if (url.equals(status.getUrl())) {
DetailDownloadUtils.detailInitDownload(getDetailViewHolder(), false);
}
}
}
// 接受安装、卸载消息
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(EBPackage busFour) {
if (gameEntity != null && gameEntity.getApk().size() == 1) {
String packageName = gameEntity.getApk().get(0).getPackageName();
if (packageName.equals(busFour.getPackageName())) {
DetailDownloadUtils.detailInitDownload(getDetailViewHolder(), false);
}
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(EBReuse reuse) {
if (reuse.getType().equals(LOGIN_TAG) && adapter != null) { // 登入
adapter.getNewsDetail();
}
}
@Override
protected boolean showDownloadMenu() {
return true;
}
@Override
protected void onDarkModeChanged() {
super.onDarkModeChanged();
ExtensionsKt.updateStatusBarColor(this, R.color.background_white, R.color.background_white);
mNewsShare.setIcon(R.drawable.icon_share_black);
mNewsCollection.setIcon(R.drawable.community_content_detail_collect_unselect);
mDetailRv.removeItemDecoration(mItemDecoration);
mItemDecoration = new VerticalItemDecoration(this, 8, false);
mDetailRv.addItemDecoration(mItemDecoration);
if (mContentView != null) {
mContentView.setBackgroundColor(ContextCompat.getColor(this, R.color.background));
findViewById(R.id.commentContainer).setBackgroundColor(ContextCompat.getColor(this, R.color.background_white));
((TextView) findViewById(R.id.commentTv)).setTextColor(ContextCompat.getColor(this, R.color.text_subtitle));
}
if (adapter != null) {
adapter.notifyItemRangeChanged(0, adapter.getItemCount());
}
}
@Override
public Pair<String, String> getBusinessId() {
if (getIntent().getStringExtra(EntranceConsts.KEY_NEWSID) != null) {
return new Pair(getIntent().getStringExtra(EntranceConsts.KEY_NEWSID), "");
} else if (mNewsEntity != null) {
return new Pair(mNewsEntity.getId(), "");
} else {
return super.getBusinessId();
}
}
}