From 4d76cf46f9be7d0a39884ed7bf0ce1ad489cf982 Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Thu, 25 Oct 2018 17:15:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=89=E7=8E=AF=E5=8A=A9=E6=89=8BV3.5-?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E8=AF=A6=E6=83=85=E9=97=AE=E9=A2=98=E6=B1=87?= =?UTF-8?q?=E6=80=BB(=E5=AE=8C=E6=88=90=EF=BC=9A7.8.9.11.12.13.14.15)=20?= =?UTF-8?q?=20https://gitlab.ghzhushou.com/pm/halo-app-issues/issues/374?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/util/EntranceUtils.java | 1 + .../java/com/gh/gamecenter/MainActivity.java | 12 +++---- .../java/com/gh/gamecenter/entity/Rating.kt | 2 +- .../gamedetail/GameDetailFragment.java | 2 +- .../gamedetail/rating/RatingAdapter.kt | 31 +++++++++++++------ .../gamedetail/rating/RatingFragment.kt | 12 +++++++ .../gamedetail/rating/RatingViewModel.kt | 21 ------------- .../rating/edit/RatingEditActivity.kt | 20 +++--------- .../gamecenter/qa/column/AskColumnAdapter.kt | 2 +- .../retrofit/service/ApiService.java | 2 +- app/src/main/res/layout/gamedetail_body.xml | 2 +- .../main/res/layout/rating_comment_item.xml | 5 +-- app/src/main/res/layout/rating_item.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 14 files changed, 55 insertions(+), 61 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/EntranceUtils.java b/app/src/main/java/com/gh/common/util/EntranceUtils.java index c1054d4c47..0d61d70119 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -108,6 +108,7 @@ public class EntranceUtils { public static final String KEY_ARTICLE_COMMENT_ID = "articleCommentId"; public static final String KEY_DEVICE_NAME = "deviceName"; public static final String KEY_SHOW_ARTICLE_COMMENT = "showArticleComment"; + public static final String KEY_RATING_STAR_COUNT = "ratingStarCount"; public static void jumpActivity(Context context, Bundle bundle) { diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index b63f6a3309..a0cda9015e 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -1073,13 +1073,13 @@ public class MainActivity extends BaseActivity { mDownloadEntity.getUrl(), false); // 默认不删除安装包 sp.getBoolean("autodelete", true) } - if (sp.getBoolean("concerngame", true)) { //设置页面控制是否安装后自动关注 - GameManager gameManager = new GameManager(getApplicationContext()); - GameInfo gameInfo = gameManager.findGame(packageName); - if (gameInfo != null) { - mInstallManager.updateByEntity(gameInfo); - } + GameManager gameManager = new GameManager(getApplicationContext()); + GameInfo gameInfo = gameManager.findGame(packageName); + if (gameInfo != null) { + mInstallManager.updateByEntity(gameInfo); + } + if (sp.getBoolean("concerngame", true)) { //设置页面控制是否安装后自动关注 // 安装后关注游戏 RetrofitManager.getInstance(this).getApi().getGameDigestByPackageName(UrlFilterUtils.getFilterQuery("package", packageName)) .subscribeOn(Schedulers.io()) diff --git a/app/src/main/java/com/gh/gamecenter/entity/Rating.kt b/app/src/main/java/com/gh/gamecenter/entity/Rating.kt index f937d52847..810b94119a 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/Rating.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/Rating.kt @@ -6,7 +6,7 @@ class Rating(val star: Star = Star(), var isExistComment: Boolean = true, val comment: RatingComment? = null) -class Star(val average: Float = 0.0F, +class Star(var average: Float = 0F, val total: Int = 0, val one: Int = 0, val two: Int = 0, diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java index fa27be8ee1..f039d68c6d 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java @@ -480,7 +480,7 @@ public class GameDetailFragment extends NormalFragment { public void showRatingScore(float ratingScore) { ratingScoreContainer.setVisibility(View.VISIBLE); - ratingScoreAverage.setText(String.valueOf(ratingScore)); + ratingScoreAverage.setText(ratingScore == 10.0 ? "10" : String.valueOf(ratingScore)); } @Override diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingAdapter.kt index 290b45b037..e75ca65564 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingAdapter.kt @@ -7,6 +7,7 @@ import android.view.View import android.view.ViewGroup import com.gh.common.constant.ItemViewType import com.gh.common.util.CheckLoginUtils +import com.gh.common.util.ClickUtils import com.gh.common.util.CommentUtils import com.gh.common.util.MtaHelper import com.gh.gamecenter.PersonalHomeActivity @@ -80,19 +81,17 @@ class RatingAdapter(context: Context, data = ratingData ratingSelector.setOnRatingChangeListener { ratingBar, rating -> MtaHelper.onEvent("游戏详情", "评论Tab_点击星星", mListViewModel.game.name + "- ${rating.toInt()}") + if (!ClickUtils.isFastDoubleClick(ratingBar.id, 1000)) { + skipRatingEdit(rating) + // 与传进评论编辑的星星保持一致 + ratingSelector.postDelayed({ + ratingSelector.rating = rating + }, 500) + } } ratingEditBtn.setOnClickListener { MtaHelper.onEvent("游戏详情", "评论Tab_点击我来评论", mListViewModel.game.name) - CheckLoginUtils.checkLogin(mContext) { - if (InstallManager(mContext).findInstallById(mListViewModel.game.id) != null) { - if (mContext is Activity) { - val intent = RatingEditActivity.getIntent(mContext, mListViewModel.game.id!!, ratingData?.device) - (mContext as Activity).startActivityForResult(intent, 1) - } - } else { - Utils.toast(mContext, "安装游戏后才能评论哦") - } - } + skipRatingEdit(0.0F) } includeComment.run { if (this != null && ratingData?.comment != null) { @@ -111,6 +110,18 @@ class RatingAdapter(context: Context, } } + private fun skipRatingEdit(starCount: Float) { + CheckLoginUtils.checkLogin(mContext) { + if (InstallManager(mContext).findInstallById(mListViewModel.game.id) != null) { + if (mContext is Activity) { + val intent = RatingEditActivity.getIntent(mContext, mListViewModel.game.id!!, ratingData?.device, starCount) + (mContext as Activity).startActivityForResult(intent, RatingFragment.RATING_EDIT_REQUEST) + } + } else { + Utils.toast(mContext, "安装游戏后才能评论哦") + } + } + } private fun setCommentClick(binding: RatingCommentItemBinding, comment: RatingComment) { binding.run { diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFragment.kt index 91514bfaa5..57613715f6 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFragment.kt @@ -1,7 +1,9 @@ package com.gh.gamecenter.gamedetail.rating +import android.app.Activity import android.arch.lifecycle.Observer import android.arch.lifecycle.ViewModelProviders +import android.content.Intent import android.databinding.BindingAdapter import android.os.Bundle import android.support.v7.widget.RecyclerView @@ -20,6 +22,13 @@ class RatingFragment : ListFragment() { private var mAdapter: RatingAdapter? = null + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (requestCode == RATING_EDIT_REQUEST && resultCode == Activity.RESULT_OK) { + mListViewModel.initData() + } + } + override fun getItemDecoration(): RecyclerView.ItemDecoration? { return null } @@ -103,5 +112,8 @@ class RatingFragment : ListFragment() { } progress.progress = ((targetScore / star.total.toFloat()) * 100).toInt() } + + + const val RATING_EDIT_REQUEST = 222 } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingViewModel.kt index 405c3c9676..293628f6dd 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingViewModel.kt @@ -15,10 +15,7 @@ import com.gh.gamecenter.retrofit.RetrofitManager import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers -import okhttp3.MediaType -import okhttp3.RequestBody import okhttp3.ResponseBody -import org.json.JSONObject import retrofit2.HttpException class RatingViewModel(application: Application, val game: GameEntity) : ListViewModel(application) { @@ -80,24 +77,6 @@ class RatingViewModel(application: Application, val game: GameEntity) : ListView }) } - fun reportComment(commentId: String, reason: String) { - val jsonObject = JSONObject() - jsonObject.put("reason", reason) - val body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString()) - mApi.reportGameComment(game.id, commentId, body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - - } - - override fun onFailure(e: HttpException?) { - - } - }) - } - class Factory(private val mApplication: Application, private val game: GameEntity) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt index ce2d7fd59f..4e072033ce 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt @@ -1,12 +1,11 @@ package com.gh.gamecenter.gamedetail.rating.edit +import android.app.Activity import android.content.Context import android.content.Intent import android.os.Bundle -import android.text.InputFilter import android.text.TextUtils import android.view.MenuItem -import android.widget.EditText import com.gh.base.BaseActivity import com.gh.base.fragment.WaitingDialogFragment import com.gh.common.util.DeviceUtils @@ -42,8 +41,8 @@ class RatingEditActivity : BaseActivity() { setToolbarMenu(R.menu.menu_game_comment) mGameId = intent.getStringExtra(EntranceUtils.KEY_GAMEID) mBinding = ActivityRatingEditBinding.bind(mContentView) + mBinding?.ratingScore?.rating = intent.getFloatExtra(EntranceUtils.KEY_RATING_STAR_COUNT, 1.0F) mBinding?.deviceName?.text = intent.getStringExtra(EntranceUtils.KEY_DEVICE_NAME) - setEditTextInputSpace(mBinding?.content!!) } override fun onMenuItemClick(item: MenuItem?): Boolean { @@ -81,6 +80,7 @@ class RatingEditActivity : BaseActivity() { .subscribe(object : Response() { override fun onResponse(response: ResponseBody?) { postDialog?.dismiss() + setResult(Activity.RESULT_OK) finish() } @@ -97,22 +97,12 @@ class RatingEditActivity : BaseActivity() { }) } - fun setEditTextInputSpace(editText: EditText) { - val filter = InputFilter { source, _, _, _, _, _ -> - if (source == " " || source.toString().contentEquals("\n")) { - "" - } else { - null - } - } - editText.filters = arrayOf(filter) - } - companion object { - fun getIntent(context: Context, gameId: String, deviceName: String?): Intent { + fun getIntent(context: Context, gameId: String, deviceName: String?, starCount: Float): Intent { val intent = Intent(context, RatingEditActivity::class.java) intent.putExtra(EntranceUtils.KEY_GAMEID, gameId) intent.putExtra(EntranceUtils.KEY_DEVICE_NAME, deviceName) + intent.putExtra(EntranceUtils.KEY_RATING_STAR_COUNT, starCount) return intent } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/column/AskColumnAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/column/AskColumnAdapter.kt index a939221c7b..d97390ed0a 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/column/AskColumnAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/column/AskColumnAdapter.kt @@ -44,7 +44,7 @@ class AskColumnAdapter(context: Context) : BaseRecyclerAdapter> getCommunitiesRecommendNewest(@Path("community_id") String communityId, @Query("page") int page); } \ No newline at end of file diff --git a/app/src/main/res/layout/gamedetail_body.xml b/app/src/main/res/layout/gamedetail_body.xml index cf821ece1b..464b4405bf 100644 --- a/app/src/main/res/layout/gamedetail_body.xml +++ b/app/src/main/res/layout/gamedetail_body.xml @@ -167,7 +167,7 @@ android:layout_height = "match_parent" android:background = "@drawable/tabbar_right_selector" android:gravity = "center" - android:text = "@string/game_detail_rating" + android:text = "@string/game_detail_comment" android:textAlignment = "center" android:textColor = "@color/tabbar_textcolor_selector" android:textSize = "12sp" /> diff --git a/app/src/main/res/layout/rating_comment_item.xml b/app/src/main/res/layout/rating_comment_item.xml index 1f08ab0d49..3815079595 100644 --- a/app/src/main/res/layout/rating_comment_item.xml +++ b/app/src/main/res/layout/rating_comment_item.xml @@ -5,6 +5,8 @@ + + @@ -148,13 +150,12 @@ tools:text = "小米2S" /> diff --git a/app/src/main/res/layout/rating_item.xml b/app/src/main/res/layout/rating_item.xml index 147e509eb3..4173b56eb1 100644 --- a/app/src/main/res/layout/rating_item.xml +++ b/app/src/main/res/layout/rating_item.xml @@ -67,7 +67,7 @@ android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_centerInParent = "true" - android:text = "@{data.star.average + ``}" + android:text = "@{data.star.average == 10.0? `10`: data.star.average + ``}" android:textColor = "@android:color/white" android:textSize = "18sp" tools:text = "8.5" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index af2b20517c..ef9dbd5689 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -104,7 +104,7 @@ 关注 动态 介绍 - 评分 + 评论 请输入搜索关键字 搜索 已安装的游戏