diff --git a/app/src/main/java/com/gh/base/fragment/BaseFragment_TabLayout.java b/app/src/main/java/com/gh/base/fragment/BaseFragment_TabLayout.java index 1a305cb603..206c853122 100644 --- a/app/src/main/java/com/gh/base/fragment/BaseFragment_TabLayout.java +++ b/app/src/main/java/com/gh/base/fragment/BaseFragment_TabLayout.java @@ -77,8 +77,8 @@ public abstract class BaseFragment_TabLayout extends NormalFragment implements V mTabIndicatorView.setupWithTabLayout(mTabLayout); mTabIndicatorView.setupWithViewPager(mViewPager); mTabIndicatorView.setIndicatorWidth(provideIndicatorWidth()); -// if (getArguments() != null) mCheckedIndex = getArguments().getInt(PAGE_INDEX, 0); - mBaseHandler.postDelayed(() -> onPageSelected(mCheckedIndex), 500); + if (getArguments() != null) mCheckedIndex = getArguments().getInt(PAGE_INDEX, 0); + mBaseHandler.postDelayed(() -> mViewPager.setCurrentItem(mCheckedIndex), 500); for (int i = 0; i < mTabLayout.getTabCount(); i++) { TabLayout.Tab tab = mTabLayout.getTabAt(i); diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index 5f8b6218aa..ba56bd7652 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -327,7 +327,7 @@ public class DialogUtils { public static void showWarningDialog(Context context, String title, CharSequence msg, final ConfirmListener listener) { //TODO fix this if (!(context instanceof Activity)) { - return ; + return; } showWarningDialog(context, title, msg, "取消", "确定", listener, null); } @@ -525,7 +525,7 @@ public class DialogUtils { @Override public void onCancel(DialogInterface dialogInterface) { if (clListener != null) - clListener.onCancel(); + clListener.onCancel(); } }); dialog.show(); @@ -671,6 +671,44 @@ public class DialogUtils { } + public static void showSignDialog(Context context, String title, CharSequence message, CharSequence message2 + , String positive, final ConfirmListener cmListener) { + final Dialog dialog = new Dialog(context); + + View contentView = LayoutInflater.from(context).inflate(R.layout.dialog_sign, null); + TextView contentTv = contentView.findViewById(R.id.dialog_content); + TextView titleTv = contentView.findViewById(R.id.dialog_title); + TextView negativeTv = contentView.findViewById(R.id.dialog_negative); + TextView positiveTv = contentView.findViewById(R.id.dialog_positive); + TextView content2Tv = contentView.findViewById(R.id.dialog_content2); + + contentTv.setText(Html.fromHtml(message.toString())); + content2Tv.setText(Html.fromHtml(message2.toString())); + titleTv.setText(title); + positiveTv.setText(positive); + + negativeTv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + dialog.dismiss(); + } + }); + + positiveTv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (cmListener != null) { + cmListener.onConfirm(); + } + dialog.dismiss(); + } + }); + + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + dialog.setContentView(contentView); + dialog.show(); + } + public interface ConfirmListener { void onConfirm(); } diff --git a/app/src/main/java/com/gh/common/util/LoginUtils.java b/app/src/main/java/com/gh/common/util/LoginUtils.java index 809d7fd3cb..9f349d78a2 100644 --- a/app/src/main/java/com/gh/common/util/LoginUtils.java +++ b/app/src/main/java/com/gh/common/util/LoginUtils.java @@ -188,7 +188,7 @@ public class LoginUtils { try { JSONObject detail = content.getJSONObject("detail"); if ("isv.BUSINESS_LIMIT_CONTROL".equals(detail.getString("sub_code"))) { - Utils.toast(context, "获取验证码已超过次数,请稍后再试"); + Utils.toast(context, "获取验证码太频繁,请稍后再试"); } else { Utils.toast(context, detail.getString("sub_msg")); } @@ -333,10 +333,10 @@ public class LoginUtils { Utils.toast(context, "昵称违规"); break; case 403801: - Utils.toast(context, "获取验证码已超过次数,请稍后再试"); + Utils.toast(context, "获取验证码太频繁,请稍后再试"); break; case 403204: - Utils.toast(context, "获取验证码已超过次数,请稍后再试"); + Utils.toast(context, "获取验证码太频繁,请稍后再试"); break; default: Utils.toast(context, code + ""); diff --git a/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java b/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java index b728e17b70..7229296ff9 100644 --- a/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java +++ b/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java @@ -4,7 +4,7 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; -import com.gh.base.fragment.BaseFragment_ViewPager; +import com.gh.base.fragment.BaseFragment_TabLayout; import com.gh.common.util.EntranceUtils; import com.gh.gamecenter.download.DownloadFragment; @@ -42,7 +42,7 @@ public class DownloadManagerActivity extends NormalActivity { // intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance); Bundle bundle = new Bundle(); bundle.putString(EntranceUtils.KEY_ENTRANCE, entrance); - bundle.putInt(BaseFragment_ViewPager.ARGS_INDEX, position); + bundle.putInt(BaseFragment_TabLayout.PAGE_INDEX, position); return getTargetIntent(context, DownloadManagerActivity.class, DownloadFragment.class, bundle); } diff --git a/app/src/main/java/com/gh/gamecenter/NormalActivity.java b/app/src/main/java/com/gh/gamecenter/NormalActivity.java index 75e468840e..fbebc8a22e 100644 --- a/app/src/main/java/com/gh/gamecenter/NormalActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NormalActivity.java @@ -17,6 +17,9 @@ import android.widget.TextView; import com.gh.base.BaseActivity; import com.gh.gamecenter.normal.NormalFragment; import com.gh.gamecenter.normal.ToolbarController; +import com.lightgame.OnTitleClickListener; + +import java.util.List; import butterknife.BindView; @@ -71,7 +74,6 @@ public abstract class NormalActivity extends BaseActivity implements ToolbarCont } - @Override protected int getLayoutId() { return R.layout.activity_normal; @@ -97,6 +99,14 @@ public abstract class NormalActivity extends BaseActivity implements ToolbarCont onBackPressed(); } }); + mNormalTitle.setOnClickListener(view -> { + final List fragmentList = getSupportFragmentManager().getFragments(); + for (Fragment fragment : fragmentList) { + if (fragment instanceof OnTitleClickListener) { + ((OnTitleClickListener) fragment).onTitleClick(); + } + } + }); } @Override diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ToolBoxRvAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ToolBoxRvAdapter.java index a072586d20..9245f55c84 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ToolBoxRvAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ToolBoxRvAdapter.java @@ -12,12 +12,13 @@ import android.widget.TextView; import com.gh.base.OnRequestCallBackListener; import com.gh.common.util.ImageUtils; +import com.gh.common.util.UrlFilterUtils; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SuggestionActivity; import com.gh.gamecenter.WebActivity; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; -import com.gh.gamecenter.adapter.viewholder.LibaoSearchViewHolder; +import com.gh.gamecenter.adapter.viewholder.SearchViewHolder; import com.gh.gamecenter.adapter.viewholder.ToolBoxViewHolder; import com.gh.gamecenter.entity.ToolBoxEntity; import com.gh.gamecenter.manager.UserManager; @@ -31,7 +32,6 @@ import java.util.ArrayList; import java.util.List; import retrofit2.HttpException; -import rx.Observable; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; @@ -78,9 +78,8 @@ public class ToolBoxRvAdapter extends BaseRecyclerAdapter { return; } mIsLoading = true; - Observable> api; - api = RetrofitManager.getInstance(mContext).getApi().getToolKitData(mPage, mSearchKey); - api + RetrofitManager.getInstance(mContext).getApi() + .getToolKitData(mPage, UrlFilterUtils.getFilterQuery("keyword", mIsSearch ? mSearchKey : "")) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Response>() { @@ -154,8 +153,8 @@ public class ToolBoxRvAdapter extends BaseRecyclerAdapter { @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == 0) { - View view = mLayoutInflater.inflate(R.layout.libao_item_search, parent, false); - return new LibaoSearchViewHolder(view); + View view = mLayoutInflater.inflate(R.layout.layout_search_bar, parent, false); + return new SearchViewHolder(view); } else if (viewType == 1) { View view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false); return new FooterViewHolder(view); @@ -175,8 +174,8 @@ public class ToolBoxRvAdapter extends BaseRecyclerAdapter { } else if (holder instanceof FooterViewHolder) { FooterViewHolder viewHolder = (FooterViewHolder) holder; initFooterViewHolder(viewHolder, position); - } else if (holder instanceof LibaoSearchViewHolder) { - LibaoSearchViewHolder viewHolder = (LibaoSearchViewHolder) holder; + } else if (holder instanceof SearchViewHolder) { + SearchViewHolder viewHolder = (SearchViewHolder) holder; initSearchViewHolder(viewHolder); } } @@ -191,7 +190,7 @@ public class ToolBoxRvAdapter extends BaseRecyclerAdapter { } - private void initSearchViewHolder(final LibaoSearchViewHolder viewHolder) { + private void initSearchViewHolder(final SearchViewHolder viewHolder) { if (mSearchKey != null) { viewHolder.searchEt.setText(mSearchKey); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/LibaoSearchViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/SearchViewHolder.java similarity index 64% rename from app/src/main/java/com/gh/gamecenter/adapter/viewholder/LibaoSearchViewHolder.java rename to app/src/main/java/com/gh/gamecenter/adapter/viewholder/SearchViewHolder.java index f82d748a2e..bf18cb4653 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/LibaoSearchViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/SearchViewHolder.java @@ -12,16 +12,16 @@ import butterknife.BindView; /** * Created by khy on 2016/12/26. */ -public class LibaoSearchViewHolder extends BaseRecyclerViewHolder { +public class SearchViewHolder extends BaseRecyclerViewHolder { - @BindView(R.id.libao_et_search) + @BindView(R.id.et_search) public EditText searchEt; - @BindView(R.id.libao_tv_search) + @BindView(R.id.tv_search) public TextView searchTv; - @BindView(R.id.libao_tv_back) + @BindView(R.id.tv_back) public TextView backTv; - public LibaoSearchViewHolder(View itemView) { + public SearchViewHolder(View itemView) { super(itemView); } } diff --git a/app/src/main/java/com/gh/gamecenter/ask/AnswerCommentFragment.java b/app/src/main/java/com/gh/gamecenter/ask/AnswerCommentFragment.java index 20a937b563..8935fdeeae 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/AnswerCommentFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/AnswerCommentFragment.java @@ -32,6 +32,8 @@ import com.lightgame.utils.Utils; import org.json.JSONObject; +import java.util.Iterator; + import butterknife.BindView; import butterknife.OnClick; import butterknife.Optional; @@ -79,6 +81,14 @@ public class AnswerCommentFragment extends ListFragment keys = errorJson.keys(); + while (keys.hasNext()) { // todo 叫后端统一 code/detail + String key = keys.next(); + if (key.equals("detail") && "user banned".equals(errorJson.getString(key))) { + toast(R.string.comment_failed_userblocked); + return; + } + } int errorCode = errorJson.getInt("code"); switch (errorCode) { case 403018: diff --git a/app/src/main/java/com/gh/gamecenter/ask/AnswerDetailFragment.java b/app/src/main/java/com/gh/gamecenter/ask/AnswerDetailFragment.java index eb1fca3d53..1bc207783c 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/AnswerDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/AnswerDetailFragment.java @@ -322,7 +322,8 @@ public class AnswerDetailFragment extends NormalFragment { editContent(); } else { // 跳转意见反馈 - SuggestionActivity.startSuggestionActivity(getContext(), 1, "report", "问题举报:"); + SuggestionActivity.startSuggestionActivity(getContext(), 1, "report", + "回答举报:(" + mAnswerId + ")"); } }); item2.setOnClickListener(v -> { @@ -454,9 +455,9 @@ public class AnswerDetailFragment extends NormalFragment { } if (mDetailEntity.getPublishTime() == mDetailEntity.getUpdateTime()) { - mTime.setText(String.format("发布于 %s", NewsUtils.getFormattedTime(mDetailEntity.getPublishTime()))); + mTime.setText(String.format("发布于 %s\n著作权归作者所有@光环助手", NewsUtils.getFormattedTime(mDetailEntity.getPublishTime()))); } else { - mTime.setText(String.format("编辑于 %s", NewsUtils.getFormattedTime(mDetailEntity.getUpdateTime()))); + mTime.setText(String.format("编辑于 %s\n著作权归作者所有@光环助手", NewsUtils.getFormattedTime(mDetailEntity.getUpdateTime()))); } mAnswerCommentCountTv.setText(String.format("%d 评论", mDetailEntity.getCommentCount())); diff --git a/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsRecommendsAdapter.java b/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsRecommendsAdapter.java index ec89ac773e..83185757bd 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsRecommendsAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsRecommendsAdapter.java @@ -1,11 +1,13 @@ package com.gh.gamecenter.ask; import android.content.Context; +import android.graphics.drawable.ColorDrawable; import android.support.v4.view.ViewPager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; +import android.widget.RadioButton; import com.gh.base.OnListClickListener; import com.gh.common.constant.ItemViewType; @@ -34,8 +36,11 @@ public class AskQuestionsRecommendsAdapter extends ListAdapter { private ProgressBar mSubjectProgressBar; private ViewPager mSubjectViewPager; + private int mWidth; + public AskQuestionsRecommendsAdapter(Context context, OnListClickListener listClickListener, OnSubjectProgressListener progressListener) { super(context); + mWidth = context.getResources().getDisplayMetrics().widthPixels; mProgressListener = progressListener; mListClickListener = listClickListener; } @@ -90,8 +95,17 @@ public class AskQuestionsRecommendsAdapter extends ListAdapter { switch (getItemViewType(position)) { case ItemViewType.ITEM_TOP: AskSubjectViewHolder subjectViewHolder = (AskSubjectViewHolder) holder; - subjectViewHolder.mSubjectProgress.setMax(MAX_PROGRESS); - mSubjectProgressBar = subjectViewHolder.mSubjectProgress; + subjectViewHolder.mSubjectRG.removeAllViews(); + int size = mSubjectEntity.size(); + for (int i = 0; i < size; i++) { + RadioButton radioButton = new RadioButton(mContext); + radioButton.setButtonDrawable(new ColorDrawable(0)); + radioButton.setBackgroundResource(R.drawable.ask_recommends_vp_selector); + ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(mWidth / size, ViewGroup.LayoutParams.MATCH_PARENT); + subjectViewHolder.mSubjectRG.addView(radioButton, i, params); + if (i == 0) radioButton.setChecked(true); + } + mSubjectViewPager = subjectViewHolder.mSubjectViewPager; if (subjectViewHolder.mSubjectViewPager.getAdapter() == null) { subjectViewHolder.mSubjectViewPager.setAdapter(new AskSubjectPageAdapter(mContext, mSubjectEntity)); @@ -104,6 +118,10 @@ public class AskQuestionsRecommendsAdapter extends ListAdapter { @Override public void onPageSelected(int position) { + View view = subjectViewHolder.mSubjectRG.getChildAt(position % size); + if (view instanceof RadioButton) { + ((RadioButton) view).setChecked(true); + } mProgressListener.onStartProgress(); // 每次滑动完成重新启动进度条 } diff --git a/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsRecommendsFragment.java b/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsRecommendsFragment.java index 4a347a3eaf..d94c0da196 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsRecommendsFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsRecommendsFragment.java @@ -6,6 +6,7 @@ import android.os.Bundle; import android.os.Message; import android.support.annotation.Nullable; import android.view.View; +import android.widget.TextView; import com.gh.common.util.AskLogUtils; import com.gh.common.util.CheckLoginUtils; @@ -36,6 +37,8 @@ public class AskQuestionsRecommendsFragment extends ListFragment previousData = mLiveData.getValue(); - if (previousData == null) { + if (previousData == null || TextUtils.isEmpty(sequenceId)) { previousData = new ArrayList<>(); } @@ -137,11 +137,9 @@ public class AskQuestionsRecommendsViewModel extends ListViewModel value = mLiveData.getValue(); - if (loadType == LoadType.RETRY) { - loadAskSubjectColumn(); - } else if (loadType == LoadType.REFRESH && value != null && value.size() > 0) { - loadData(true, mLiveData.getValue().get(0).getSequenceId()); - } else if (value != null && value.size() > 0) { + if (loadType == LoadType.REFRESH && value != null && value.size() > 0) { + loadData(true, value.get(0).getSequenceId()); + } else if (value != null && value.size() > 0 && (LoadType.RETRY == loadType || LoadType.NORMAL == loadType)) { loadData(false, value.get(value.size() - 1).getSequenceId()); } else { loadAskSubjectColumn(); diff --git a/app/src/main/java/com/gh/gamecenter/ask/AskSubjectViewHolder.java b/app/src/main/java/com/gh/gamecenter/ask/AskSubjectViewHolder.java index fd62d67c7b..cd28cadf51 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/AskSubjectViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/ask/AskSubjectViewHolder.java @@ -2,7 +2,7 @@ package com.gh.gamecenter.ask; import android.support.v4.view.ViewPager; import android.view.View; -import android.widget.ProgressBar; +import android.widget.RadioGroup; import com.gh.base.BaseRecyclerViewHolder; import com.gh.gamecenter.R; @@ -18,8 +18,8 @@ public class AskSubjectViewHolder extends BaseRecyclerViewHolder { if (getActivity() != null) getActivity().finish(); }); @@ -463,7 +464,8 @@ public class QuestionsEditFragment extends NormalFragment { private void addTagByTitle() { RetrofitManager.getInstance(getContext()) .getApi() - .getQuestionTagsByTitle(UserManager.getInstance().getCommunityId(getContext()), mTitle.getText().toString()) + .getQuestionTagsByTitle(UserManager.getInstance().getCommunityId(getContext()) + , UrlFilterUtils.getFilterQuery("title", mTitle.getText().toString())) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Response>() { @@ -535,6 +537,7 @@ public class QuestionsEditFragment extends NormalFragment { private void showAddTagDialog() { + mTagDialog.hide(); final Dialog dialog = new Dialog(getContext()); View view = View.inflate(getContext(), R.layout.dialog_modify_nickname, null); @@ -584,7 +587,10 @@ public class QuestionsEditFragment extends NormalFragment { dialog.dismiss(); }); - dialog.setOnDismissListener(dialog1 -> Util_System_Keyboard.hideSoftKeyboard(getActivity())); + dialog.setOnDismissListener(dialog1 -> { + Util_System_Keyboard.hideSoftKeyboard(getActivity()); + mTagDialog.show(); + }); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(view); diff --git a/app/src/main/java/com/gh/gamecenter/ask/entity/QuestionsDetailEntity.kt b/app/src/main/java/com/gh/gamecenter/ask/entity/QuestionsDetailEntity.kt index 4e8c39b993..9d637d1e2d 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/entity/QuestionsDetailEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/ask/entity/QuestionsDetailEntity.kt @@ -32,6 +32,9 @@ class QuestionsDetailEntity() : Parcelable { var me: MeEntity = MeEntity() + @SerializedName("follow_count") + var followCount: String? = null + constructor(parcel: Parcel) : this() { id = parcel.readString() tags = parcel.createStringArrayList() @@ -43,6 +46,7 @@ class QuestionsDetailEntity() : Parcelable { communityName = parcel.readString() isExistDrafts = parcel.readByte() != 0.toByte() me = parcel.readParcelable(MeEntity::class.java.classLoader) + followCount = parcel.readString() } override fun writeToParcel(parcel: Parcel, flags: Int) { @@ -56,6 +60,7 @@ class QuestionsDetailEntity() : Parcelable { parcel.writeString(communityName) parcel.writeByte(if (isExistDrafts) 1 else 0) parcel.writeParcelable(me, flags) + parcel.writeString(followCount) } override fun describeContents(): Int { diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailAdapter.java index 19f29f3014..fa889dfacf 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailAdapter.java @@ -1,6 +1,7 @@ package com.gh.gamecenter.ask.questionsdetail; import android.content.Context; +import android.graphics.Color; import android.graphics.drawable.Drawable; import android.support.annotation.StringRes; import android.support.v4.content.ContextCompat; @@ -10,7 +11,6 @@ import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.view.ViewTreeObserver; import android.widget.LinearLayout; import android.widget.TextView; @@ -217,8 +217,23 @@ public class QuestionsDetailAdapter extends ListAdapter { setAnswerTv(holder.answerTv, R.string.question_detail_answer); } + if (mQuestionsDetailEntity.getMe().isQuestionOwn()) { + holder.concern.setBackgroundResource(R.drawable.questions_detail_tag_bg); + holder.concern.setTextColor(ContextCompat.getColor(mContext, R.color.hint)); + holder.concern.setText("编辑问题"); + } else if (mQuestionsDetailEntity.getMe().isQuestionFollowed()) { + holder.concern.setBackgroundResource(R.drawable.questions_detail_tag_bg); + holder.concern.setTextColor(ContextCompat.getColor(mContext, R.color.hint)); + holder.concern.setText("已关注"); + } else { + holder.concern.setBackgroundResource(R.drawable.button_normal_style); + holder.concern.setTextColor(Color.WHITE); + holder.concern.setText("关注问题"); + } + holder.mTitle.setText(mQuestionsDetailEntity.getTitle()); holder.mAnswercount.setText(mContext.getString(R.string.ask_answer_count, mQuestionsDetailEntity.getAnswersCount())); + holder.concernCount.setText(mQuestionsDetailEntity.getFollowCount() + "人关注"); holder.mDesAll.setOnClickListener((v) -> { mIsExpand = true; @@ -227,13 +242,6 @@ public class QuestionsDetailAdapter extends ListAdapter { holder.mDes.setText(mQuestionsDetailEntity.getDescription()); }); - - holder.mDes.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - - } - }); } private void addTag(FlexboxLayout mTagRl, String tag) { @@ -244,7 +252,7 @@ public class QuestionsDetailAdapter extends ListAdapter { tagTv.setTextColor(ContextCompat.getColor(mContext, R.color.hint)); FlexboxLayout.LayoutParams params = new FlexboxLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); - params.setMargins(0, DisplayUtils.dip2px(mContext, 5), DisplayUtils.dip2px(mContext, 15), + params.setMargins(0, DisplayUtils.dip2px(mContext, 5), DisplayUtils.dip2px(mContext, 8), DisplayUtils.dip2px(mContext, 5)); tagTv.setLayoutParams(params); mTagRl.addView(view); diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailFragment.java b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailFragment.java index 21a3def1db..0185d591e8 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailFragment.java @@ -72,8 +72,6 @@ public class QuestionsDetailFragment extends ListFragment { - if (!mQuestionsDetailEntity.getMe().isQuestionFollowed()) { + if (mQuestionsDetailEntity.getMe().isQuestionOwn()) { + startActivityForResult(QuestionEditActivity.getIntent(getContext(), mQuestionsDetailEntity), QUESTIONS_EDIT_REQUEST); + } else if (!mQuestionsDetailEntity.getMe().isQuestionFollowed()) { ConcernUtils.INSTANCE.postConcernQuestions(getContext(), mQuestionsId , new ConcernUtils.onConcernListener() { @Override public void onSuccess() { mQuestionsDetailEntity.getMe().setQuestionFollowed(true); - mQuestionConcern.setIcon(R.drawable.menu_ic_question_concern_select); + mAdapter.notifyItemChanged(0); toast("已关注 "); } @@ -259,7 +244,7 @@ public class QuestionsDetailFragment extends ListFragment { @@ -357,11 +355,6 @@ public class QuestionsDetailFragment extends ListFragment { view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false); return new FooterViewHolder(view, mListClickListener); case ItemViewType.ITEM_BODY: - view = mLayoutInflater.inflate(R.layout.ask_answer_item, parent, false); - return new AnswerViewHolder(view, mListClickListener); + view = mLayoutInflater.inflate(R.layout.ask_questions_hot_item, parent, false); + return new AskQuestionsRecommendsViewHolder(view, mListClickListener); } return null; } @@ -83,7 +83,7 @@ public class AskSubjectAdapter extends ListAdapter { case ItemViewType.ITEM_BODY: int index = position - ListAdapter.TOP_ITEM_COUNT; if (index != -1) - ((AnswerViewHolder) holder).initAnswerViewHolder(mContext, mEntityList.get(index)); + ((AskQuestionsRecommendsViewHolder) holder).initQuestionsHotViewHolder(mEntityList.get(index)); break; } } diff --git a/app/src/main/java/com/gh/gamecenter/ask/subject/AskSubjectFragment.java b/app/src/main/java/com/gh/gamecenter/ask/subject/AskSubjectFragment.java index 032bbd9a44..894c17a545 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/subject/AskSubjectFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/subject/AskSubjectFragment.java @@ -6,11 +6,14 @@ import android.support.annotation.Nullable; import android.support.v7.widget.RecyclerView; import android.view.View; +import com.gh.common.util.AskLogUtils; import com.gh.common.view.VerticalItemDecoration; import com.gh.gamecenter.AnswerDetailActivity; +import com.gh.gamecenter.QuestionsDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.ask.entity.AnswerEntity; import com.gh.gamecenter.ask.entity.AskSubjectEntity; +import com.gh.gamecenter.ask.entity.Questions; import com.gh.gamecenter.baselist.ListAdapter; import com.gh.gamecenter.baselist.ListFragment; import com.gh.gamecenter.baselist.LoadStatus; @@ -37,7 +40,7 @@ public class AskSubjectFragment extends ListFragment { @Override public int getItemCount() { - return mEntityList == null ? 0 : mEntityList.size() + FOOTER_ITEM_COUNT; + return mEntityList == null || mEntityList.isEmpty() ? 0 : mEntityList.size() + FOOTER_ITEM_COUNT; } private void initKeFuViewHolder(KeFuViewHolder viewHolder, final MessageKeFuEntity keFuEntity) { viewHolder.content.setText(Html.fromHtml(keFuEntity.getMessage())); + viewHolder.setClickData(keFuEntity); if (!TextUtils.isEmpty(keFuEntity.getSuggestion())) { viewHolder.suggestion.setVisibility(View.VISIBLE); viewHolder.suggestion.setText(keFuEntity.getSuggestion()); diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuViewHolder.java b/app/src/main/java/com/gh/gamecenter/message/KeFuViewHolder.java index e8bdb333ff..bd666833a5 100644 --- a/app/src/main/java/com/gh/gamecenter/message/KeFuViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/message/KeFuViewHolder.java @@ -7,13 +7,14 @@ import com.facebook.drawee.view.SimpleDraweeView; import com.gh.base.BaseRecyclerViewHolder; import com.gh.base.OnListClickListener; import com.gh.gamecenter.R; +import com.gh.gamecenter.entity.MessageKeFuEntity; import butterknife.BindView; /** * Created by khy on 2017/4/10. */ -public class KeFuViewHolder extends BaseRecyclerViewHolder { +public class KeFuViewHolder extends BaseRecyclerViewHolder { @BindView(R.id.message_kefu_time) public TextView time; @@ -30,10 +31,6 @@ public class KeFuViewHolder extends BaseRecyclerViewHolder { @BindView(R.id.message_kefu_name) TextView kefuName; - public KeFuViewHolder(View itemView) { - super(itemView); - } - public KeFuViewHolder(View itemView, OnListClickListener listClickListener) { super(itemView, listClickListener); skip.setOnClickListener(this); diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java b/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java index 3ed4617557..1767a7c876 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java @@ -41,7 +41,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder List images; switch (messageEntity.getType()) { case "answer": - mBinding.messageCommand.setText("回答了我的问题"); + mBinding.messageCommand.setText("回答了你的问题"); mBinding.messageContent.setVisibility(View.VISIBLE); mBinding.messageContent.setText(messageEntity.getAnswer().getContent()); mBinding.messageOriginalTitle.setText(messageEntity.getQuestion().getTitle()); @@ -50,14 +50,14 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageOriginalIcon.setImageURI(images.get(0)); break; case "reply": - mBinding.messageCommand.setText("回复了我"); + mBinding.messageCommand.setText("回复了你"); mBinding.messageContent.setVisibility(View.VISIBLE); mBinding.messageContent.setText(messageEntity.getDialogue().getTo().getContent()); mBinding.messageOriginalTitle.setText(messageEntity.getArticle().getTitle()); mBinding.messageOriginalIcon.setImageURI(messageEntity.getArticle().getThumb()); break; case "follow_question": - mBinding.messageCommand.setText("回答了我关注的问题"); + mBinding.messageCommand.setText("回答了你关注的问题"); mBinding.messageContent.setVisibility(View.VISIBLE); mBinding.messageContent.setText(messageEntity.getAnswer().getContent()); mBinding.messageOriginalTitle.setText(messageEntity.getQuestion().getTitle()); @@ -66,7 +66,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageOriginalIcon.setImageURI(images.get(0)); break; case "reply_answer_comment": - mBinding.messageCommand.setText("回复了我"); + mBinding.messageCommand.setText("回复了你"); mBinding.messageContent.setVisibility(View.VISIBLE); mBinding.messageContent.setText(messageEntity.getDialogue().getTo().getContent()); mBinding.messageOriginalTitle.setText(messageEntity.getQuestion().getTitle()); @@ -75,7 +75,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageOriginalIcon.setImageURI(images.get(0)); break; case "answer_comment": - mBinding.messageCommand.setText("评论了我"); + mBinding.messageCommand.setText("评论了你"); mBinding.messageContent.setVisibility(View.VISIBLE); mBinding.messageContent.setText(messageEntity.getComment().getContent()); mBinding.messageOriginalTitle.setText(messageEntity.getQuestion().getTitle()); @@ -84,7 +84,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageOriginalIcon.setImageURI(images.get(0)); break; case "answer_vote": - mBinding.messageCommand.setText("赞同了我的回答"); + mBinding.messageCommand.setText("赞同了你的回答"); mBinding.messageContent.setVisibility(View.GONE); mBinding.messageOriginalTitle.setText(messageEntity.getQuestion().getTitle()); images = messageEntity.getAnswer().getImages(); @@ -92,13 +92,13 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageOriginalIcon.setImageURI(images.get(0)); break; case "comment_vote": - mBinding.messageCommand.setText("赞了我"); + mBinding.messageCommand.setText("赞了你"); mBinding.messageContent.setVisibility(View.GONE); mBinding.messageOriginalTitle.setText(messageEntity.getArticle().getTitle()); mBinding.messageOriginalIcon.setImageURI(messageEntity.getArticle().getThumb()); break; case "answer_comment_vote": - mBinding.messageCommand.setText("赞了我"); + mBinding.messageCommand.setText("赞了你"); mBinding.messageContent.setVisibility(View.GONE); mBinding.messageOriginalTitle.setText(messageEntity.getQuestion().getTitle()); images = messageEntity.getAnswer().getImages(); @@ -106,7 +106,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageOriginalIcon.setImageURI(images.get(0)); break; case "invited": - mBinding.messageCommand.setText("邀请我回答"); + mBinding.messageCommand.setText("邀请你回答"); mBinding.messageContent.setVisibility(View.GONE); mBinding.messageOriginalTitle.setText(messageEntity.getQuestion().getTitle()); images = messageEntity.getQuestion().getImages(); diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java index 00835c0378..e0eb0a3698 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java @@ -282,15 +282,22 @@ public class PersonalFragment extends BaseFragment implements Observer() { @Override public void onResponse(SignEntity signEntity) { - if (isCanSign(signEntity.getLastTime())) { //+10s - DialogUtils.showCancelAlertDialog(getActivity() - , "签到成功,获得经验:1" - , "已连续签到" + signEntity.getSerialSign() + "天、累计经验:" + signEntity.getCoefficients() - , getSignSkipText(signEntity.getData()), " 关闭", () -> signSkip(signEntity), null); + if (isCanSign(signEntity.getLastTime())) { + DialogUtils.showSignDialog(getContext(), "签到成功,获得经验:1" + , getString(R.string.sign_dialog_content, signEntity.getSerialSign()) + , getString(R.string.sign_dialog_content2, signEntity.getExperience()) + , getSignSkipText(signEntity.getData()), () -> { + signSkip(signEntity); + } + ); } else { - DialogUtils.showCancelAlertDialog(getActivity(), "今天已签到,明天再来吧~" - , "已连续签到" + signEntity.getSerialSign() + "天、累计经验:" + signEntity.getCoefficients() - , getSignSkipText(signEntity.getData()), " 关闭", () -> signSkip(signEntity), null); + DialogUtils.showSignDialog(getContext(), "今天已签到,明天再来吧~" + , getString(R.string.sign_dialog_content, signEntity.getSerialSign()) + , getString(R.string.sign_dialog_content2, signEntity.getExperience()) + , getSignSkipText(signEntity.getData()), () -> { + signSkip(signEntity); + } + ); } } diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java index e0ceaf3555..7ab9000760 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java @@ -346,7 +346,7 @@ public interface ApiService { * 根据关键字获取工具箱信息(搜索) */ @GET("toolkits") - Observable> getToolKitData(@Query("page") int page, @Query("keyword") String keyword); + Observable> getToolKitData(@Query("page") int page, @Query("filter") String filter); /** diff --git a/app/src/main/res/drawable-xhdpi/kaifu_time_icon.png b/app/src/main/res/drawable-xhdpi/kaifu_time_icon.png index 6d16126703..ac11fa08e1 100644 Binary files a/app/src/main/res/drawable-xhdpi/kaifu_time_icon.png and b/app/src/main/res/drawable-xhdpi/kaifu_time_icon.png differ diff --git a/app/src/main/res/drawable-xhdpi/sign_dialog_bg.png b/app/src/main/res/drawable-xhdpi/sign_dialog_bg.png new file mode 100644 index 0000000000..65978c6a51 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/sign_dialog_bg.png differ diff --git a/app/src/main/res/drawable/ask_recommends_vp_select.xml b/app/src/main/res/drawable/ask_recommends_vp_select.xml new file mode 100644 index 0000000000..7bcce540d6 --- /dev/null +++ b/app/src/main/res/drawable/ask_recommends_vp_select.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ask_recommends_vp_selector.xml b/app/src/main/res/drawable/ask_recommends_vp_selector.xml new file mode 100644 index 0000000000..77bfaf8099 --- /dev/null +++ b/app/src/main/res/drawable/ask_recommends_vp_selector.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ask_recommends_vp_unselect.xml b/app/src/main/res/drawable/ask_recommends_vp_unselect.xml new file mode 100644 index 0000000000..c5e9b1f294 --- /dev/null +++ b/app/src/main/res/drawable/ask_recommends_vp_unselect.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/ask_recommends_subject.xml b/app/src/main/res/layout/ask_recommends_subject.xml index 643af1e851..c849a8ef1c 100644 --- a/app/src/main/res/layout/ask_recommends_subject.xml +++ b/app/src/main/res/layout/ask_recommends_subject.xml @@ -10,12 +10,12 @@ android:layout_width = "match_parent" android:layout_height = "97dp" /> - + \ No newline at end of file diff --git a/app/src/main/res/layout/ask_selectgame_item.xml b/app/src/main/res/layout/ask_selectgame_item.xml index d886dcb006..4da57d2ca7 100644 --- a/app/src/main/res/layout/ask_selectgame_item.xml +++ b/app/src/main/res/layout/ask_selectgame_item.xml @@ -23,18 +23,18 @@ android:layout_width = "0dp" android:layout_height = "wrap_content" android:layout_marginLeft = "15dp" - android:layout_marginRight="5dp" + android:layout_marginRight = "5dp" android:textColor = "@color/black" android:textSize = "14sp" android:textStyle = "bold" - app:layout_constraintRight_toLeftOf="@+id/ask_selectgame_item_left" app:layout_constraintBottom_toBottomOf = "@id/ask_selectgame_item_constraintlayout" app:layout_constraintLeft_toRightOf = "@id/ask_selectgame_item_icon" + app:layout_constraintRight_toLeftOf = "@+id/ask_selectgame_item_left" app:layout_constraintTop_toTopOf = "@id/ask_selectgame_item_constraintlayout" /> - + android:textSize = "11sp" + android:visibility = "visible" /> \ No newline at end of file diff --git a/app/src/main/res/layout/ask_subject_top_item.xml b/app/src/main/res/layout/ask_subject_top_item.xml index f5bfe98a4e..bd7e722e79 100644 --- a/app/src/main/res/layout/ask_subject_top_item.xml +++ b/app/src/main/res/layout/ask_subject_top_item.xml @@ -26,14 +26,14 @@ android:layout_width = "match_parent" android:layout_height = "wrap_content" android:background = "@android:color/white" + android:maxLines = "2" android:paddingLeft = "20dp" android:paddingRight = "20dp" - android:paddingTop = "15dp" + android:paddingTop = "12dp" android:text = "@{entity.title}" android:textColor = "@color/black" android:textSize = "14sp" android:textStyle = "bold" - android:maxLines="2" app:layout_constraintTop_toBottomOf = "@id/ask_subject_top_icon" /> + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_answer_detail.xml b/app/src/main/res/layout/fragment_answer_detail.xml index 9e56ff1cd4..a8d798d735 100644 --- a/app/src/main/res/layout/fragment_answer_detail.xml +++ b/app/src/main/res/layout/fragment_answer_detail.xml @@ -174,6 +174,7 @@ android:layout_marginTop="10dp" android:textColor="@color/title" android:textSize="14sp" + android:gravity="right" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/answer_detail_Rd" /> diff --git a/app/src/main/res/layout/fragment_invite.xml b/app/src/main/res/layout/fragment_invite.xml index 4cb76af79d..97fd66f4d4 100644 --- a/app/src/main/res/layout/fragment_invite.xml +++ b/app/src/main/res/layout/fragment_invite.xml @@ -13,57 +13,7 @@ android:gravity = "center" app:layout_behavior = "com.gh.common.view.FixAppBarLayoutBehavior" > - - - - - - - - - + diff --git a/app/src/main/res/layout/fragment_libao1.xml b/app/src/main/res/layout/fragment_libao1.xml index 28a59f5a8d..9f85e878aa 100644 --- a/app/src/main/res/layout/fragment_libao1.xml +++ b/app/src/main/res/layout/fragment_libao1.xml @@ -23,58 +23,7 @@ android:gravity = "center" app:layout_behavior = "com.gh.common.view.FixAppBarLayoutBehavior" > - - - - - - - - - - + - + + + + + + @@ -56,7 +56,7 @@ android:layout_width = "match_parent" android:layout_height = "wrap_content" android:background = "@android:color/white" - android:paddingTop = "35dp" > + android:paddingTop = "30dp" > diff --git a/app/src/main/res/layout/libao_item_search.xml b/app/src/main/res/layout/layout_search_bar.xml similarity index 65% rename from app/src/main/res/layout/libao_item_search.xml rename to app/src/main/res/layout/layout_search_bar.xml index 442030fca6..038a06f587 100644 --- a/app/src/main/res/layout/libao_item_search.xml +++ b/app/src/main/res/layout/layout_search_bar.xml @@ -1,44 +1,47 @@ + android:layout_height = "35dp" + android:layout_marginBottom = "15dp" + android:layout_marginLeft = "20dp" + android:layout_marginRight = "20dp" + android:layout_marginTop = "15dp" + android:gravity = "center_vertical" + app:layout_scrollFlags = "scroll|enterAlwaysCollapsed" > + android:textSize = "14sp" /> + android:textColor = "@android:color/white" + android:visibility = "gone" /> - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/questions_edit_index_item.xml b/app/src/main/res/layout/questions_edit_index_item.xml index 19478083e8..48c1d2a36b 100644 --- a/app/src/main/res/layout/questions_edit_index_item.xml +++ b/app/src/main/res/layout/questions_edit_index_item.xml @@ -3,10 +3,10 @@ xmlns:app = "http://schemas.android.com/apk/res-auto" android:layout_width = "match_parent" android:layout_height = "wrap_content" - android:paddingBottom = "12dp" + android:paddingBottom = "10dp" android:paddingLeft = "15dp" android:paddingRight = "15dp" - android:paddingTop = "20dp" + android:paddingTop = "17dp" android:background="@android:color/white"> diff --git a/app/src/main/res/layout/questions_edit_tag.xml b/app/src/main/res/layout/questions_edit_tag.xml index c5eabb71a6..119adfb4cc 100644 --- a/app/src/main/res/layout/questions_edit_tag.xml +++ b/app/src/main/res/layout/questions_edit_tag.xml @@ -7,10 +7,11 @@ @@ -62,13 +63,19 @@ + + app:layout_constraintTop_toBottomOf = "@id/questions_edit_tag_line2" > + + + + + + + + app:layout_constraintTop_toBottomOf = "@id/questionsdetail_concern_rl" /> diff --git a/app/src/main/res/menu/menu_question_invite.xml b/app/src/main/res/menu/menu_question_invite.xml index 6fdaaba320..d11d2e9b7b 100644 --- a/app/src/main/res/menu/menu_question_invite.xml +++ b/app/src/main/res/menu/menu_question_invite.xml @@ -5,7 +5,7 @@ \ No newline at end of file diff --git a/app/src/main/res/menu/menu_question_post.xml b/app/src/main/res/menu/menu_question_post.xml index f2529e9f85..76c1b03014 100644 --- a/app/src/main/res/menu/menu_question_post.xml +++ b/app/src/main/res/menu/menu_question_post.xml @@ -4,8 +4,8 @@ \ No newline at end of file diff --git a/app/src/main/res/menu/menu_questions_detail.xml b/app/src/main/res/menu/menu_questions_detail.xml index 8b3848dbd5..4a61c606f0 100644 --- a/app/src/main/res/menu/menu_questions_detail.xml +++ b/app/src/main/res/menu/menu_questions_detail.xml @@ -2,11 +2,11 @@ - + + + + + 恢复中... 查看评论 我来评论 + 已连续签到%1$d天]]> + %1$d]]>