diff --git a/app/src/main/java/com/gh/common/util/PostCommentUtils.java b/app/src/main/java/com/gh/common/util/PostCommentUtils.java index 00b999ab3d..e5557c7b43 100644 --- a/app/src/main/java/com/gh/common/util/PostCommentUtils.java +++ b/app/src/main/java/com/gh/common/util/PostCommentUtils.java @@ -55,22 +55,30 @@ public class PostCommentUtils { }).start(); } - public static void addCommentVoto(final Context context, final String newsId) { - addCommentVoto(context, newsId, true); + public static void addCommentVoto(final Context context, final String newsId, final PostCommentListener listener) { + addCommentVoto(context, newsId, true, listener); } - public static void addCommentVoto(final Context context, final String newsId, final boolean isCheck) { + public static void addCommentVoto(final Context context, final String newsId, final boolean isCheck + , final PostCommentListener listener) { new Thread(new Runnable() { @Override public void run() { StringExtendedRequest request = new StringExtendedRequest( - Request.Method.POST, Config.COMMENT_HOST + "comment/" + newsId + "/vote" , - null, + Request.Method.POST, Config.COMMENT_HOST + "comment/" + newsId + "/vote", + new Response.Listener() { + @Override + public void onResponse(String response) { + listener.postSucced(null); + } + }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { if (error.networkResponse != null && error.networkResponse.statusCode == 401) { - addCommentVoto(context, newsId, false); + addCommentVoto(context, newsId, false,listener); + } else { + listener.postFailed(error); } } }); diff --git a/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java b/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java index c0b296fbe0..0498561c77 100644 --- a/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java @@ -12,6 +12,7 @@ import android.support.v7.widget.RecyclerView; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; +import android.view.KeyEvent; import android.view.View; import android.view.ViewTreeObserver; import android.view.inputmethod.InputMethodManager; @@ -79,6 +80,7 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail @BindView(R.id.message_detail_sv) ScrollView mMessageDetailSv; @BindView(R.id.message_detail_hint_line) View mMessageDetailLine; @BindView(R.id.reuse_no_connection) LinearLayout mNoConnection; + @BindView(R.id.message_detail_close_comment) View mColseCommentV; private LinearLayoutManager mLayoutManager; @@ -90,28 +92,31 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail private CommentDao mCommentDao; + private ConcernEntity mConcernEntity; + + private String newsId; + + private int commentNum = -1; //区分来源 -1:资讯关注列表 !=-1 :新闻详情 + @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); AppController.put("ConcernEntity", adapter.getConcernEntity()); } - private ConcernEntity mConcernEntity; - - private String newsId; - - private int commentNum; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mConcernEntity = (ConcernEntity) AppController.get("ConcernEntity", true); - if (mConcernEntity == null) { - Intent intent = getIntent(); - newsId = intent.getExtras().getString("newsId"); - commentNum = intent.getExtras().getInt("commentNum"); + Intent intent = getIntent(); + newsId = intent.getExtras().getString("newsId"); + commentNum = intent.getExtras().getInt("commentNum"); + + //复用问题 mConcernEntity对应的文章有可能和跳转之前的文章不一致 + if (mConcernEntity != null && newsId != null && !newsId.equals(mConcernEntity.getId())) { + mConcernEntity = null; } View contentView = View.inflate(this, R.layout.activity_messagedetail, null); @@ -194,7 +199,7 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail }); } - if (newsId != null ) { + if (newsId != null && mConcernEntity == null ) { getConcernDigest(); } } @@ -276,7 +281,17 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail setSoftInput(true); } - @OnTouch(R.id.message_detail_rv) + @OnClick(R.id.actionbar_rl_back) + public void OnBackClikListener() { + if (commentNum != -1 && commentNum != adapter.getConcernEntity().getCommentnum()) { + Intent intent= new Intent(); + intent.putExtra("commentNum", adapter.getConcernEntity().getCommentnum()); + setResult(1001, intent); + } + finish(); + } + + @OnTouch(R.id.message_detail_close_comment) public boolean OnRecyclerTouchListener() { if (mMessageDetailCommentRl.getVisibility() == View.VISIBLE) { setSoftInput(false); @@ -341,6 +356,7 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail // 完成评论操作,添加评论数 adapter.addCommentCount(); //修改评论缓存 + CommentManager.updateOkhttpCacheForId(newsId); CommentManager.updateOkhttpCache(newsId); adapter.notifyItemInserted(adapter.getHotCommentListSize() + 2); adapter.notifyItemChanged(adapter.getItemCount() - 1); //刷新脚布局高度 @@ -365,7 +381,7 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail JSONObject errorJson = new JSONObject(errorData); String detail = errorJson.getString("detail"); if ("too frequent".equals(detail)) { - Utils.toast(MessageDetailActivity.this, "@_@ 别话痨哦~休息一会再来评论吧~"); + Utils.toast(MessageDetailActivity.this, "别话痨哦~休息一会再来评论吧~"); } else if ("user blocked".equals(detail)) { Utils.toast(MessageDetailActivity.this, "账号状态异常,暂时无法发表评论"); } else if ("article blocked".equals(detail)) { @@ -442,6 +458,7 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail mMessageDetailEt.setFocusable(true); mMessageDetailEt.setFocusableInTouchMode(true); mMessageDetailEt.requestFocus(); + mColseCommentV.setVisibility(View.VISIBLE); } else { imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0); @@ -449,6 +466,7 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail mMessageDetailLine.setVisibility(View.VISIBLE); mMessageDetailCommentRl.setVisibility(View.GONE); mMessageDetailUserRl.setVisibility(View.GONE); + mColseCommentV.setVisibility(View.GONE); } } @@ -457,4 +475,15 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail setSoftInput(true); } + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if ((keyCode == KeyEvent.KEYCODE_BACK)) { + if (commentNum != -1 && commentNum != adapter.getConcernEntity().getCommentnum()) { + Intent intent= new Intent(); + intent.putExtra("commentNum", adapter.getConcernEntity().getCommentnum()); + setResult(1001, intent); + } + } + return super.onKeyDown(keyCode, event); + } } diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java index b2c2230c58..0fcf8d87e3 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java @@ -1,6 +1,7 @@ package com.gh.gamecenter; import android.app.Activity; +import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.os.SystemClock; @@ -116,6 +117,14 @@ public class NewsDetailActivity extends BaseDetailActivity implements OnClickLis } } + @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 public void loadDone(Object obj) { diff --git a/app/src/main/java/com/gh/gamecenter/WebActivity.java b/app/src/main/java/com/gh/gamecenter/WebActivity.java index 220837dc05..4ed74535ca 100644 --- a/app/src/main/java/com/gh/gamecenter/WebActivity.java +++ b/app/src/main/java/com/gh/gamecenter/WebActivity.java @@ -112,7 +112,7 @@ public class WebActivity extends BaseActivity { Intent intent = new Intent(this, MessageDetailActivity.class); intent.putExtra("newsId", newsId); intent.putExtra("commentNum", commentNum); - startActivity(intent); + startActivityForResult(intent, 1001); } public void getNewsCommentNum() { @@ -142,4 +142,13 @@ public class WebActivity extends BaseActivity { return super.onKeyDown(keyCode, event); } + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + // 刷新评论数 + if (resultCode == 1001 ) { + webComment.setText("查看评论(" + data.getExtras().getInt("commentNum") + ")"); + } + } + } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java index 565cbb276e..b7a07174ad 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java @@ -24,6 +24,7 @@ import com.gh.common.util.DisplayUtils; import com.gh.common.util.GzipUtils; import com.gh.common.util.NewsUtils; import com.gh.common.util.PostCommentUtils; +import com.gh.common.util.TimestampUtils; import com.gh.common.util.Utils; import com.gh.common.view.CardLinearLayout; import com.gh.gamecenter.MessageDetailActivity; @@ -576,27 +577,53 @@ public class MessageDetailAdapter extends RecyclerView.Adapter patchData = parseDesPatchJson(jsonRuslt); patchDatas.addAll(patchData); if( patchData.size() < SkinConfig.perPage ) { startCheckMD5Thread(); - }else{ + } else { pageNum++; String urlPath = SkinConfig.JSON_PATCHURL + pageNum; DownloadUtils.downloadJson( urlPath, handler ); @@ -133,8 +134,12 @@ public class ChangeSkinUtils { tvPer = holder.skinDownloadPerTv; pgPatch.setMax(100); - if (downState == 0) { - tvPatch.setText("检查更新"); + + if (SkinConfig.PG_STATE == SkinConfig.TYPE_UPDATE) { + String showTxt = "点击开始更新(" + patchSize + "MB)"; + changeViewState( showTxt, "blue", SkinConfig.TYPE_UPDATE, true ); + } else if (downState == 0) { + tvPatch.setText("检测更新"); tvPatch.setVisibility(View.VISIBLE); pgPatch.setVisibility(View.GONE); tvPer.setVisibility(View.GONE); @@ -162,7 +167,7 @@ public class ChangeSkinUtils { if ("更新完成".equals(tvPatch.getText().toString())) return; switch ( SkinConfig.PG_STATE ){ case SkinConfig.TYPE_DESUPDATE : - if (!"检查更新".equals(tvPatch.getText().toString())) return; + if (!"检测更新".equals(tvPatch.getText().toString())) return; // /data/data目录下包名文件 File pgFile = new File( "/data/data/" + SkinConfig.patchVersion ); // 内部sdcard中版本文件 @@ -257,7 +262,7 @@ public class ChangeSkinUtils { //比较文件的MD5值,返回MD5值不同的文件个数 private static void relMD5File( Map dirMD5Map ) { updatePatchList = new ArrayList(); - int patchSize = 0; + patchSize = 0; curMD5Num = 0; //获取目录下所有文件的 MD5 值 for ( int i = 0; i < patchDatas.size(); i++ ) { diff --git a/app/src/main/java/com/gh/gamecenter/manager/CommentManager.java b/app/src/main/java/com/gh/gamecenter/manager/CommentManager.java index e4e3ff138a..9f7af5e9cb 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/CommentManager.java +++ b/app/src/main/java/com/gh/gamecenter/manager/CommentManager.java @@ -53,7 +53,7 @@ public class CommentManager { return null; } - // 更新okhttp缓存数据 + // 更新okhttp缓存数据 修改资讯关注列表评论数 ids public static void updateOkhttpCache(final String comment_id) { ObservableUtil.io(new Observable.OnSubscribe() { @Override @@ -83,4 +83,31 @@ public class CommentManager { }, null); } + // 修改新闻详情评论数 id + public static void updateOkhttpCacheForId(final String comment_id) { + ObservableUtil.io(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + String key = Config.COMMENT_HOST + "article/" + comment_id +"/comment/num"; + byte[] data = RetrofitManager.getInstance().getCache(key); + if (data != null) { + try { + JSONArray jsonArray = new JSONArray(new String(data)); + JSONObject jsonObject; + for (int i = 0, size = jsonArray.length(); i < size; i++) { + jsonObject = jsonArray.getJSONObject(i); + if (jsonObject.getString("_id").equals(comment_id)) { + jsonObject.put("num", jsonObject.getInt("num") + 1); + break; + } + } + RetrofitManager.getInstance().updateCache(key, jsonArray.toString().getBytes()); + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + }, null); + } + } diff --git a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java index 5cdbcf9eb0..83608c163b 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java @@ -593,18 +593,19 @@ public class News1FragmentAdapter extends RecyclerView.Adapter 0) { commentNum = response.get(0).getNum(); - notifyItemChanged(getItemCount() - 1); + notifyItemInserted(getItemCount() - 1); } } }); @@ -189,7 +192,8 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { if (gameEntity != null) { count++; } - if (gameEntity != null && gameEntity.getId() != null && !gameEntity.getId().isEmpty()){ + if (gameEntity != null && gameEntity.getId() != null && + !gameEntity.getId().isEmpty() && commentNum != -1){ count++; } if (newsDetailEntity.getMore() != null && newsDetailEntity.getMore().size() != 0) { @@ -201,7 +205,7 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { @Override public int getItemViewType(int position) { if (position == getItemCount() -1 && gameEntity != null && gameEntity.getId() != null - && !gameEntity.getId().isEmpty()) { + && !gameEntity.getId().isEmpty() && commentNum != -1) { return 100; } if (gameEntity != null && position == 1) { @@ -258,7 +262,7 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { Intent intent = new Intent(context, MessageDetailActivity.class); intent.putExtra("newsId", id); intent.putExtra("commentNum", commentNum); - context.startActivity(intent); + activity.startActivityForResult(intent, 1001); } }); } @@ -555,4 +559,9 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { webSettings.setTextZoom(defaultTextZoom + 15 * fontsize); } + public void commentChange(int num) { + commentNum = num; + notifyItemChanged(getItemCount() - 1); + } + } diff --git a/app/src/main/res/drawable-nodpi/splash_01.webp b/app/src/main/res/drawable-nodpi/splash_01.webp index dd149941dd..ff8ab05c1e 100644 Binary files a/app/src/main/res/drawable-nodpi/splash_01.webp and b/app/src/main/res/drawable-nodpi/splash_01.webp differ diff --git a/app/src/main/res/layout/activity_messagedetail.xml b/app/src/main/res/layout/activity_messagedetail.xml index f2a8999e4b..f81eadd145 100644 --- a/app/src/main/res/layout/activity_messagedetail.xml +++ b/app/src/main/res/layout/activity_messagedetail.xml @@ -18,6 +18,14 @@ android:layout_height="match_parent" android:layout_marginBottom="45dp"/> + + + + android:layout_centerVertical="true" + style="@style/frescoStyle"/>