diff --git a/app/src/main/java/com/gh/common/util/MessageShareUtils.java b/app/src/main/java/com/gh/common/util/MessageShareUtils.java index c28614dbf8..6964e69613 100644 --- a/app/src/main/java/com/gh/common/util/MessageShareUtils.java +++ b/app/src/main/java/com/gh/common/util/MessageShareUtils.java @@ -69,6 +69,8 @@ public class MessageShareUtils { private Context context; + private Activity activity; // 用来关闭分享页面 + public static MessageShareUtils getInstance(Context context) { if (instance == null) { instance = new MessageShareUtils(); @@ -82,6 +84,7 @@ public class MessageShareUtils { public void showShareWindows(View view, Bitmap bitmap, String picName, boolean ispopupWindow){ this.shareBm = bitmap; this.picName = picName; + this.activity= (Activity) context; RelativeLayout contentView = new RelativeLayout(context); contentView.setBackgroundColor(0x8c000000); @@ -181,9 +184,11 @@ public class MessageShareUtils { switch (holder.getPosition()){ case 0: wechatSahre(); + activity.finish(); break; case 1: wechatMomentsSahre(); + activity.finish(); break; case 2: qqSahre(); @@ -197,7 +202,8 @@ public class MessageShareUtils { if (popupWindow == null) return; popupWindow.dismiss(); - break; + activity.finish(); + break; } } @@ -259,6 +265,8 @@ public class MessageShareUtils { private void wechatSahre(){ Utils.toast(context,"分享跳转中..."); + api = WXAPIFactory.createWXAPI(context, "wx3ffd0785fad18111"); //初始化微信分享 + WXImageObject imgObj = new WXImageObject(); imgObj.setImagePath(context.getExternalCacheDir().getPath() + "/ShareImg/" + picName); WXMediaMessage msg = new WXMediaMessage(); @@ -336,6 +344,8 @@ public class MessageShareUtils { public IUiListener QqShareListener = new IUiListener() { @Override public void onComplete(Object o) { + activity.finish(); + activity.overridePendingTransition(0, 0);//禁止退出Activity 动画 Utils.toast(context, "分享成功"); } @@ -346,6 +356,8 @@ public class MessageShareUtils { @Override public void onCancel() { + activity.finish(); + activity.overridePendingTransition(0, 0);//禁止退出Activity 动画 Utils.toast(context, "分享已取消"); } }; @@ -364,6 +376,7 @@ public class MessageShareUtils { return false; } + //写到存储卡中 public void writeBitmap(String path, String name, Bitmap bitmap, boolean isToast) { File file = new File(path); if (!file.exists()) { diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 4da4b036c4..eb5dc7b7f8 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -484,7 +484,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene if (isNewFirstLaunch) { getPluginUpdate(); initConcern(); // 初始化关注 - sp.edit().putBoolean("isNewFirstLaunchV" + PackageUtils.getVersion(getApplicationContext()), false).apply(); +// sp.edit().putBoolean("isNewFirstLaunchV" + PackageUtils.getVersion(getApplicationContext()), false).apply(); } // 获取免责声明 @@ -751,6 +751,9 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene * 更新关注列表数据 */ private void update() { + if (isNewFirstLaunch) { + EventBus.getDefault().post(new EBUISwitch("NewsFragment", -1)); //通知更新推荐关注小版块 TODO 插件化平台可能为空 + } new Thread(){ @Override public void run() { diff --git a/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java b/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java index fdfdcda585..862bcb3b1c 100644 --- a/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java @@ -25,6 +25,8 @@ import com.gh.common.util.TimestampUtils; import com.gh.common.util.TokenUtils; import com.gh.common.util.Utils; import com.gh.gamecenter.adapter.MessageDetailAdapter; +import com.gh.gamecenter.db.CommentDao; +import com.gh.gamecenter.db.info.CommentInfo; import com.gh.gamecenter.entity.CommentEntity; import com.gh.gamecenter.entity.UserEntity; import com.gh.gamecenter.manager.CommentManager; @@ -66,6 +68,8 @@ public class MessageDetailActivity extends BaseActivity { private Toast mToast; + private CommentDao mCommentDao; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -78,14 +82,13 @@ public class MessageDetailActivity extends BaseActivity { isDone = false; - mMessageDetailAdapter = new MessageDetailAdapter(this); + mCommentDao = new CommentDao(this); + + mMessageDetailAdapter = new MessageDetailAdapter(this, mCommentDao); mLayoutManager = new LinearLayoutManager(this); mMessageDetailRv.setLayoutManager(mLayoutManager); mMessageDetailRv.setAdapter(mMessageDetailAdapter); - mMessageDetailIconDv.setImageURI(sp.getString("user_icon", "res:///" + R.drawable.user_default_icon_comment)); - mMessageDetailUserNameTv.setText(sp.getString("user_name", "光环用户")); - mMessageDetailEt.addTextChangedListener(watcher); mMessageDetailCommentSend.setEnabled(false); @@ -102,6 +105,31 @@ public class MessageDetailActivity extends BaseActivity { } } }); + + //检查sp是否有用户信息 + if (sp.getString("user_name", null) == null || sp.getString("user_name" , null).isEmpty()) { + new Thread(new Runnable() { + @Override + public void run() { + TokenUtils.getToken(MessageDetailActivity.this); + MessageDetailActivity.this.runOnUiThread(new Runnable() { + @Override + public void run() { + mMessageDetailIconDv.setImageURI(sp.getString("user_icon", "res:///"+ + R.drawable.user_default_icon_comment)); + mMessageDetailUserNameTv.setText(sp.getString("user_name", "光环用户")); + } + }); + } + }).start(); + + } else { + mMessageDetailIconDv.setImageURI(sp.getString("user_icon", "res:///"+ + R.drawable.user_default_icon_comment)); + mMessageDetailUserNameTv.setText(sp.getString("user_name", "光环用户")); + } + + } private TextWatcher watcher = new TextWatcher() { @@ -187,6 +215,9 @@ public class MessageDetailActivity extends BaseActivity { } catch (JSONException e) { e.printStackTrace(); } + + mCommentDao.add(new CommentInfo(commentId));//添加评论id到数据库, 后续判断是否是自身评论 + mToast.cancel(); Utils.toast(MessageDetailActivity.this, "发表成功"); mMessageDetailCommentHint.setVisibility(View.VISIBLE); @@ -201,7 +232,6 @@ public class MessageDetailActivity extends BaseActivity { UserEntity userEntity = new UserEntity(); userEntity.setIcon(sp.getString("user_icon", null)); userEntity.setName(sp.getString("user_name", "光环用户")); - userEntity.setId(TokenUtils.getDeviceId(MessageDetailActivity.this)); commentEntity.setContent(content); commentEntity.setId(commentId); commentEntity.setVote(0); @@ -251,6 +281,10 @@ public class MessageDetailActivity extends BaseActivity { Utils.toast(MessageDetailActivity.this, "账号状态异常,暂时无法发表评论"); } else if ("article blocked".equals(detail)) { Utils.toast(MessageDetailActivity.this, "文章异常,无法发表评论"); + mMessageDetailCommentHint.setVisibility(View.VISIBLE); + mMessageDetailCommentRl.setVisibility(View.GONE); + mMessageDetailUserRl.setVisibility(View.GONE); + setSoftInput(false); } else if ("illegal".equals(detail)) { Utils.toast(MessageDetailActivity.this, "评论内容可能包括敏感信息,请修改后再发表"); } else { @@ -260,11 +294,6 @@ public class MessageDetailActivity extends BaseActivity { e.printStackTrace(); } - mMessageDetailCommentHint.setVisibility(View.VISIBLE); - mMessageDetailCommentRl.setVisibility(View.GONE); - mMessageDetailUserRl.setVisibility(View.GONE); - setSoftInput(false); - } }); } diff --git a/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java b/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java index 26110246c5..05afdf22e0 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java @@ -1,5 +1,6 @@ package com.gh.gamecenter; +import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.os.Handler; @@ -13,6 +14,7 @@ import com.facebook.drawee.view.SimpleDraweeView; import com.gh.base.BaseActivity; import com.gh.common.util.MessageShareUtils; import com.gh.gamecenter.manager.SystemBarTintManager; +import com.tencent.tauth.Tencent; import java.io.File; @@ -40,6 +42,17 @@ public class ShareCardActivity extends BaseActivity { String shareContent; String picName; + //接收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, MessageShareUtils.getInstance(this).QqShareListener); + } + + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java b/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java index ccf34b70fb..7d96b1809d 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java @@ -1,5 +1,6 @@ package com.gh.gamecenter; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; @@ -22,6 +23,7 @@ import com.facebook.imagepipeline.image.ImageInfo; import com.gh.base.BaseActivity; import com.gh.common.util.MessageShareUtils; import com.gh.gamecenter.manager.SystemBarTintManager; +import com.tencent.tauth.Tencent; import java.io.File; import java.io.IOException; @@ -62,6 +64,17 @@ public class ShareCardPicActivity extends BaseActivity { private Bitmap shareBm; + //接收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, MessageShareUtils.getInstance(this).QqShareListener); + } + + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 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 34cd93c804..410eea467d 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java @@ -2,6 +2,7 @@ package com.gh.gamecenter.adapter; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.widget.RecyclerView; import android.text.Html; @@ -35,6 +36,7 @@ import com.gh.gamecenter.adapter.viewholder.CommentHeadViewHolder; import com.gh.gamecenter.adapter.viewholder.CommentViewHolder; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.adapter.viewholder.NewsDigestViewHolder; +import com.gh.gamecenter.db.CommentDao; import com.gh.gamecenter.db.VoteDao; import com.gh.gamecenter.db.info.VoteInfo; import com.gh.gamecenter.entity.CommentEntity; @@ -77,6 +79,12 @@ public class MessageDetailAdapter extends RecyclerView.Adapter 0) { Intent intent = new Intent(mContext, ShareCardPicActivity.class); Bundle bundle = new Bundle(); bundle.putString("gameName", mConcernEntity.getGameName()); bundle.putString("gameIconUrl", mConcernEntity.getGameIcon()); - bundle.putString("shareContent", mConcernEntity.getContent()); + bundle.putString("shareContent", shareContent); bundle.putStringArrayList("shareArrImg", (ArrayList) mConcernEntity.getImg()); intent.putExtras(bundle); mContext.startActivity(intent); @@ -347,7 +368,7 @@ public class MessageDetailAdapter extends RecyclerView.Adapter dao; + + public CommentDao(Context context) { + try { + helper = DatabaseHelper.getHelper(context); + dao = helper.getDao(CommentInfo.class); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + /** + * 添加一个评论 + */ + public void add(CommentInfo comment) { + try { + dao.create(comment); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + /* + * 根据commentId 查找是否是自己的评论 + */ + public boolean isMyComment(String id) { + try { + if (dao.queryForId(id) != null) { + return true; + } + return false; + } catch (SQLException e) { + e.printStackTrace(); + } + return false; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java b/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java index c74ad54603..33de9fb173 100644 --- a/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java +++ b/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java @@ -5,6 +5,7 @@ import android.database.sqlite.SQLiteDatabase; import android.support.v4.util.ArrayMap; import com.gh.common.util.Utils; +import com.gh.gamecenter.db.info.CommentInfo; import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.db.info.DataCollectionInfo; import com.gh.gamecenter.db.info.FilterInfo; @@ -60,6 +61,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { TableUtils.createTable(connectionSource, FilterInfo.class); TableUtils.createTable(connectionSource, DataCollectionInfo.class); TableUtils.createTable(connectionSource, VoteInfo.class); + TableUtils.createTable(connectionSource, CommentInfo.class); } catch (SQLException e) { e.printStackTrace(); @@ -78,6 +80,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { TableUtils.dropTable(connectionSource, FilterInfo.class, true); TableUtils.dropTable(connectionSource, DataCollectionInfo.class, true); TableUtils.dropTable(connectionSource, VoteInfo.class, true); + TableUtils.dropTable(connectionSource, CommentInfo.class, true);; onCreate(database, connectionSource); } catch (SQLException e) { diff --git a/app/src/main/java/com/gh/gamecenter/db/info/CommentInfo.java b/app/src/main/java/com/gh/gamecenter/db/info/CommentInfo.java new file mode 100644 index 0000000000..623f49ac65 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/db/info/CommentInfo.java @@ -0,0 +1,33 @@ +package com.gh.gamecenter.db.info; + +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; + +/** + * Created by khy on 2016/11/21. + */ + +@DatabaseTable(tableName = "tb_comment") +public class CommentInfo { + @DatabaseField(id = true, columnName = "commentId") + private String commentId; + + public String getCommentId() { + return commentId; + } + + public void setCommentId(String commentId) { + this.commentId = commentId; + } + + public CommentInfo(String commentId) { + this.commentId = commentId; + } + + public CommentInfo() {} + + @Override + public String toString() { + return "CommentEntity [commentId=" + commentId + "]"; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/entity/UserEntity.java b/app/src/main/java/com/gh/gamecenter/entity/UserEntity.java index 2a5d912f24..c6ac62bbe7 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/UserEntity.java +++ b/app/src/main/java/com/gh/gamecenter/entity/UserEntity.java @@ -1,26 +1,14 @@ package com.gh.gamecenter.entity; -import com.google.gson.annotations.SerializedName; - /** * Created by khy on 2016/11/8. */ public class UserEntity { - @SerializedName("_id") - private String Id; - private String icon; private String name; - public void setId(String Id) { - this.Id = Id; - } - public String getId() { - return Id; - } - public void setIcon(String icon) { this.icon = icon; } diff --git a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java index c1c21f0beb..03ad6623ba 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java @@ -1,6 +1,8 @@ package com.gh.gamecenter.news; +import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.util.ArrayMap; @@ -16,7 +18,7 @@ import android.widget.TextView; import com.facebook.drawee.view.SimpleDraweeView; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.BaseFragment; -import com.gh.common.util.ImageUtils; +import com.gh.common.constant.Config; import com.gh.common.util.PackageUtils; import com.gh.gamecenter.R; import com.gh.gamecenter.db.info.ConcernInfo; @@ -70,6 +72,10 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On private ConcernManager concernManager; + private SharedPreferences sp; + + private boolean isNewFirstLaunch; + Runnable runnable = new Runnable() { @Override public void run() { @@ -90,6 +96,14 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On concernManager = new ConcernManager(getActivity()); concernMap = new ArrayMap<>(); + sp = getActivity().getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE); + + isNewFirstLaunch = sp.getBoolean("isNewFirstLaunchV" + PackageUtils.getVersion(getActivity()), true); + + if (isNewFirstLaunch) { + sp.edit().putBoolean("isNewFirstLaunchV" + PackageUtils.getVersion(getActivity()), false).apply(); + } + refreshLayout.setColorSchemeResources(R.color.theme); refreshLayout.setOnRefreshListener(this); @@ -149,7 +163,10 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On @Override public void loadDone() { // 数据加载成功回调 refreshLayout.setRefreshing(false); + emptyLayout.setVisibility(View.GONE); + concernLayout.setVisibility(View.GONE); loadingLayout.setVisibility(View.GONE); + recyclerView.setVisibility(View.VISIBLE); } @Override @@ -188,9 +205,16 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On public void onEventMainThread(EBUISwitch swith) { if ("NewsFragment".equals(swith.getFrom())) { if (swith.getPosition() == 0) { - if (loadingLayout.getVisibility() == View.VISIBLE) { + if (loadingLayout.getVisibility() == View.VISIBLE && !isNewFirstLaunch) { adapter.addList(0); } + } else if (swith.getPosition() == -1) { // 初始化安装游戏完成 默认开启推荐版块!有关注新闻再隐藏 + refreshLayout.setRefreshing(false); + loadingLayout.setVisibility(View.GONE); + recyclerView.setVisibility(View.GONE); + emptyLayout.setVisibility(View.VISIBLE); + refreshLayout.setEnabled(false); + initInstallGame(); } } } @@ -205,6 +229,10 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On adapter = new News1FragmentAdapter(News1Fragment.this); recyclerView.setAdapter(adapter); adapter.addList(0); + + if (isNewFirstLaunch) { + isNewFirstLaunch = false; + } } @Override @@ -222,6 +250,9 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On // 推荐关注改为手机安装的游戏+光环助手 private void initInstallGame() { + recommendGameList.clear();//清除上一次记录 + concern.setEnabled(true);//防止上一次关注按钮不可以,导致重新刷新后也不可用 + ObservableUtil.computation(new Observable.OnSubscribe>() { @Override public void call(Subscriber> subscriber) { @@ -372,8 +403,7 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On view.findViewById(R.id.concern_item_concern).setVisibility(View.GONE); concern.setVisibility(View.VISIBLE); - ImageUtils.getInstance().display(getActivity().getResources(), icon, - gameEntity.getIcon(), R.drawable.ocupy); + icon.setImageURI(gameEntity.getIcon()); name.setText(gameEntity.getName()); concern.setImageResource(R.drawable.concern_select_true); 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 071ac3f761..984c63bad5 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java @@ -548,12 +548,18 @@ public class News1FragmentAdapter extends RecyclerView.Adapter 0) { Intent intent = new Intent(context, ShareCardPicActivity.class); Bundle bundle = new Bundle(); bundle.putString("gameName", concernEntity.getGameName()); bundle.putString("gameIconUrl", concernEntity.getGameIcon()); - bundle.putString("shareContent", concernEntity.getContent()); + bundle.putString("shareContent", shareContent); bundle.putStringArrayList("shareArrImg", (ArrayList) concernEntity.getImg()); intent.putExtras(bundle); context.startActivity(intent); @@ -562,7 +568,7 @@ public class News1FragmentAdapter extends RecyclerView.Adapter - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_message_detail.xml b/app/src/main/res/layout/activity_message_detail.xml index ad38d5d4f1..6e904a25a2 100644 --- a/app/src/main/res/layout/activity_message_detail.xml +++ b/app/src/main/res/layout/activity_message_detail.xml @@ -53,10 +53,12 @@ android:background="@null" android:paddingTop="10dp" android:paddingBottom="75dp" - android:lineSpacingExtra="5dp" - android:textSize="15sp" + android:drawablePadding="4dp" android:hint="优质评论会被优先展示" android:textCursorDrawable="@drawable/cursor_color" + android:textColorHint="#B2B2B2" + android:textSize="16sp" + android:textColorHighlight="@color/back" android:drawableBottom="@drawable/et_line"/> diff --git a/app/src/main/res/layout/concern_item.xml b/app/src/main/res/layout/concern_item.xml index 898a26b09d..c48923e269 100644 --- a/app/src/main/res/layout/concern_item.xml +++ b/app/src/main/res/layout/concern_item.xml @@ -1,5 +1,6 @@ + fresco:fadeDuration="500" + style="@style/frescoStyle"/>