From bf4283405145d4cd395c0fd4ae4bc12bf5385731 Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Wed, 11 Apr 2018 21:31:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=89=E7=8E=AF=E5=8A=A9=E6=89=8BV3.2=20DEV?= =?UTF-8?q?=EF=BC=8820180410-1140=EF=BC=89=E6=B5=8B=E8=AF=95=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E6=B1=87=E6=80=BB(=E9=83=A8=E5=88=86=E6=9C=AA?= =?UTF-8?q?=E5=AE=8C=E6=88=90)=20=E5=85=89=E7=8E=AF=E5=8A=A9=E6=89=8BV3.2?= =?UTF-8?q?=20DEV=EF=BC=8820180410-1140=EF=BC=89=E6=96=87=E6=A1=88?= =?UTF-8?q?=E4=BC=98=E5=8C=96(=E9=83=A8=E5=88=86=E6=9C=AA=E5=AE=8C?= =?UTF-8?q?=E6=88=90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/fragment/BaseFragment_TabLayout.java | 4 +- .../java/com/gh/common/util/DialogUtils.java | 42 ++++++- .../java/com/gh/common/util/LoginUtils.java | 6 +- .../gamecenter/DownloadManagerActivity.java | 4 +- .../com/gh/gamecenter/NormalActivity.java | 12 +- .../gamecenter/adapter/ToolBoxRvAdapter.java | 19 ++- ...hViewHolder.java => SearchViewHolder.java} | 10 +- .../gamecenter/ask/AnswerCommentFragment.java | 10 ++ .../gamecenter/ask/AnswerDetailFragment.java | 7 +- .../ask/AskQuestionsRecommendsAdapter.java | 22 +++- .../ask/AskQuestionsRecommendsFragment.java | 17 ++- .../ask/AskQuestionsRecommendsViewModel.java | 10 +- .../gamecenter/ask/AskSubjectViewHolder.java | 6 +- .../gamecenter/ask/QuestionsEditFragment.java | 14 ++- .../ask/entity/QuestionsDetailEntity.kt | 5 + .../QuestionsDetailAdapter.java | 26 +++-- .../QuestionsDetailFragment.java | 49 ++++---- .../QuestionsDetailItemViewHolder.java | 5 + .../QuestionsInviteWrapperFragment.java | 14 +-- .../ask/subject/AskSubjectAdapter.java | 8 +- .../ask/subject/AskSubjectFragment.java | 19 ++- .../gh/gamecenter/kaifu/KaiFuFragment.java | 1 - .../gh/gamecenter/libao/Libao1Fragment.java | 12 +- .../message/KeFuFragmentAdapter.java | 3 +- .../gh/gamecenter/message/KeFuViewHolder.java | 7 +- .../message/MessageItemViewHolder.java | 18 +-- .../gamecenter/personal/PersonalFragment.java | 23 ++-- .../retrofit/service/ApiService.java | 2 +- .../res/drawable-xhdpi/kaifu_time_icon.png | Bin 773 -> 1497 bytes .../res/drawable-xhdpi/sign_dialog_bg.png | Bin 0 -> 14621 bytes .../res/drawable/ask_recommends_vp_select.xml | 5 + .../drawable/ask_recommends_vp_selector.xml | 6 + .../drawable/ask_recommends_vp_unselect.xml | 5 + .../res/layout/ask_recommends_subject.xml | 10 +- .../main/res/layout/ask_selectgame_item.xml | 13 ++- .../main/res/layout/ask_subject_top_item.xml | 11 +- app/src/main/res/layout/dialog_sign.xml | 75 ++++++++++++ .../res/layout/fragment_answer_detail.xml | 1 + app/src/main/res/layout/fragment_invite.xml | 52 +-------- app/src/main/res/layout/fragment_libao1.xml | 53 +-------- .../res/layout/fragment_list_nodate_skip.xml | 26 ++++- app/src/main/res/layout/fragment_personal.xml | 4 +- app/src/main/res/layout/kaifu_item_time.xml | 2 +- ..._item_search.xml => layout_search_bar.xml} | 31 ++--- .../main/res/layout/message_item_answer.xml | 109 ------------------ .../res/layout/questions_edit_index_item.xml | 6 +- .../main/res/layout/questions_edit_tag.xml | 15 ++- .../main/res/layout/questionsdetail_item.xml | 31 ++++- .../main/res/layout/questionsinvite_item.xml | 6 +- .../main/res/menu/menu_question_invite.xml | 2 +- app/src/main/res/menu/menu_question_post.xml | 4 +- .../main/res/menu/menu_questions_detail.xml | 10 +- app/src/main/res/values/strings.xml | 2 + 53 files changed, 456 insertions(+), 398 deletions(-) rename app/src/main/java/com/gh/gamecenter/adapter/viewholder/{LibaoSearchViewHolder.java => SearchViewHolder.java} (64%) create mode 100644 app/src/main/res/drawable-xhdpi/sign_dialog_bg.png create mode 100644 app/src/main/res/drawable/ask_recommends_vp_select.xml create mode 100644 app/src/main/res/drawable/ask_recommends_vp_selector.xml create mode 100644 app/src/main/res/drawable/ask_recommends_vp_unselect.xml create mode 100644 app/src/main/res/layout/dialog_sign.xml rename app/src/main/res/layout/{libao_item_search.xml => layout_search_bar.xml} (65%) delete mode 100644 app/src/main/res/layout/message_item_answer.xml 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 6d1612670318ebaf3c9911698ea9ad5cb6a0daa8..ac11fa08e1f0564945da391d4916047ce297ecf5 100644 GIT binary patch literal 1497 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m^Cs(B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk*h0bFQqR!T z(!$6@N5ROz&`jUJQs2--*TB%qz|zXVPyq^*fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$DAddqG<*}2 zGxI=#nqXbNzE+-j#U+V($*G<$wn{*A^fEJ3tX$koEsV_EER9W^Ees7^Ei8--oSe*E z9o-BKo!l%eEns?G@{>z*Q}aq-dQ%X39dYUfC5YStpv^9+MVV!(DQ-pixe8#9TV>*Q zi#bm7pn6kqyTt;hUVWfr^g+>!6x}c(U>X83;fWW>fhYgeJYbqH0w(S(4L3Cg1}1k; z7srr_TU(|@dxr#y96v94w4~&ife+Wgm?0+ zme>h$T}@Z=p2V7Py;{n?SdQl)x8=X^Kju1S>E~}6`*7FIvrK=#_usp{*W#+%9TT|^ zT3+DRYY1M@n7jXA`Uf_jr=NdrckGAuBvi(4>hN9J)0B`#g?%2@(uAz;bbJF+k*Hg4w%hvs-`X)zfPdCdx z-L$28D;HR|hMakFe2(C*6a0_m6hDeB`n>$j?TH8G+x6{~o^rqK#~Xf$>9XsxccxEC zvWY+4W0WvADb=*&@4?5?8NLPobJ+f$uWNYB8EVtLwI_Xl{XW+WZj(yBUtD#czH>=% z9R84TW`=ND&y?@B?iWjVYnDxNnsaB$D#3|7UwzsnD|a4d+^IC(Z`HSQRSj2*OwO+x z-9yPb ze;hiSaVvf4uH9NY{V$~QfBC>P^C4@H%>SgT=He$>o&5M%B^X{GJQ2uK*vJbiY&~85 KT-G@yGywn<%O+v~ delta 750 zcmV36kA2g~s|MsO?U#kpfRfPb&CqssE#t&UnitFZ-l zMg27P<8WNSb(oK#IR719tg?LPprEVp8giV$M;OQFIN7ir#shc;kHoPzv9ZeX6K$Xy zuoH{0FFM%QZ_7|+IY`T58MfojxVwj{EI(4)C5@eY8X*%xY+4}=;2tc+dsvLgv@C{u zfyU!%Ch#<>9)JFZgt(3Nf&GPbD6j-CH9?PJExyIGLTq};GHk-DEj#-MPvUz#m6pZI z8q~q&=zJ7^_j7_djRp3Dox+BwZmEA55#sVb$~Ffxkr=a2aBo@`cPCgA=f-CX(j{-i z@7e?_gus9KKY(`OU#v)k*S#O7W}8xF`EmS$1&Q!}4u8)!q)Yz5we{`kT!e%91KM>6 zx9(3NK@K86p-wA5U|U)iS6|?t>v1H(k63^!1_1qr43ol}dI1O1vUn~ni=n1*S{8G0 z6AmUqJ(+`*1AyQV9>!z%71!WpOr>SfTX7V9!$5tVm+=j~X*_|q{r9{FfeZ_UZw;of zv7YM&9mj)0Rb3~n&RhFOYF=u);Cs*PXtdIJ~!f}3v6AjzBadD&Z zONjIHvD%)KwsvckP!JbK{WN|S-cbiP;%4Vh+jr2{-kq gkoD^Za=OjQS-RfBnAv2C)c^nh07*qoM6N<$f^@2LaR2}S 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 0000000000000000000000000000000000000000..65978c6a51e0a90fe83336f8746d9dbb489b6204 GIT binary patch literal 14621 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 + + + \ 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]]>