From e5daf1d29f49dc76a63f155b3362ddce8982620b Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Wed, 18 Apr 2018 21:19:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=97=AE=E9=A2=98=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E5=92=8C=E5=9B=9E=E7=AD=94=E8=AF=A6=E6=83=85=E7=9A=84?= =?UTF-8?q?=E9=83=A8=E5=88=86=E9=97=AE=E9=A2=98=20http://gitlab.ghzhushou.?= =?UTF-8?q?com/pm/halo-app-issues/issues/210?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/ClickUtils.java | 40 +++++++++++++++++++ .../com/gh/common/util/EntranceUtils.java | 1 + .../com/gh/gamecenter/AnswerEditActivity.java | 8 ++++ .../gamecenter/ask/AnswerCommentFragment.java | 8 ++++ .../gamecenter/ask/AnswerDetailFragment.java | 2 +- .../gamecenter/ask/QuestionsEditFragment.java | 29 +++++--------- .../gh/gamecenter/ask/entity/InviteEntity.kt | 1 + .../questionsdetail/AnswerEditFragment.java | 8 ++++ .../QuestionsInviteWrapperFragment.java | 5 ++- app/src/main/res/layout/ask_answer_item.xml | 15 ++++++- app/src/main/res/layout/layout_search_bar.xml | 2 + 11 files changed, 98 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/com/gh/common/util/ClickUtils.java diff --git a/app/src/main/java/com/gh/common/util/ClickUtils.java b/app/src/main/java/com/gh/common/util/ClickUtils.java new file mode 100644 index 0000000000..eb0a48c782 --- /dev/null +++ b/app/src/main/java/com/gh/common/util/ClickUtils.java @@ -0,0 +1,40 @@ +package com.gh.common.util; + +import android.util.Log; + +public class ClickUtils { + + private static long lastClickTime = 0; + private static long DIFF = 800; + private static int lastButtonId = -1; + + /** + * 判断两次点击的间隔,如果小于800,则认为是多次无效点击 * * @return + */ + public static boolean isFastDoubleClick() { + return isFastDoubleClick(-1, DIFF); + } + + /** + * 判断两次点击的间隔,如果小于800,则认为是多次无效点击 * * @return + */ + public static boolean isFastDoubleClick(int buttonId) { + return isFastDoubleClick(buttonId, DIFF); + } + + /** + * 判断两次点击的间隔,如果小于diff,则认为是多次无效点击 * * @param diff * @return + */ + public static boolean isFastDoubleClick(int buttonId, long diff) { + long time = System.currentTimeMillis(); + long timeD = time - lastClickTime; + if (lastButtonId == buttonId && lastClickTime > 0 && timeD < diff) { + Log.v("isFastDoubleClick", "短时间内按钮多次触发"); + return true; + } + lastClickTime = time; + lastButtonId = buttonId; + return false; + } + +} 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 75652a4ee7..ae5bc4a13b 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -64,6 +64,7 @@ public class EntranceUtils { public static final String KEY_ANSWER_CONTENT = "answerContent"; public static final String KEY_QUESTIONS_ID = "questionsId"; public static final String KEY_QUESTIONS_TITLE = "questionsTitle"; + public static final String KEY_ANSWER_OPEN_IN_NEW_PAGE = "openInNewPage"; public static final String KEY_QUESTIONS_PATCH = "questionsPatch"; public static final String KEY_INVITE_SEARCH_KEY = "inviteSearchKey"; public static final String KEY_MESSAGE_TYPE = "messageType"; diff --git a/app/src/main/java/com/gh/gamecenter/AnswerEditActivity.java b/app/src/main/java/com/gh/gamecenter/AnswerEditActivity.java index 22e59a247d..0a2257de75 100644 --- a/app/src/main/java/com/gh/gamecenter/AnswerEditActivity.java +++ b/app/src/main/java/com/gh/gamecenter/AnswerEditActivity.java @@ -13,6 +13,14 @@ import com.gh.gamecenter.ask.questionsdetail.AnswerEditFragment; public class AnswerEditActivity extends NormalActivity { + public static Intent getIntent(Context context, String questionId, String questionTitle, boolean showInNewPage) { + Bundle bundle = new Bundle(); + bundle.putString(EntranceUtils.KEY_QUESTIONS_ID, questionId); + bundle.putString(EntranceUtils.KEY_QUESTIONS_TITLE, questionTitle); + bundle.putBoolean(EntranceUtils.KEY_ANSWER_OPEN_IN_NEW_PAGE, showInNewPage); + return getTargetIntent(context, AnswerEditActivity.class, AnswerEditFragment.class, bundle); + } + public static Intent getIntent(Context context, String questionId, String questionTitle) { Bundle bundle = new Bundle(); bundle.putString(EntranceUtils.KEY_QUESTIONS_ID, questionId); 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 dc94208680..ab92ff9a35 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/AnswerCommentFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/AnswerCommentFragment.java @@ -36,6 +36,8 @@ import com.lightgame.utils.Utils; import org.json.JSONObject; +import java.util.List; + import butterknife.BindView; import butterknife.OnClick; import butterknife.Optional; @@ -122,6 +124,12 @@ public class AnswerCommentFragment extends ListFragment commentEntities) { + super.onChanged(commentEntities); + mListRv.postDelayed(() -> mListRv.smoothScrollToPosition(0), 300); + } + @SuppressLint("DefaultLocale") @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 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 709b2f4549..8e426d73e1 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/AnswerDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/AnswerDetailFragment.java @@ -430,7 +430,7 @@ public class AnswerDetailFragment extends NormalFragment { case NOT_ANSWERED_YET: CheckLoginUtils.checkLogin(getContext(), () -> { Questions question = mDetailEntity.getQuestion(); - startActivityForResult(AnswerEditActivity.getIntent(getContext(), question.getId(), question.getTitle()), ANSWER_PATCH_REQUEST); + startActivity(AnswerEditActivity.getIntent(getContext(), question.getId(), question.getTitle(), true)); }); break; } diff --git a/app/src/main/java/com/gh/gamecenter/ask/QuestionsEditFragment.java b/app/src/main/java/com/gh/gamecenter/ask/QuestionsEditFragment.java index e2b7bb5c0f..82b6553214 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/QuestionsEditFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/QuestionsEditFragment.java @@ -36,6 +36,7 @@ import android.widget.TextView; import com.gh.base.fragment.WaitingDialogFragment; import com.gh.common.util.AskErrorResponseUtils; import com.gh.common.util.CheckLoginUtils; +import com.gh.common.util.ClickUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.EntranceUtils; @@ -111,8 +112,7 @@ public class QuestionsEditFragment extends NormalFragment { private QuestionsDetailEntity mQuestionsEntity; private String mSearchKey; - private Boolean mAgreePostPic; - + private boolean mAgreePostPic; @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { @@ -158,7 +158,7 @@ public class QuestionsEditFragment extends NormalFragment { @Override public void onMenuItemClick(MenuItem menuItem) { - if (menuItem.getItemId() == R.id.menu_question_post) { + if (menuItem.getItemId() == R.id.menu_question_post && !ClickUtils.isFastDoubleClick(R.id.menu_question_post)) { String title = mTitle.getText().toString().trim(); if (TextUtils.isEmpty(title)) { toast("标题不能为空"); @@ -188,7 +188,6 @@ public class QuestionsEditFragment extends NormalFragment { mQuestionsEntity = arguments.getParcelable(QuestionsDetailEntity.TAG); } getCommunitiesTags(); - mAgreePostPic = null; } @Override @@ -415,24 +414,18 @@ public class QuestionsEditFragment extends NormalFragment { List picList = (List) data; if (position == mAdapter.getItemCount() - 1) { if (picList.size() < 3) { - if (NetworkUtils.isWifiConnected(getContext()) || mAgreePostPic != null && mAgreePostPic) { + if (NetworkUtils.isWifiConnected(getContext()) || mAgreePostPic) { addPic(); } else { - if (mAgreePostPic == null) - DialogUtils.showAlertDialog(getContext(), - "警告", - "当前使用移动网络,上传图片会消耗流量,确定上传吗?", - "继续上传", "取消", - () -> { - mAgreePostPic = true; - addPic(); - }, () -> { - mAgreePostPic = false; - }); + mAgreePostPic = true; + DialogUtils.showAlertDialog(getContext(), + "警告", + "当前使用移动网络,上传图片会消耗流量,确定上传吗?", + "继续上传", "取消", + this::addPic, null); } } } - } private void addPic() { @@ -548,7 +541,7 @@ public class QuestionsEditFragment extends NormalFragment { View view = View.inflate(getContext(), R.layout.dialog_modify_nickname, null); TextView title = view.findViewById(R.id.dialog_nickname_title); - title.setText(R.string.vote_input_hint); + title.setText("新建标签"); final EditText input = view.findViewById(R.id.dialog_nickname_input); input.setHint(""); diff --git a/app/src/main/java/com/gh/gamecenter/ask/entity/InviteEntity.kt b/app/src/main/java/com/gh/gamecenter/ask/entity/InviteEntity.kt index 6891205fb6..0b6db44ff2 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/entity/InviteEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/ask/entity/InviteEntity.kt @@ -17,6 +17,7 @@ class InviteEntity { @SerializedName("answer_count") var answerCount: Int = 0 + @SerializedName("answer_vote") var vote: Int = 0 var me: MeEntity? = null diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java index feea3bc0f6..d4c20cb487 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java @@ -25,6 +25,7 @@ import com.gh.common.util.EntranceUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.LoginUtils; import com.gh.common.view.RichEditor; +import com.gh.gamecenter.AnswerDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.manager.UserManager; import com.gh.gamecenter.normal.NormalFragment; @@ -84,6 +85,7 @@ public class AnswerEditFragment extends NormalFragment { private String mQuestionsId; private String mQuestionsTitle; + private boolean mOpenAnswerInNewPage; // private String mCacheAnswerContent; @@ -138,6 +140,7 @@ public class AnswerEditFragment extends NormalFragment { mAnswerContent = arguments.getString(EntranceUtils.KEY_ANSWER_CONTENT); mQuestionsId = arguments.getString(EntranceUtils.KEY_QUESTIONS_ID); mQuestionsTitle = arguments.getString(EntranceUtils.KEY_QUESTIONS_TITLE); + mOpenAnswerInNewPage = arguments.getBoolean(EntranceUtils.KEY_ANSWER_OPEN_IN_NEW_PAGE); if (TextUtils.isEmpty(mAnswerId)) { mBaseHandler.sendEmptyMessageDelayed(1, SAVE_DRAFTS_INTERVAL_TIME); // 启动自动保持 } @@ -289,6 +292,11 @@ public class AnswerEditFragment extends NormalFragment { data.putExtra(EntranceUtils.KEY_ANSWER_CONTENT, editContent); data.putExtra(EntranceUtils.KEY_ANSWER_ID, answerId); getActivity().setResult(Activity.RESULT_OK, data); + + if (mOpenAnswerInNewPage) { + Intent intent = AnswerDetailActivity.getIntent(getContext(), answerId, "(新建回答)"); + getActivity().startActivity(intent); + } getActivity().finish(); } } diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/invite/QuestionsInviteWrapperFragment.java b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/invite/QuestionsInviteWrapperFragment.java index 8a704e7e4c..36f7981c8d 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/invite/QuestionsInviteWrapperFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/invite/QuestionsInviteWrapperFragment.java @@ -8,10 +8,12 @@ import android.support.design.widget.AppBarLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.text.TextUtils; +import android.view.KeyEvent; import android.view.MenuItem; import android.view.View; import android.view.WindowManager; import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.TextView; @@ -61,7 +63,6 @@ public class QuestionsInviteWrapperFragment extends NormalFragment { } } - @Override public void onMenuItemClick(MenuItem menuItem) { if (menuItem.getItemId() == R.id.menu_answer_post) { @@ -112,6 +113,8 @@ public class QuestionsInviteWrapperFragment extends NormalFragment { } }); + mInviteEtSearch.setHint("搜索光环用户"); + mInviteEtSearch.setOnEditorActionListener((v, actionId, event) -> { if (actionId == EditorInfo.IME_ACTION_SEARCH) { mInviteTvSearch.performClick(); diff --git a/app/src/main/res/layout/ask_answer_item.xml b/app/src/main/res/layout/ask_answer_item.xml index f5a6c3cdf0..d994a7e324 100644 --- a/app/src/main/res/layout/ask_answer_item.xml +++ b/app/src/main/res/layout/ask_answer_item.xml @@ -2,6 +2,7 @@ + + - \ No newline at end of file diff --git a/app/src/main/res/layout/layout_search_bar.xml b/app/src/main/res/layout/layout_search_bar.xml index 038a06f587..78b754f58d 100644 --- a/app/src/main/res/layout/layout_search_bar.xml +++ b/app/src/main/res/layout/layout_search_bar.xml @@ -8,6 +8,8 @@ android:layout_marginRight = "20dp" android:layout_marginTop = "15dp" android:gravity = "center_vertical" + android:descendantFocusability="beforeDescendants" + android:focusableInTouchMode="true" app:layout_scrollFlags = "scroll|enterAlwaysCollapsed" >