720 lines
30 KiB
Java
720 lines
30 KiB
Java
package com.gh.gamecenter;
|
||
|
||
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.support.annotation.NonNull;
|
||
import android.support.v4.view.MotionEventCompat;
|
||
import android.support.v7.widget.LinearLayoutManager;
|
||
import android.support.v7.widget.RecyclerView;
|
||
import android.text.TextUtils;
|
||
import android.view.LayoutInflater;
|
||
import android.view.MotionEvent;
|
||
import android.view.View;
|
||
import android.view.View.OnClickListener;
|
||
import android.view.Window;
|
||
import android.widget.ImageView;
|
||
import android.widget.LinearLayout;
|
||
import android.widget.RelativeLayout;
|
||
import android.widget.TextView;
|
||
|
||
import com.gh.base.BaseActivity;
|
||
import com.gh.base.OnRequestCallBackListener;
|
||
import com.gh.common.util.ApkActiveUtils;
|
||
import com.gh.common.util.CheckLoginUtils;
|
||
import com.gh.common.util.CollectionUtils;
|
||
import com.gh.common.util.DataCollectionUtils;
|
||
import com.gh.common.util.DataUtils;
|
||
import com.gh.common.util.DetailDownloadUtils;
|
||
import com.gh.common.util.DisplayUtils;
|
||
import com.gh.common.util.EntranceUtils;
|
||
import com.gh.common.util.ShareUtils;
|
||
import com.gh.common.view.VerticalItemDecoration;
|
||
import com.gh.download.DownloadManager;
|
||
import com.gh.gamecenter.adapter.viewholder.DetailViewHolder;
|
||
import com.gh.gamecenter.entity.GameEntity;
|
||
import com.gh.gamecenter.entity.NewsDetailEntity;
|
||
import com.gh.gamecenter.entity.NewsEntity;
|
||
import com.gh.gamecenter.entity.UserDataEntity;
|
||
import com.gh.gamecenter.eventbus.EBConcernChanged;
|
||
import com.gh.gamecenter.eventbus.EBDownloadStatus;
|
||
import com.gh.gamecenter.eventbus.EBNetworkState;
|
||
import com.gh.gamecenter.eventbus.EBPackage;
|
||
import com.gh.gamecenter.newsdetail.NewsDetailAdapter;
|
||
import com.gh.gamecenter.retrofit.Response;
|
||
import com.gh.gamecenter.retrofit.RetrofitManager;
|
||
import com.google.gson.Gson;
|
||
import com.jakewharton.rxbinding.view.RxView;
|
||
import com.lightgame.download.DataWatcher;
|
||
import com.lightgame.download.DownloadEntity;
|
||
import com.lightgame.utils.Utils;
|
||
import com.tencent.tauth.Tencent;
|
||
|
||
import org.greenrobot.eventbus.Subscribe;
|
||
import org.greenrobot.eventbus.ThreadMode;
|
||
import org.json.JSONObject;
|
||
|
||
import java.util.HashMap;
|
||
import java.util.Map;
|
||
import java.util.concurrent.TimeUnit;
|
||
|
||
import butterknife.BindView;
|
||
import retrofit2.HttpException;
|
||
import rx.android.schedulers.AndroidSchedulers;
|
||
import rx.functions.Action1;
|
||
import rx.schedulers.Schedulers;
|
||
|
||
|
||
/**
|
||
* 文章详情页面 要启动该页面 需要传入一下参数 放入 EssayEntity中传过来 文章 id 文章标题 title 文章发表时间 time
|
||
*
|
||
* @author 黄壮华
|
||
*/
|
||
public class NewsDetailActivity extends BaseActivity implements OnClickListener, OnRequestCallBackListener {
|
||
|
||
@BindView(R.id.actionbar_tv_title)
|
||
TextView mActionbarTitle;
|
||
@BindView(R.id.news_detail_rv_show)
|
||
RecyclerView mDetailRv;
|
||
@BindView(R.id.news_detail_ll_bottom)
|
||
LinearLayout mDetailBottomLl;
|
||
@BindView(R.id.reuse_ll_loading)
|
||
LinearLayout mReuseLoading;
|
||
@BindView(R.id.reuse_no_connection)
|
||
LinearLayout mNoConn;
|
||
@BindView(R.id.reuse_none_data)
|
||
LinearLayout mNoneData;
|
||
@BindView(R.id.reuse_tv_none_data)
|
||
TextView mNoneDataTv;
|
||
@BindView(R.id.news_detail_ll_coment)
|
||
RelativeLayout mDetailCommentLl;
|
||
|
||
View mNewsShare;
|
||
ImageView 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 String downloadOffText;
|
||
|
||
private SharedPreferences sp;
|
||
|
||
private GameEntity gameEntity;
|
||
private NewsEntity mNewsEntity;
|
||
private DownloadEntity mDownloadEntity;
|
||
|
||
private Handler handler = new Handler();
|
||
|
||
private long[] mHits = new long[2];
|
||
|
||
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(NewsDetailActivity.this).
|
||
getStatus(downloadEntity.getUrl()))) {
|
||
mDownloadEntity = downloadEntity;
|
||
DetailDownloadUtils.detailInvalidate(getDetailViewHolder());
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
Runnable runnable = new Runnable() {
|
||
@Override
|
||
public void run() {
|
||
if (newsId != null) {
|
||
getNewsDigest(newsId);
|
||
} else {
|
||
if (mNewsEntity == null) return;
|
||
if (mNewsEntity.getType() != null) {
|
||
mActionbarTitle.setText(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, downloadOffText, null,
|
||
true, mEntrance, "新闻详情", adapter.getTitle()); // 下载按钮ViewHolder
|
||
}
|
||
|
||
/**
|
||
* 启动新闻详情页面
|
||
*/
|
||
public static void startNewsDetailActivity(Context context, NewsEntity newsEntity, String entrance) {
|
||
if (!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(EntranceUtils.KEY_ENTRANCE, entrance);
|
||
intent.putExtra(NewsEntity.class.getSimpleName(), newsEntity);
|
||
context.startActivity(intent);
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/**
|
||
* 在收藏启动新闻详情页面
|
||
*/
|
||
public static void startNewsDetailByCollection(Context context, NewsEntity newsEntity, String entrance) {
|
||
if (!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(EntranceUtils.KEY_ENTRANCE, entrance);
|
||
intent.putExtra(NewsEntity.class.getSimpleName(), 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(EntranceUtils.KEY_ENTRANCE, entrance);
|
||
intent.putExtra(KEY_COLLECTIONNEWS, isCollectionNews);
|
||
intent.putExtra(EntranceUtils.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(EntranceUtils.KEY_ENTRANCE, entrance);
|
||
intent.putExtra(EntranceUtils.KEY_NEWSID, newsId);
|
||
return intent;
|
||
}
|
||
|
||
// @Override
|
||
// protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||
// super.onActivityResult(requestCode, resultCode, data);
|
||
// // 刷新评论数
|
||
// if (resultCode == 1001 ) {
|
||
// adapter.commentChange(data.getExtras().getInt("commentNum"));
|
||
// }
|
||
// }
|
||
|
||
|
||
@Override
|
||
protected int getLayoutId() {
|
||
return R.layout.activity_news_detail;
|
||
}
|
||
|
||
//接收QQ或者QQ空间分享回调
|
||
@Override
|
||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||
super.onActivityResult(requestCode, resultCode, data);
|
||
|
||
if (requestCode == com.tencent.connect.common.Constants.REQUEST_QQ_SHARE
|
||
|| requestCode == com.tencent.connect.common.Constants.REQUEST_QZONE_SHARE) {
|
||
Tencent.onActivityResultData(requestCode, resultCode, data, ShareUtils.getInstance(this).QqShareListener);
|
||
}
|
||
}
|
||
|
||
@Override
|
||
protected void onCreate(Bundle savedInstanceState) {
|
||
super.onCreate(savedInstanceState);
|
||
|
||
initTitle("");
|
||
|
||
// 增加actionBar Button
|
||
RelativeLayout reuse_actionbar = mContentView.findViewById(R.id.reuse_actionbar);
|
||
mNewsShare = LayoutInflater.from(this).inflate(R.layout.menu_action_share, reuse_actionbar, false); // 绑定parentView 否则会丢失宽高
|
||
mNewsShare.setVisibility(View.GONE);
|
||
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mNewsShare.getLayoutParams();
|
||
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
|
||
params.addRule(RelativeLayout.CENTER_VERTICAL);
|
||
reuse_actionbar.addView(mNewsShare, params);
|
||
|
||
mNewsCollection = (ImageView) LayoutInflater.from(this).inflate(R.layout.menu_action_collection, reuse_actionbar, false);
|
||
mNewsCollection.setVisibility(View.GONE);
|
||
RelativeLayout.LayoutParams params2 = (RelativeLayout.LayoutParams) mNewsCollection.getLayoutParams();
|
||
params2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
|
||
params2.addRule(RelativeLayout.CENTER_VERTICAL);
|
||
params2.setMargins(0, 0 ,params.width, 0);
|
||
reuse_actionbar.addView(mNewsCollection, params2);
|
||
|
||
mDetailRv.setHasFixedSize(true);
|
||
mDetailRv.setLayoutManager(new LinearLayoutManager(this));
|
||
mDetailRv.addItemDecoration(new VerticalItemDecoration(this, 8, false));
|
||
adapter = new NewsDetailAdapter(this, this, mEntrance);
|
||
mDetailRv.setAdapter(adapter);
|
||
|
||
newsId = getIntent().getStringExtra(EntranceUtils.KEY_NEWSID);
|
||
mIsCollectionNews = getIntent().getBooleanExtra(KEY_COLLECTIONNEWS, false);
|
||
if (getIntent().getBundleExtra(EntranceUtils.KEY_DATA) != null) {
|
||
newsId = getIntent().getBundleExtra(EntranceUtils.KEY_DATA).getString(EntranceUtils.KEY_NEWSID);
|
||
}
|
||
if (newsId == null) {
|
||
mNewsEntity = getIntent().getParcelableExtra(NewsEntity.class.getSimpleName());
|
||
if (mNewsEntity != null) {
|
||
if (mNewsEntity.getType() != null) {
|
||
mActionbarTitle.setText(mNewsEntity.getType());
|
||
}
|
||
adapter.setId(mNewsEntity.getId());
|
||
adapter.setType(mNewsEntity.getType());
|
||
adapter.setTitle(mNewsEntity.getTitle());
|
||
adapter.getNewsDetail();
|
||
mNewsShare.setVisibility(View.VISIBLE);
|
||
|
||
if (mIsCollectionNews) {
|
||
getNewsDigest(mNewsEntity.getId());
|
||
}
|
||
}
|
||
} else {
|
||
getNewsDigest(newsId);
|
||
}
|
||
|
||
start = System.currentTimeMillis();
|
||
|
||
View view = getWindow().findViewById(Window.ID_ANDROID_CONTENT);
|
||
if (view != null) {
|
||
view.setOnClickListener(new OnClickListener() {
|
||
@Override
|
||
public void onClick(View 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("fontsize", 1);
|
||
if (fontsize == 0) {
|
||
fontsize = 1;
|
||
}
|
||
|
||
mNoConn.setOnClickListener(this);
|
||
mDetailCommentLl.setOnClickListener(this);
|
||
mNewsCollection.setOnClickListener(this);
|
||
|
||
// 防抖处理
|
||
RxView.clicks(mNewsShare)
|
||
.throttleFirst(1, TimeUnit.SECONDS)
|
||
.subscribe(new Action1<Void>() {
|
||
@Override
|
||
public void call(Void aVoid) {
|
||
if (adapter != null && adapter.getNewsDetailEntity() != null) {
|
||
Map<String, Object> kv = new HashMap<>();
|
||
kv.put("名字", adapter.getNewsDetailEntity().getTitle());
|
||
kv.put("位置", "分享");
|
||
DataUtils.onEvent(NewsDetailActivity.this, "点击", "新闻详情", kv);
|
||
|
||
DataCollectionUtils.uploadClick(NewsDetailActivity.this, "分享", "新闻详情"
|
||
, adapter.getNewsDetailEntity().getTitle());
|
||
|
||
String url = "http://www.ghzs666.com/article/" +
|
||
adapter.getNewsDetailEntity().getId() + ".html";
|
||
if (gameEntity == null) {
|
||
showShare(url, adapter.getNewsDetailEntity().getTitle(),
|
||
"http://image.ghzs666.com/pic/57d604808ab49e467d8b4568.png",
|
||
adapter.getNewsDetailEntity().getTitle(), null, false);
|
||
} else {
|
||
showShare(url, gameEntity.getName(), gameEntity.getIcon(),
|
||
adapter.getNewsDetailEntity().getTitle(), gameEntity.getTag(), false);
|
||
}
|
||
}
|
||
}
|
||
});
|
||
}
|
||
|
||
@Override
|
||
protected void onDestroy() {
|
||
super.onDestroy();
|
||
handler.removeCallbacksAndMessages(null);
|
||
}
|
||
|
||
@Override
|
||
protected void onPause() {
|
||
super.onPause();
|
||
if (!isSentReport) {
|
||
long end = System.currentTimeMillis();
|
||
|
||
int seconds = (int) ((end - start) / 1000);
|
||
|
||
String cost;
|
||
if (seconds < 5) {
|
||
cost = "小于5秒";
|
||
} else if (seconds < 30) {
|
||
cost = "5秒-30秒";
|
||
} else if (seconds < 60) {
|
||
cost = "30秒-60秒";
|
||
} else {
|
||
cost = "大于60秒";
|
||
}
|
||
|
||
if (adapter.getNewsDetailEntity() != null) {
|
||
// 阅读报告
|
||
Map<String, Object> kv = new HashMap<>();
|
||
kv.put("用时", cost);
|
||
DataUtils.onEvent(NewsDetailActivity.this, "阅读文章", adapter.getNewsDetailEntity().getTitle(), kv);
|
||
|
||
// 阅读报告
|
||
Map<String, Object> kv1 = new HashMap<>();
|
||
kv1.put(mEntrance, "阅读数");
|
||
kv1.put(mEntrance, "用时:" + cost);
|
||
DataUtils.onEvent(NewsDetailActivity.this, "文章数据", adapter.getNewsDetailEntity().getTitle(), kv1);
|
||
|
||
if (seconds > 0) {
|
||
DataCollectionUtils.uploadNews(this, adapter.getNewsDetailEntity(), gameEntity, seconds, mEntrance);
|
||
}
|
||
}
|
||
|
||
isSentReport = true;
|
||
}
|
||
DownloadManager.getInstance(this).removeObserver(dataWatcher);
|
||
}
|
||
|
||
@Override
|
||
protected void onResume() {
|
||
super.onResume();
|
||
if (gameEntity != null
|
||
&& gameEntity.getApk() != null
|
||
&& gameEntity.getApk().size() == 1) {
|
||
DetailDownloadUtils.detailInitDownload(getDetailViewHolder(), true);
|
||
}
|
||
DownloadManager.getInstance(this).addObserver(dataWatcher);
|
||
}
|
||
|
||
@Override
|
||
public void loadDone() { // 通知更新收藏按钮
|
||
mNewsCollection.setVisibility(View.VISIBLE);
|
||
NewsDetailEntity newsDetailEntity = adapter.getNewsDetailEntity();
|
||
if (newsDetailEntity.getUserData() != null && newsDetailEntity.getUserData().isArticleFavorite()) {
|
||
mNewsCollection.setImageResource(R.drawable.detail_collection_select);
|
||
} else {
|
||
mNewsCollection.setImageResource(R.drawable.detail_collection_unselect);
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void loadDone(Object obj) {
|
||
if (mReuseLoading != null) {
|
||
mReuseLoading.setVisibility(View.GONE);
|
||
mDetailRv.setVisibility(View.VISIBLE);
|
||
}
|
||
getGameDetail((String) obj);
|
||
}
|
||
|
||
@Override
|
||
public void loadError() {
|
||
mDetailRv.setVisibility(View.GONE);
|
||
mReuseLoading.setVisibility(View.GONE);
|
||
mDetailBottomLl.setVisibility(View.GONE);
|
||
mNoConn.setVisibility(View.VISIBLE);
|
||
}
|
||
|
||
@Override
|
||
public void loadEmpty() {
|
||
|
||
}
|
||
|
||
private void getNewsDigest(final String newsId) {
|
||
RetrofitManager.getInstance(this).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) { // 对比查看收藏文章是否修改
|
||
Gson gson = new Gson();
|
||
|
||
|
||
String newEntity = gson.toJson(response.getThumbnail());
|
||
String entity = gson.toJson(mNewsEntity.getThumbnail());
|
||
if (!newEntity.equals(entity) || !response.getType().equals(mNewsEntity.getType())
|
||
|| !response.getTitle().equals(mNewsEntity.getTitle())) {
|
||
CollectionUtils.INSTANCE.patchCollection(NewsDetailActivity.this, response.getId(), CollectionUtils.CollectionType.article);
|
||
} else {
|
||
Utils.log("========相同");
|
||
}
|
||
return;
|
||
}
|
||
|
||
mNewsEntity = response;
|
||
if (response.getType() != null) {
|
||
mActionbarTitle.setText(response.getType());
|
||
}
|
||
|
||
adapter.setId(newsId);
|
||
adapter.setType(response.getType());
|
||
adapter.setTitle(response.getTitle());
|
||
adapter.getNewsDetail();
|
||
|
||
mNewsShare.setVisibility(View.VISIBLE);
|
||
}
|
||
|
||
@Override
|
||
public void onFailure(HttpException e) {
|
||
mDetailRv.setVisibility(View.GONE);
|
||
mReuseLoading.setVisibility(View.GONE);
|
||
mDetailBottomLl.setVisibility(View.GONE);
|
||
mNoConn.setVisibility(View.VISIBLE);
|
||
}
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 增加手势监听,控制字体大小
|
||
*
|
||
* @author 柯皓源
|
||
*/
|
||
@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 (isSecondDown) {
|
||
if ((R11 - R12) > scrollSize && fontsize > 1) {
|
||
fontsize--;
|
||
adapter.setFontSize(fontsize);
|
||
sp.edit().putInt("fontsize", fontsize).apply();
|
||
String fontSizeText = getFontSize(fontsize);
|
||
Utils.toast(this, fontSizeText);
|
||
}
|
||
if ((R11 - R12) < -scrollSize && fontsize < 4) {
|
||
fontsize++;
|
||
adapter.setFontSize(fontsize);
|
||
sp.edit().putInt("fontsize", 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, new CheckLoginUtils.OnLoggenInListener() {
|
||
@Override
|
||
public void onLoggedIn() {
|
||
Intent intent = MessageDetailActivity.getIntentById(NewsDetailActivity.this, adapter.getNewsDetailEntity().getId(), null, true
|
||
, mEntrance + "(新闻详情[" + adapter.getTitle() + "])");
|
||
startActivity(intent);
|
||
}
|
||
});
|
||
} else if (v == mNewsCollection) {
|
||
CheckLoginUtils.checkLogin(this, new CheckLoginUtils.OnLoggenInListener() {
|
||
@Override
|
||
public void onLoggedIn() {
|
||
final NewsDetailEntity newsDetailEntity = adapter.getNewsDetailEntity();
|
||
mNewsCollection.setEnabled(false);
|
||
if (newsDetailEntity.getUserData() != null && newsDetailEntity.getUserData().isArticleFavorite()) {
|
||
CollectionUtils.INSTANCE.deleteCollection(NewsDetailActivity.this, mNewsEntity.getId(),
|
||
CollectionUtils.CollectionType.article,
|
||
new CollectionUtils.OnCollectionListener() {
|
||
@Override
|
||
public void onSuccess() {
|
||
newsDetailEntity.getUserData().setArticleFavorite(false);
|
||
mNewsCollection.setEnabled(true);
|
||
mNewsCollection.setImageResource(R.drawable.detail_collection_unselect);
|
||
toast("取消收藏");
|
||
}
|
||
|
||
@Override
|
||
public void onError() {
|
||
mNewsCollection.setEnabled(true);
|
||
toast("取消收藏失败");
|
||
}
|
||
});
|
||
|
||
} else {
|
||
Map<String, String> map = new HashMap<>();
|
||
map.put("_id", mNewsEntity.getId());
|
||
CollectionUtils.INSTANCE.postCollection(NewsDetailActivity.this, new JSONObject(map).toString(),
|
||
CollectionUtils.CollectionType.article,
|
||
new CollectionUtils.OnCollectionListener() {
|
||
@Override
|
||
public void onSuccess() {
|
||
UserDataEntity userData = newsDetailEntity.getUserData();
|
||
if (userData == null) {
|
||
userData = new UserDataEntity();
|
||
newsDetailEntity.setUserData(userData);
|
||
}
|
||
userData.setArticleFavorite(true);
|
||
mNewsCollection.setEnabled(true);
|
||
mNewsCollection.setImageResource(R.drawable.detail_collection_select);
|
||
toast("收藏成功");
|
||
}
|
||
|
||
@Override
|
||
public void onError() {
|
||
mNewsCollection.setEnabled(true);
|
||
toast("收藏失败");
|
||
}
|
||
});
|
||
}
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
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 (TextUtils.isEmpty(gameId)) {
|
||
mDetailBottomLl.setVisibility(View.GONE);
|
||
return;
|
||
}
|
||
RetrofitManager.getInstance(this).getApi().getGameNewsDigest(gameId)
|
||
.subscribeOn(Schedulers.io())
|
||
.observeOn(AndroidSchedulers.mainThread())
|
||
.subscribe(new Response<GameEntity>() {
|
||
@Override
|
||
public void onResponse(GameEntity response) {
|
||
ApkActiveUtils.filterHideApk(response);
|
||
gameEntity = response;
|
||
adapter.setGameEntity(gameEntity);
|
||
adapter.notifyItemInserted(1);
|
||
downloadOffText = gameEntity.getDownloadOffText();
|
||
|
||
mDetailBottomLl.setVisibility(View.VISIBLE);
|
||
DetailDownloadUtils.detailInitDownload(getDetailViewHolder(), true);
|
||
}
|
||
});
|
||
}
|
||
|
||
// 关注事件
|
||
@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.getUserData() == null) {
|
||
newsDetailEntity.setUserData(new UserDataEntity());
|
||
}
|
||
newsDetailEntity.getUserData().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() != 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() != null
|
||
&& gameEntity.getApk().size() == 1) {
|
||
String packageName = gameEntity.getApk().get(0).getPackageName();
|
||
if (packageName.equals(busFour.getPackageName())) {
|
||
DetailDownloadUtils.detailInitDownload(getDetailViewHolder(), false);
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|