From ac1d078681bb92bb84543261242636f3bf33370f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=8E=89=E4=B9=85?= <1484288157@qq.com> Date: Mon, 16 Dec 2019 17:25:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=91=E7=9A=84=E5=85=89=E7=8E=AF=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=94=B9=E7=89=88&=E4=BC=98=E5=8C=96=E5=B7=B2?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/ShareUtils.java | 5 +- .../gh/common/view/ClearEditTextNormal.java | 154 +++++++++++ .../java/com/gh/gamecenter/LoginActivity.java | 12 +- .../com/gh/gamecenter/ShareGhActivity.java | 5 +- .../com/gh/gamecenter/ToolBoxActivity.java | 14 +- .../gamecenter/adapter/CleanApkAdapter.java | 7 +- .../collection/CollectionWrapperFragment.java | 7 + .../gh/gamecenter/fragment/LoginFragment.java | 46 ++-- .../gamedetail/myrating/MyRatingAdapter.kt | 11 +- .../history/HistoryWrapperFragment.kt | 6 + .../gh/gamecenter/info/ConcernFragment.java | 13 +- .../gamecenter/info/InfoWrapperFragment.java | 8 +- .../gh/gamecenter/libao/Libao1Fragment.java | 11 +- .../gh/gamecenter/libao/LibaoFragment.java | 10 +- .../mygame/MyFollowedGameAdapter.kt | 4 + .../gh/gamecenter/mygame/MyGameActivity.kt | 1 + .../gamecenter/mygame/MyPlayedGameFragment.kt | 2 +- .../gamecenter/mygame/MyReservationAdapter.kt | 1 + .../gamecenter/personal/PersonalFragment.java | 55 ++-- .../personal/PersonalFunctionAdapter.kt | 54 ++-- .../personal/PersonalFunctionGroupAdapter.kt | 2 +- .../personalhome/UserHomeFragment.kt | 4 +- .../qa/myqa/MyAskWrapperFragment.java | 8 + .../videomanager/VideoManagerActivity.kt | 6 + .../assistant/fragment/AboutFragment.java | 7 + .../fragment/ApkCleanerFragment.java | 66 ++--- .../assistant/fragment/SettingsFragment.java | 10 +- .../fragment/user/UserInfoEditFragment.java | 46 ++-- .../fragment/user/UserInfoFragment.java | 15 +- .../fragment/user/VerifiedConfirmDialog.kt | 29 ++ app/src/main/res/drawable-hdpi/icon_close.png | Bin 0 -> 861 bytes .../bg_userinfo_verified_success.9.png | Bin 0 -> 35086 bytes .../icon_userinfo_verified_success.png | Bin 0 -> 6098 bytes .../login_password_unfocused.png | Bin 1477 -> 1172 bytes .../drawable-xhdpi/login_phone_unfocused.png | Bin 1254 -> 593 bytes .../main/res/drawable-xhdpi/login_qq_icon.png | Bin 4300 -> 3007 bytes .../res/drawable-xhdpi/login_wechat_icon.png | Bin 5113 -> 3401 bytes .../res/drawable-xhdpi/login_weibo_icon.png | Bin 5969 -> 4668 bytes .../drawable-xhdpi/personal_home_arrow.png | Bin 0 -> 258 bytes .../drawable-xhdpi/personal_new_version.png | Bin 0 -> 1850 bytes .../main/res/drawable/bg_userinfo_edit.xml | 9 + app/src/main/res/drawable/et_line_login.xml | 2 +- .../main/res/drawable/login_btn_bg_enable.xml | 9 + ...n_btn_bg.xml => login_btn_bg_unenable.xml} | 4 +- .../res/drawable/selector_login_btn_bg.xml | 7 + .../res/layout/dialog_verified_confirm.xml | 66 +++++ app/src/main/res/layout/fragment_login.xml | 80 +++--- .../res/layout/fragment_login_olduser.xml | 2 +- app/src/main/res/layout/fragment_personal.xml | 5 +- .../res/layout/fragment_userinfo_edit.xml | 88 +++--- .../main/res/layout/item_my_game_rating.xml | 250 ++++++++++-------- .../res/layout/item_personal_fun_group.xml | 5 +- .../main/res/layout/item_personal_func.xml | 12 +- .../res/layout/layout_menu_my_ask_draft.xml | 19 ++ app/src/main/res/menu/menu_my_ask_wrapper.xml | 4 +- app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/strings.xml | 2 +- 57 files changed, 828 insertions(+), 356 deletions(-) create mode 100644 app/src/main/java/com/gh/common/view/ClearEditTextNormal.java create mode 100644 app/src/main/java/com/halo/assistant/fragment/user/VerifiedConfirmDialog.kt create mode 100644 app/src/main/res/drawable-hdpi/icon_close.png create mode 100644 app/src/main/res/drawable-xhdpi/bg_userinfo_verified_success.9.png create mode 100644 app/src/main/res/drawable-xhdpi/icon_userinfo_verified_success.png create mode 100644 app/src/main/res/drawable-xhdpi/personal_home_arrow.png create mode 100644 app/src/main/res/drawable-xhdpi/personal_new_version.png create mode 100644 app/src/main/res/drawable/bg_userinfo_edit.xml create mode 100644 app/src/main/res/drawable/login_btn_bg_enable.xml rename app/src/main/res/drawable/{login_btn_bg.xml => login_btn_bg_unenable.xml} (64%) create mode 100644 app/src/main/res/drawable/selector_login_btn_bg.xml create mode 100644 app/src/main/res/layout/dialog_verified_confirm.xml create mode 100644 app/src/main/res/layout/layout_menu_my_ask_draft.xml diff --git a/app/src/main/java/com/gh/common/util/ShareUtils.java b/app/src/main/java/com/gh/common/util/ShareUtils.java index de3ee590ba..8413a1da9e 100644 --- a/app/src/main/java/com/gh/common/util/ShareUtils.java +++ b/app/src/main/java/com/gh/common/util/ShareUtils.java @@ -298,7 +298,7 @@ public class ShareUtils { int dimension = Math.min(bitmap.getWidth(), bitmap.getHeight()); bitmap = ThumbnailUtils.extractThumbnail(bitmap, dimension, dimension); } - + Bitmap compressBp = compressBitmap(bitmap); if (mShareType == ShareType.askNormal || mShareType == ShareType.askInvite) { msg.thumbData = ImageUtils.bmpToByteArray(compressBp, true); @@ -531,6 +531,9 @@ public class ShareUtils { holder.shareLogo.setImageResource(arrLogo[position]); holder.shareLabel.setText(arrLabel[position]); holder.itemView.setOnClickListener(v -> { + if (mShareType == ShareUtils.ShareType.shareGh) { + MtaHelper.onEvent("我的光环_新", "分享光环", arrLabel[position]); + } switch (holder.getPosition()) { case 0: wechatShare(); diff --git a/app/src/main/java/com/gh/common/view/ClearEditTextNormal.java b/app/src/main/java/com/gh/common/view/ClearEditTextNormal.java new file mode 100644 index 0000000000..8ccc71e20f --- /dev/null +++ b/app/src/main/java/com/gh/common/view/ClearEditTextNormal.java @@ -0,0 +1,154 @@ +package com.gh.common.view; + +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.text.Editable; +import android.text.TextWatcher; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; +import android.view.View.OnFocusChangeListener; +import android.view.animation.Animation; +import android.view.animation.CycleInterpolator; +import android.view.animation.TranslateAnimation; + +import com.gh.gamecenter.R; + + +public class ClearEditTextNormal extends androidx.appcompat.widget.AppCompatEditText implements OnFocusChangeListener, TextWatcher { + /** + * 删除按钮的引用 + */ + private Drawable mClearDrawable; + /** + * 控件是否有焦点 + */ + private boolean hasFoucs; + + public ClearEditTextNormal(Context context) { + this(context, null); + } + + public ClearEditTextNormal(Context context, AttributeSet attrs) { + //这里构造方法也很重要,不加这个很多属性不能再XML里面定义 + this(context, attrs, android.R.attr.editTextStyle); + } + + public ClearEditTextNormal(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(); + } + + + @SuppressWarnings("deprecation") + private void init() { + //获取EditText的DrawableRight,假如没有设置我们就使用默认的图片 + mClearDrawable = getCompoundDrawables()[2]; + if (mClearDrawable == null) { +// throw new NullPointerException("You can add drawableRight attribute in XML"); + mClearDrawable = getResources().getDrawable(R.drawable.icon_close); + } + + mClearDrawable.setBounds(0, 0, mClearDrawable.getIntrinsicWidth(), mClearDrawable.getIntrinsicHeight()); + //默认设置隐藏图标 + setClearIconVisible(false); + //设置焦点改变的监听 + setOnFocusChangeListener(this); + //设置输入框里面内容发生改变的监听 + addTextChangedListener(this); + } + + + /** + * 因为我们不能直接给EditText设置点击事件,所以我们用记住我们按下的位置来模拟点击事件 + * 当我们按下的位置 在 EditText的宽度 - 图标到控件右边的间距 - 图标的宽度 和 + * EditText的宽度 - 图标到控件右边的间距之间我们就算点击了图标,竖直方向就没有考虑 + */ + @Override + public boolean onTouchEvent(MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_UP) { + if (getCompoundDrawables()[2] != null) { + + boolean touchable = event.getX() > (getWidth() - getTotalPaddingRight()) + && (event.getX() < ((getWidth() - getPaddingRight()))); + + if (touchable) { + this.setText(""); + } + } + } + + return super.onTouchEvent(event); + } + + /** + * 当ClearEditText焦点发生变化的时候,判断里面字符串长度设置清除图标的显示与隐藏 + */ + @Override + public void onFocusChange(View v, boolean hasFocus) { + this.hasFoucs = hasFocus; + if (hasFocus) { + setClearIconVisible(getText().length() > 0); + } else { + setClearIconVisible(false); + } + } + + + /** + * 设置清除图标的显示与隐藏,调用setCompoundDrawables为EditText绘制上去 + * + * @param visible + */ + public void setClearIconVisible(boolean visible) { + Drawable right = visible ? mClearDrawable : null; + setCompoundDrawables(getCompoundDrawables()[0], + getCompoundDrawables()[1], right, getCompoundDrawables()[3]); + } + + + /** + * 当输入框里面内容发生变化的时候回调的方法 + */ + @Override + public void onTextChanged(CharSequence s, int start, int count, + int after) { + if (hasFoucs) { + setClearIconVisible(s.length() > 0); + } + } + + @Override + public void beforeTextChanged(CharSequence s, int start, int count, + int after) { + + } + + @Override + public void afterTextChanged(Editable s) { + + } + + + /** + * 设置晃动动画 + */ + public void setShakeAnimation() { + this.setAnimation(shakeAnimation(5)); + } + + + /** + * 晃动动画 + * + * @param counts 1秒钟晃动多少下 + * @return + */ + public static Animation shakeAnimation(int counts) { + Animation translateAnimation = new TranslateAnimation(0, 10, 0, 0); + translateAnimation.setInterpolator(new CycleInterpolator(counts)); + translateAnimation.setDuration(1000); + return translateAnimation; + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/LoginActivity.java b/app/src/main/java/com/gh/gamecenter/LoginActivity.java index 00049dda5d..abf20ee3d9 100644 --- a/app/src/main/java/com/gh/gamecenter/LoginActivity.java +++ b/app/src/main/java/com/gh/gamecenter/LoginActivity.java @@ -2,12 +2,14 @@ package com.gh.gamecenter; import android.content.Context; import android.content.Intent; +import android.graphics.Typeface; import android.os.Bundle; -import androidx.annotation.NonNull; import com.gh.common.util.EntranceUtils; import com.gh.gamecenter.fragment.LoginFragment; +import androidx.annotation.NonNull; + /** * Created by khy on 14/08/17. */ @@ -20,4 +22,12 @@ public class LoginActivity extends NormalActivity { bundle.putString(EntranceUtils.KEY_ENTRANCE, entrance); return getTargetIntent(context, LoginActivity.class, LoginFragment.class, bundle); } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mTitleTv.setText("登录光环助手"); + mTitleTv.setTextSize(18); + mTitleTv.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); + } } diff --git a/app/src/main/java/com/gh/gamecenter/ShareGhActivity.java b/app/src/main/java/com/gh/gamecenter/ShareGhActivity.java index 784c960d58..2434edaf35 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareGhActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareGhActivity.java @@ -10,15 +10,15 @@ import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; -import androidx.annotation.NonNull; - import com.gh.base.ToolBarActivity; import com.gh.common.util.MessageShareUtils; +import com.gh.common.util.MtaHelper; import com.gh.common.util.QRCodeUtils; import com.gh.common.util.ShareUtils; import com.lightgame.utils.Utils; import com.tencent.tauth.Tencent; +import androidx.annotation.NonNull; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; @@ -72,6 +72,7 @@ public class ShareGhActivity extends ToolBarActivity { @OnClick(R.id.gh_address_tv) public void copyAddress() { + MtaHelper.onEvent("我的光环_新", "分享光环", "复制官网"); ClipboardManager cmb = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); cmb.setText(getString(R.string.gh_website_url_100)); diff --git a/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java b/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java index 48dbd985fd..58e92c20d1 100644 --- a/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java @@ -10,15 +10,10 @@ import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; - import com.gh.base.OnRequestCallBackListener; import com.gh.base.ToolBarActivity; import com.gh.common.util.EntranceUtils; +import com.gh.common.util.MtaHelper; import com.gh.common.util.TextHelper; import com.gh.common.util.UrlFilterUtils; import com.gh.common.view.VerticalItemDecoration; @@ -33,6 +28,11 @@ import com.lightgame.utils.Utils; import java.util.List; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import butterknife.BindView; import butterknife.OnClick; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -166,6 +166,7 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo }); searchTv.setOnClickListener(v -> { + MtaHelper.onEvent("我的光环_新", "工具箱", "点击搜索"); if (TextUtils.isEmpty(searchEt.getText().toString())) { Utils.toast(this, R.string.search_hint); return; @@ -197,6 +198,7 @@ public class ToolBoxActivity extends ToolBarActivity implements SwipeRefreshLayo } else if (view.getId() == R.id.reuse_none_data) { if (mIsSearch) { // TODO反馈 + MtaHelper.onEvent("我的光环_新", "工具箱", "点击反馈"); SuggestionActivity.startSuggestionActivity(this, SuggestType.functionSuggest, null, null); } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java index 5188443468..720d74c5a2 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java @@ -6,14 +6,13 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.os.Environment; -import androidx.core.content.ContextCompat; -import androidx.collection.ArrayMap; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.TextView; import com.gh.common.util.BitmapUtils; +import com.gh.common.util.MtaHelper; import com.gh.common.util.PackageUtils; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.KcSelectGameViewHolder; @@ -29,6 +28,8 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import androidx.collection.ArrayMap; +import androidx.core.content.ContextCompat; import io.reactivex.Observable; import io.reactivex.ObservableEmitter; import io.reactivex.ObservableOnSubscribe; @@ -250,9 +251,11 @@ public class CleanApkAdapter extends BaseRecyclerAdapter if (mSelectPosition.get(holder.getAdapterPosition())) { checkBoxControl(false, holder.getAdapterPosition()); holder.selectCB.setChecked(false); + MtaHelper.onEvent("我的光环_设置", "安装包清理", "取消选中"); } else { checkBoxControl(true, holder.getAdapterPosition()); holder.selectCB.setChecked(true); + MtaHelper.onEvent("我的光环_设置", "安装包清理", "选中"); } } }); diff --git a/app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java b/app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java index 6ce89d7e6c..18d6dc6fd4 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java +++ b/app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java @@ -3,6 +3,7 @@ package com.gh.gamecenter.collection; import android.os.Bundle; import com.gh.base.fragment.BaseFragment_TabLayout; +import com.gh.common.util.MtaHelper; import com.gh.gamecenter.R; import java.util.List; @@ -51,6 +52,12 @@ public class CollectionWrapperFragment extends BaseFragment_TabLayout { } + @Override + public void onPageSelected(int position) { + super.onPageSelected(position); + MtaHelper.onEvent("我的光环_新", "我的收藏", mTabTitleList.get(position) + "Tab"); + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java index d56a5c923f..ec17e5465e 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java @@ -1,7 +1,6 @@ package com.gh.gamecenter.fragment; import android.content.Intent; -import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Message; import android.text.Editable; @@ -20,6 +19,7 @@ import com.gh.base.fragment.WaitingDialogFragment; import com.gh.common.util.LogUtils; import com.gh.common.util.LoginHelper; import com.gh.common.util.LoginUtils; +import com.gh.common.util.MtaHelper; import com.gh.common.util.PatternUtils; import com.gh.gamecenter.R; import com.gh.gamecenter.WebActivity; @@ -84,11 +84,11 @@ public class LoginFragment extends NormalFragment implements LoginUtils.onCaptch message.what = 0; message.arg1 = arg1; mBaseHandler.sendMessageDelayed(message, 1000); - mLoginCaptcha.setText(arg1 + "s"); + mLoginCaptcha.setText(arg1 + "s后重新获取"); } else { mLoginCaptcha.setText("重新获取"); - mLoginCaptcha.setTextColor(ContextCompat.getColor(getContext(), R.color.title)); - mLoginCaptcha.setBackgroundResource(R.drawable.border_black_bg); + mLoginCaptcha.setTextColor(ContextCompat.getColor(getContext(), R.color.text_1383EB)); +// mLoginCaptcha.setBackgroundResource(R.drawable.border_black_bg); mLoginCaptcha.setEnabled(true); } } @@ -104,12 +104,6 @@ public class LoginFragment extends NormalFragment implements LoginUtils.onCaptch } } - @Override - public void onActivityCreated(@Nullable Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - setNavigationTitle("登录光环助手"); - } - @Override protected int getLayoutId() { return R.layout.fragment_login; @@ -137,6 +131,7 @@ public class LoginFragment extends NormalFragment implements LoginUtils.onCaptch @Override public void onClick(@NonNull View widget) { + MtaHelper.onEvent("我的光环_新", "登录页面", "隐私政策"); Intent intent = WebActivity.getPrivacyPolicyIntent(getContext()); startActivity(intent); } @@ -147,12 +142,13 @@ public class LoginFragment extends NormalFragment implements LoginUtils.onCaptch @Override public void updateDrawState(@NonNull TextPaint ds) { super.updateDrawState(ds); - ds.setColor(getResources().getColor(R.color.theme)); + ds.setColor(getResources().getColor(R.color.text_1383EB)); ds.setUnderlineText(false); } @Override public void onClick(@NonNull View widget) { + MtaHelper.onEvent("我的光环_新", "登录页面", "用户协议"); startActivity(WebActivity.getWebIntent(getContext())); } }, privacyContent.length() - 13, privacyContent.length() - 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); @@ -166,6 +162,7 @@ public class LoginFragment extends NormalFragment implements LoginUtils.onCaptch super.onClick(v); switch (v.getId()) { case R.id.login_captcha: + MtaHelper.onEvent("我的光环_新", "登录页面", "获取验证码"); final String phoneNum = mLoginPhoneEt.getText().toString().trim(); if (PatternUtils.isPhoneNum(phoneNum) && phoneNum.length() == 11) { LoginUtils.getPhoneCaptcha(getContext(), phoneNum, LoginFragment.this); @@ -174,15 +171,19 @@ public class LoginFragment extends NormalFragment implements LoginUtils.onCaptch } break; case R.id.login_phone_btn: + MtaHelper.onEvent("我的光环_新", "登录页面", "点击登录"); loginByMobile(); break; case R.id.login_qq_btn: + MtaHelper.onEvent("我的光环_新", "登录页面", "QQ登录"); LoginHelper.loginWithQQ(this, requireActivity()); break; case R.id.login_weibo_btn: + MtaHelper.onEvent("我的光环_新", "登录页面", "微博登录"); LoginHelper.loginWithWeibo(this, requireActivity()); break; case R.id.login_wechat_btn: + MtaHelper.onEvent("我的光环_新", "登录页面", "微信登录"); LoginHelper.loginWithWechat(this); break; } @@ -223,16 +224,16 @@ public class LoginFragment extends NormalFragment implements LoginUtils.onCaptch message.arg1 = 60; // 倒数时间 mBaseHandler.sendMessage(message); mLoginCaptcha.setTextColor(ContextCompat.getColor(getContext(), R.color.hint)); - mLoginCaptcha.setBackgroundResource(R.drawable.border_captcha_bg); +// mLoginCaptcha.setBackgroundResource(R.drawable.border_captcha_bg); mLoginCaptcha.setEnabled(false); } } - + @Override public void onLoginSuccess(@NotNull LoginTag loginType, @NotNull JSONObject jsonContent) { login(jsonContent, loginType); } - + @Override public void onLoginFailure(@NotNull LoginTag loginType, @NotNull String error) { toast(error); @@ -302,25 +303,10 @@ public class LoginFragment extends NormalFragment implements LoginUtils.onCaptch @Override public void onTextChanged(CharSequence s, int start, int before, int count) { - Drawable drawable; int tvCount = s.length(); if (mEditText == mLoginPassEt) { - if (tvCount > 0) { - drawable = ContextCompat.getDrawable(getContext(), R.drawable.login_password_focused); - } else { - drawable = ContextCompat.getDrawable(getContext(), R.drawable.login_password_unfocused); - } - } else { - if (tvCount > 0) { - drawable = ContextCompat.getDrawable(getContext(), R.drawable.login_phone_focused); - } else { - drawable = ContextCompat.getDrawable(getContext(), R.drawable.login_phone_unfocused); - } + mLoginBtn.setEnabled(tvCount > 5); } - drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); - Drawable line = ContextCompat.getDrawable(getContext(), R.drawable.et_line_login); - line.setBounds(0, 0, line.getMinimumWidth(), line.getMinimumHeight()); - mEditText.setCompoundDrawables(drawable, null, null, line); } @Override diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingAdapter.kt index 77081a195c..7bb72f8763 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingAdapter.kt @@ -5,10 +5,12 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.gh.common.constant.ItemViewType +import com.gh.common.util.MtaHelper import com.gh.gamecenter.R import com.gh.gamecenter.adapter.viewholder.FooterViewHolder import com.gh.gamecenter.baselist.ListAdapter import com.gh.gamecenter.databinding.ItemMyGameRatingBinding +import kotlinx.android.synthetic.main.item_my_game_rating.view.* class MyRatingAdapter(context: Context) : ListAdapter(context) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { @@ -30,7 +32,14 @@ class MyRatingAdapter(context: Context) : ListAdapter(context) { override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { when (getItemViewType(position)) { ItemViewType.ITEM_BODY -> { - + holder.itemView.apply { + game_info.setOnClickListener { + MtaHelper.onEvent("我的光环_新", "我的游戏评论", "游戏详情") + } + comment_info.setOnClickListener { + MtaHelper.onEvent("我的光环_新", "我的游戏评论", "评论详情") + } + } } ItemViewType.ITEM_FOOTER -> { val footerViewHolder = holder as FooterViewHolder diff --git a/app/src/main/java/com/gh/gamecenter/history/HistoryWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/history/HistoryWrapperFragment.kt index 8a81dc14c9..48dc97807e 100644 --- a/app/src/main/java/com/gh/gamecenter/history/HistoryWrapperFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/history/HistoryWrapperFragment.kt @@ -3,6 +3,7 @@ package com.gh.gamecenter.history import android.os.Bundle import androidx.fragment.app.Fragment import com.gh.base.fragment.BaseFragment_TabLayout +import com.gh.common.util.MtaHelper import com.gh.gamecenter.R import com.gh.gamecenter.collection.AnswerFragment import com.gh.gamecenter.collection.ArticleFragment @@ -29,6 +30,11 @@ class HistoryWrapperFragment : BaseFragment_TabLayout() { })) } + override fun onPageSelected(position: Int) { + super.onPageSelected(position) + MtaHelper.onEvent("我的光环_新", "浏览记录", "${mTabTitleList[position]}Tab") + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setNavigationTitle("浏览记录") diff --git a/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java b/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java index c8968c3a0c..6ca8597935 100644 --- a/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java +++ b/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java @@ -10,17 +10,12 @@ import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; -import androidx.annotation.Nullable; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; - import com.gh.base.OnRequestCallBackListener; import com.gh.base.ToolBarActivity; import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.DataCollectionUtils; +import com.gh.common.util.MtaHelper; import com.gh.common.util.StringUtils; import com.gh.common.view.Concern_LinearLayout; import com.gh.common.view.VerticalItemDecoration; @@ -53,6 +48,11 @@ import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.List; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import butterknife.BindView; import butterknife.OnClick; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -145,6 +145,7 @@ public class ConcernFragment extends NormalFragment implements SwipeRefreshLayou @Override public void onMenuItemClick(MenuItem menuItem) { if (menuItem.getItemId() == R.id.menu_concern) { + MtaHelper.onEvent("我的光环_新", "游戏动态", "关注按钮"); Intent intent = ConcernActivity.getIntent(getContext(), "(游戏动态:工具栏)"); startActivity(intent); } diff --git a/app/src/main/java/com/gh/gamecenter/info/InfoWrapperFragment.java b/app/src/main/java/com/gh/gamecenter/info/InfoWrapperFragment.java index 3b44994f63..c6c275833b 100644 --- a/app/src/main/java/com/gh/gamecenter/info/InfoWrapperFragment.java +++ b/app/src/main/java/com/gh/gamecenter/info/InfoWrapperFragment.java @@ -4,11 +4,9 @@ import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - import com.gh.base.fragment.BaseFragment_TabLayout; import com.gh.common.util.DataCollectionUtils; +import com.gh.common.util.MtaHelper; import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBUISwitch; @@ -16,6 +14,9 @@ import org.greenrobot.eventbus.EventBus; import java.util.List; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + import static com.gh.gamecenter.info.InfoToolWrapperFragment.EB_NEWSFRAGMENT_TAG; /** @@ -72,6 +73,7 @@ public class InfoWrapperFragment extends BaseFragment_TabLayout { @Override public void onPageSelected(int position) { + MtaHelper.onEvent("我的光环_新", "资讯中心", mTabTitleList.get(position) + "Tab"); EventBus.getDefault().post(new EBUISwitch(EB_NEWSFRAGMENT_TAG, position)); switch (position) { case 0: diff --git a/app/src/main/java/com/gh/gamecenter/libao/Libao1Fragment.java b/app/src/main/java/com/gh/gamecenter/libao/Libao1Fragment.java index 8674aec0e8..25687a5663 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/Libao1Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/libao/Libao1Fragment.java @@ -9,12 +9,8 @@ import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.TextView; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentTransaction; -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; - import com.gh.base.fragment.BaseFragment; +import com.gh.common.util.MtaHelper; import com.gh.common.util.TextHelper; import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBReuse; @@ -25,6 +21,10 @@ import com.lightgame.utils.Utils; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import butterknife.BindView; import butterknife.OnClick; @@ -135,6 +135,7 @@ public class Libao1Fragment extends BaseFragment implements SwipeRefreshLayout.O mIsSearch = false; break; case R.id.tv_search: + MtaHelper.onEvent("我的光环_新", "礼包中心", "点击搜索"); String key = mLibaoEtSearch.getText().toString(); if (TextUtils.isEmpty(key)) { toast(R.string.search_hint); diff --git a/app/src/main/java/com/gh/gamecenter/libao/LibaoFragment.java b/app/src/main/java/com/gh/gamecenter/libao/LibaoFragment.java index 18f22c75ad..26a10790f8 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/LibaoFragment.java +++ b/app/src/main/java/com/gh/gamecenter/libao/LibaoFragment.java @@ -3,16 +3,13 @@ package com.gh.gamecenter.libao; import android.app.Activity; import android.content.Context; import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; -import androidx.core.content.ContextCompat; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import android.widget.TextView; import com.gh.base.fragment.BaseFragment_TabLayout; +import com.gh.common.util.MtaHelper; import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.eventbus.EBUISwitch; @@ -23,6 +20,10 @@ import org.greenrobot.eventbus.ThreadMode; import java.util.List; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; import butterknife.BindView; /** @@ -112,6 +113,7 @@ public class LibaoFragment extends BaseFragment_TabLayout { @Override public void onPageSelected(int position) { + MtaHelper.onEvent("我的光环_新", "礼包中心", mTabTitleList.get(position) + "Tab"); EventBus.getDefault().post(new EBUISwitch(EB_LIBAOACTIVITY_TAG, position)); } diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt index 262633f785..9dc9e34668 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt @@ -62,6 +62,7 @@ class MyFollowedGameAdapter(context: Context, var mViewModel: MyFollowedGameView holder.itemView.setOnClickListener { MtaHelper.onEvent("我的光环", path, "点击其他位置") + MtaHelper.onEvent("我的光环_新", path, "点击其他位置") GameDetailActivity.startGameDetailActivity(mContext, gameEntity.id, mEntrance) } } @@ -124,11 +125,13 @@ class MyFollowedGameViewHolder(var binding: ItemFollowedGameBinding) : RecyclerV fun initShortcut(gameEntity: GameEntity, entrance: String, path: String) { binding.trendsContainer.setOnClickListener { MtaHelper.onEvent("我的光环", path, "动态入口") + MtaHelper.onEvent("我的光环_新", path, "动态入口") GameDetailActivity.startGameDetailByShortcut(binding.root.context, gameEntity, GameDetailFragment.INDEX_TRENDES, entrance) } binding.descContainer.setOnClickListener { MtaHelper.onEvent("我的光环", path, "介绍入口") + MtaHelper.onEvent("我的光环_新", path, "介绍入口") GameDetailActivity.startGameDetailByShortcut(binding.root.context, gameEntity, GameDetailFragment.INDEX_DESC, entrance) } @@ -137,6 +140,7 @@ class MyFollowedGameViewHolder(var binding: ItemFollowedGameBinding) : RecyclerV binding.commentsContainer.addSelectableItemBackground() binding.commentsContainer.setOnClickListener { MtaHelper.onEvent("我的光环", path, "评论入口") + MtaHelper.onEvent("我的光环_新", path, "评论入口") GameDetailActivity.startGameDetailCommentActivity(binding.root.context, gameEntity, entrance) } } else { diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyGameActivity.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyGameActivity.kt index deddde7f7d..2df1c1b7d8 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyGameActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyGameActivity.kt @@ -29,6 +29,7 @@ class MyGameActivity : BaseActivity_TabLayout() { override fun onPageSelected(position: Int) { super.onPageSelected(position) MtaHelper.onEvent("我的光环", "我的游戏", "${mTabTitleList[position]}Tab") + MtaHelper.onEvent("我的光环_新", "我的游戏", "${mTabTitleList[position]}Tab") } companion object { diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameFragment.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameFragment.kt index 94e4d28484..084283c608 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameFragment.kt @@ -37,7 +37,7 @@ class MyPlayedGameFragment : PlayedGameFragment() { val installedList = PackagesManager.filterSameApk(PackagesManager.filterDownloadBlackPackage(PackagesManager.getInstalledList())) val count = SPUtils.getInt(Constants.SP_MARK_INSTALLED_GAME, 0) if (count < 2 && ts.isNullOrEmpty() && installedList.isNotEmpty()) { - val mDialog = InstalledGameDialog(requireContext(), installedList, "我的光环", "我的游戏-标记玩过弹窗") + val mDialog = InstalledGameDialog(requireContext(), installedList, "我的光环_新", "我的游戏-标记玩过弹窗") mDialog.show() mDialog.onConfirmClickListener = { onLoadRefresh() diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt index e1fd4514e8..88b721bab0 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt @@ -60,6 +60,7 @@ class MyReservationAdapter(context: Context, var mViewModel: MyReservationViewMo holder.itemView.setOnClickListener { MtaHelper.onEvent("我的光环", path, "点击其他位置") + MtaHelper.onEvent("我的光环_新", path, "点击其他位置") GameDetailActivity.startGameDetailActivity(mContext, gameEntity.id, mEntrance) } 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 6c19a14bdc..dd80909cee 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java @@ -8,7 +8,6 @@ import android.os.Bundle; import android.preference.PreferenceManager; import android.text.TextUtils; import android.view.View; -import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; @@ -81,7 +80,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; -import androidx.core.view.ViewCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders; import androidx.recyclerview.widget.LinearLayoutManager; @@ -97,8 +95,6 @@ import retrofit2.HttpException; public class PersonalFragment extends BaseFragment implements Observer> { - // @BindView(R.id.scroll_view) -// NestedScrollView mScrollView; @BindView(R.id.appbar) AppBarLayout appbar; @BindView(R.id.collapsingToolbar) @@ -176,7 +172,7 @@ public class PersonalFragment extends BaseFragment implements Observer { if (messageUnread != null && messageUnread.getTotal() > 0) { - mPersonalHome.setText(messageUnread.getFans() > 0 ? ((messageUnread.getFans() < 100 ? messageUnread.getFans() : "99+") + "个新粉丝 >") : "个人主页 >"); + mPersonalHome.setText(messageUnread.getFans() > 0 ? ((messageUnread.getFans() < 100 ? messageUnread.getFans() : "99+") + "个新粉丝") : "个人主页"); int count = messageUnread.getTotal() - messageUnread.getFans(); mLoginMessageHint.setVisibility(count > 0 ? View.VISIBLE : View.GONE); BindingAdapters.setMessageUnread(mLoginMessageHint, count); @@ -215,7 +211,7 @@ public class PersonalFragment extends BaseFragment implements Observer"); + mPersonalHome.setText("个人主页"); EventBus.getDefault().post(new EBReuse(MESSAGE_READ_OVER)); } }); @@ -224,8 +220,14 @@ public class PersonalFragment extends BaseFragment implements Observer { - MtaHelper.onEvent("我的光环", "签到"); - sign(); + if (CheckLoginUtils.isLogin()) { + MtaHelper.onEvent("我的光环", "签到"); + MtaHelper.onEvent("我的光环_新", "签到", "点击签到"); + sign(); + } else { + MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "签到"); + CheckLoginUtils.checkLogin(getContext(), "我的光环-签到", null); + } }); } @@ -235,12 +237,6 @@ public class PersonalFragment extends BaseFragment implements Observer { - ((ViewGroup.MarginLayoutParams) toolbar.getLayoutParams()).topMargin = insets.getSystemWindowInsetTop(); - return insets.consumeSystemWindowInsets(); - }); int collapsingTrigger = DisplayUtils.dip2px(66) + DisplayUtils.getStatusBarHeight(getContext().getResources()); collapsingToolbar.setScrimVisibleHeightTrigger(collapsingTrigger); collapsingToolbar.setScrimShownAction(aBoolean -> { @@ -323,19 +319,38 @@ public class PersonalFragment extends BaseFragment implements Observer { + if (CheckLoginUtils.isLogin()) { MtaHelper.onEvent("我的光环", "消息"); + MtaHelper.onEvent("我的光环_新", "消息中心", "点击消息中心"); startActivityForResult(MessageActivity.getIntent(getContext(), "(我的光环)+(消息中心)"), REQUEST_MESSAGE); - }); + } else { + MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "消息中心"); + CheckLoginUtils.checkLogin(getContext(), "我的光环-消息", () -> { + }); + } break; case R.id.personal_user_icon: + if (mUserInfoEntity != null) { + MtaHelper.onEvent("我的光环", "个人中心"); + MtaHelper.onEvent("我的光环_新", "头像", "点击头像"); + startActivity(UserInfoActivity.getIntent(getContext())); + } else { + MtaHelper.onEvent("我的光环", "手机登录"); + CheckLoginUtils.checkLogin(getContext(), "我的光环-手机登录", null); + } + break; case R.id.personal_user_name: if (mUserInfoEntity != null) { MtaHelper.onEvent("我的光环", "个人中心"); + MtaHelper.onEvent("我的光环_新", "昵称", "点击昵称"); startActivity(UserInfoActivity.getIntent(getContext())); } else { MtaHelper.onEvent("我的光环", "手机登录"); @@ -345,10 +360,12 @@ public class PersonalFragment extends BaseFragment implements Observer { MtaHelper.onEvent("我的光环", "个人主页"); + MtaHelper.onEvent("我的光环_新", "个人主页", "进入个人主页"); DirectUtils.directToHomeActivity(getContext(), UserManager.getInstance().getUserId(), "", "我的光环"); }); break; case R.id.personal_badge: + MtaHelper.onEvent("我的光环_新", "徽章中心", "进入徽章中心"); DirectUtils.directToBadgeWall(requireContext(), mUserInfoEntity.getUserId(), mUserInfoEntity.getName(), mUserInfoEntity.getIcon()); break; default: diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionAdapter.kt index d495bb2aa2..991ddfb2b9 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionAdapter.kt @@ -23,7 +23,7 @@ import com.gh.gamecenter.video.videomanager.VideoManagerActivity import com.lightgame.adapter.BaseRecyclerAdapter import com.lightgame.utils.Utils -class PersonalFunctionAdapter(val context: Context, val mEntityList: ArrayList) : BaseRecyclerAdapter(context) { +class PersonalFunctionAdapter(val context: Context, val groupName: String, val mEntityList: ArrayList) : BaseRecyclerAdapter(context) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return object : RecyclerView.ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_personal_func, parent, false)) {} @@ -52,6 +52,7 @@ class PersonalFunctionAdapter(val context: Context, val mEntityList: ArrayList { if (UserManager.getInstance().isLoggedIn) { @@ -60,14 +61,19 @@ class PersonalFunctionAdapter(val context: Context, val mEntityList: ArrayList { - CheckLoginUtils.checkLogin(context, "我的光环-收藏") { + if (UserManager.getInstance().isLoggedIn) { MtaHelper.onEvent("我的光环", "收藏") context.startActivity(CollectionActivity.getCollectionActivity(context, "(我的光环)")) + } else { + MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "我的收藏") + CheckLoginUtils.checkLogin(context, "我的光环-收藏") {} } + } "意见反馈" -> { MtaHelper.onEvent("我的光环", "反馈") @@ -78,27 +84,43 @@ class PersonalFunctionAdapter(val context: Context, val mEntityList: ArrayList { - CheckLoginUtils.checkLogin(context, "我的光环-视频投稿") { + if (UserManager.getInstance().isLoggedIn) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { context.startActivity(VideoManagerActivity.getIntent(context, "", "我的光环-视频投稿")) } else { DialogUtils.showAlertDialog(context, "提示", "抱歉,您当前系统版本过低,暂不支持视频功能", "我知道了", null, null, null) } + MtaHelper.onEvent("我的光环", "视频投稿") + } else { + MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "视频投稿") + CheckLoginUtils.checkLogin(context, "我的光环-视频投稿") {} } - MtaHelper.onEvent("我的光环", "视频投稿") } "游戏评论" -> { - CheckLoginUtils.checkLogin(context, "我的光环-游戏评论") { - context.startActivity(MyRatingActivity.getIntent(context,"","我的光环-游戏评论")) + if (UserManager.getInstance().isLoggedIn) { + context.startActivity(MyRatingActivity.getIntent(context, "", "我的光环-游戏评论")) + } else { + MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "我的游戏评论") + CheckLoginUtils.checkLogin(context, "我的光环-游戏评论") {} } } "我的问答" -> { - MtaHelper.onEvent("我的光环", "我的问答") - CheckLoginUtils.checkLogin(context, "我的光环-我的问答") { context.startActivity(MyAskActivity.getIntent(context)) } + if (UserManager.getInstance().isLoggedIn) { + MtaHelper.onEvent("我的光环", "我的问答") + context.startActivity(MyAskActivity.getIntent(context)) + } else { + MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "我的问答") + CheckLoginUtils.checkLogin(context, "我的光环-我的问答") { } + } } "实名认证" -> { - context.startActivity(UserInfoEditActivity.getIntent(context, UserViewModel.TYPE_ID_CARD)) + if (UserManager.getInstance().isLoggedIn) { + context.startActivity(UserInfoEditActivity.getIntent(context, UserViewModel.TYPE_ID_CARD)) + }else{ + MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "实名认证") + CheckLoginUtils.checkLogin(context, "我的光环-实名认证") { } + } } "微信提醒" -> { MtaHelper.onEvent("我的光环", "设置微信提醒") @@ -114,32 +136,32 @@ class PersonalFunctionAdapter(val context: Context, val mEntityList: ArrayList { - //MtaHelper.onEvent("发现", "游戏动态") - DataCollectionUtils.uploadClick(context, "游戏动态", "发现") + if (UserManager.getInstance().isLoggedIn) { + DataCollectionUtils.uploadClick(context, "游戏动态", "发现") + context.startActivity(ConcernInfoActivity.getIntent(context)) + } else { + MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "游戏动态") + CheckLoginUtils.checkLogin(context, "我的光环-游戏动态") { } + } - context.startActivity(ConcernInfoActivity.getIntent(context)) } "资讯中心" -> { - //MtaHelper.onEvent("发现", "资讯中心") DataCollectionUtils.uploadClick(context, "资讯中心", "发现") context.startActivity(InfoActivity.getIntent(context)) } "礼包中心" -> { - //MtaHelper.onEvent("发现", "礼包中心") DataCollectionUtils.uploadClick(context, "礼包中心", "发现") val intent = LibaoActivity.getIntent(context, "(发现:礼包)") context.startActivity(intent) } "工具箱" -> { - //MtaHelper.onEvent("发现", "工具箱") DataCollectionUtils.uploadClick(context, "工具箱", "发现") context.startActivity(ToolBoxActivity.getIntent(context, "(发现:工具箱)")) } "安装包清理" -> { - //MtaHelper.onEvent("发现", "安装包清理") DataCollectionUtils.uploadClick(context, "安装包清理", "发现") context.startActivity(CleanApkActivity.getIntent(context)) } diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionGroupAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionGroupAdapter.kt index 99ef2ef2b4..bf68ca3299 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionGroupAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionGroupAdapter.kt @@ -34,7 +34,7 @@ class PersonalFunctionGroupAdapter(val context: Context) : BaseRecyclerAdapter) { fragments.add(VideoVerifyFragment()) fragments.add(VideoDraftFragment()) diff --git a/app/src/main/java/com/halo/assistant/fragment/AboutFragment.java b/app/src/main/java/com/halo/assistant/fragment/AboutFragment.java index 2385f1d60a..a618f343ea 100644 --- a/app/src/main/java/com/halo/assistant/fragment/AboutFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/AboutFragment.java @@ -13,6 +13,7 @@ import android.widget.RelativeLayout; import android.widget.TextView; import com.gh.common.util.EntranceUtils; +import com.gh.common.util.MtaHelper; import com.gh.common.util.PackageHelper; import com.gh.common.util.PackageUtils; import com.gh.common.util.StringUtils; @@ -77,6 +78,7 @@ public class AboutFragment extends NormalFragment { } mIcon.setOnLongClickListener(v -> { + MtaHelper.onEvent("我的光环_设置", "关于光环", "图标长按"); toast(HaloApp.getInstance().getChannel()); return false; }); @@ -87,17 +89,21 @@ public class AboutFragment extends NormalFragment { Intent intent; switch (view.getId()) { case R.id.setting_rl_update: + MtaHelper.onEvent("我的光环_设置", "关于光环", "版本更新"); UpdateManager.getInstance(getContext()).checkUpdate(false, mBaseHandler); // 检查更新 break; case R.id.about_user_protocol: + MtaHelper.onEvent("我的光环_设置", "关于光环", "用户协议"); intent = WebActivity.getWebIntent(requireContext()); startActivity(intent); break; case R.id.about_privacy_policy: + MtaHelper.onEvent("我的光环_设置", "关于光环", "隐私政策"); intent = WebActivity.getPrivacyPolicyIntent(requireContext()); startActivity(intent); break; case R.id.about_jump_douyin: + MtaHelper.onEvent("我的光环_设置", "关于光环", "抖音"); ClipboardManager cmb = (ClipboardManager) requireContext().getSystemService(Context.CLIPBOARD_SERVICE); String url = getString(R.string.gh_douyin_url); cmb.setText(url); @@ -118,6 +124,7 @@ public class AboutFragment extends NormalFragment { @OnLongClick({R.id.about_bottom}) public void onLongClick(View view) { if (view.getId() == R.id.about_bottom) { + MtaHelper.onEvent("我的光环_设置", "关于光环", "底部长按"); startActivity(WebActivity.getSecurityCertificationIntent(requireContext())); } } diff --git a/app/src/main/java/com/halo/assistant/fragment/ApkCleanerFragment.java b/app/src/main/java/com/halo/assistant/fragment/ApkCleanerFragment.java index 45fe58c980..36322bee03 100644 --- a/app/src/main/java/com/halo/assistant/fragment/ApkCleanerFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/ApkCleanerFragment.java @@ -5,16 +5,11 @@ import android.os.Bundle; import android.text.Html; import android.view.View; import android.widget.CheckBox; -import android.widget.CompoundButton; import android.widget.ProgressBar; import android.widget.TextView; -import androidx.collection.ArrayMap; -import androidx.lifecycle.Lifecycle; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - import com.gh.common.util.DialogUtils; +import com.gh.common.util.MtaHelper; import com.gh.common.view.VerticalItemDecoration; import com.gh.gamecenter.MainActivity; import com.gh.gamecenter.R; @@ -28,6 +23,10 @@ import java.io.File; import java.text.DecimalFormat; import java.util.List; +import androidx.collection.ArrayMap; +import androidx.lifecycle.Lifecycle; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.OnClick; @@ -78,37 +77,36 @@ public class ApkCleanerFragment extends NormalFragment implements CleanApkAdapte mApkRv.addItemDecoration(new VerticalItemDecoration(getContext(), 8, true)); mApkRv.setAdapter(mAdapter); - mApkSelectAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - ArrayMap selectPosition = new ArrayMap<>(); - ArrayMap selectPosition1 = mAdapter.getSelectPosition(); - int itemCount = mAdapter.getItemCount(); - if (isChecked) { - for (int i = 0; i < itemCount; i++) { - selectPosition.put(i, true); - } - } else { - int selectCount = 0; - for (Integer integer : selectPosition1.keySet()) { - if (selectPosition1.get(integer)) { - selectCount++; - } - } - - if (selectCount != itemCount) { - return; - } - - for (int i = 0; i < itemCount; i++) { - selectPosition.put(i, false); + mApkSelectAll.setOnCheckedChangeListener((buttonView, isChecked) -> { + ArrayMap selectPosition = new ArrayMap<>(); + ArrayMap selectPosition1 = mAdapter.getSelectPosition(); + int itemCount = mAdapter.getItemCount(); + if (isChecked) { + MtaHelper.onEvent("我的光环_设置", "安装包清理", "选中"); + for (int i = 0; i < itemCount; i++) { + selectPosition.put(i, true); + } + } else { + MtaHelper.onEvent("我的光环_设置", "安装包清理", "取消选中"); + int selectCount = 0; + for (Integer integer : selectPosition1.keySet()) { + if (selectPosition1.get(integer)) { + selectCount++; } } - mAdapter.setSelectPosition(selectPosition); - mAdapter.notifyItemRangeChanged(0, itemCount); - mAdapter.checkBoxControl(isChecked, 0); + if (selectCount != itemCount) { + return; + } + + for (int i = 0; i < itemCount; i++) { + selectPosition.put(i, false); + } } + + mAdapter.setSelectPosition(selectPosition); + mAdapter.notifyItemRangeChanged(0, itemCount); + mAdapter.checkBoxControl(isChecked, 0); }); mNodataSkipBtn.setText("去首页看看"); @@ -123,12 +121,14 @@ public class ApkCleanerFragment extends NormalFragment implements CleanApkAdapte case R.id.delete_btn: { String s = mApkDeleteBtn.getText().toString(); if ("停止扫描".equals(s)) { + MtaHelper.onEvent("我的光环_设置", "安装包清理", "停止扫描"); mAdapter.isStopScan(); } else { if ("一键删除".equals(s)) { Utils.toast(getContext(), "请选择需要删除的安装包"); return; } + MtaHelper.onEvent("我的光环_设置", "安装包清理", "一键删除"); final List apkList = mAdapter.getApkList(); final ArrayMap selectPosition = mAdapter.getSelectPosition(); diff --git a/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java b/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java index 717a6ba047..471596572a 100644 --- a/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java @@ -18,10 +18,6 @@ import android.widget.RadioGroup; import android.widget.RelativeLayout; import android.widget.TextView; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AlertDialog; -import androidx.core.content.ContextCompat; - import com.gh.common.constant.Config; import com.gh.common.history.HistoryHelper; import com.gh.common.util.CheckLoginUtils; @@ -56,6 +52,9 @@ import org.greenrobot.eventbus.EventBus; import java.io.File; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.core.content.ContextCompat; import butterknife.BindView; import butterknife.OnClick; import io.reactivex.Observable; @@ -291,6 +290,7 @@ public class SettingsFragment extends NormalFragment { break; case R.id.setting_rl_autoinstall: MtaHelper.onEvent("我的光环_设置", "设置功能", "下载完成自动安装游戏"); + MtaHelper.onEvent("我的光环_设置", "自动安装游戏", mSettingAutoinstallSb.isChecked() ? "关闭" : "打开"); mSettingAutoinstallSb.performClick(); break; case R.id.setting_rl_cache: @@ -312,6 +312,7 @@ public class SettingsFragment extends NormalFragment { break; case R.id.setting_rl_concerngame: MtaHelper.onEvent("我的光环_设置", "设置功能", "安装完成自动关注游戏"); + MtaHelper.onEvent("我的光环_设置", "自动安装游戏", mSettingConcerngameSb.isChecked() ? "关闭" : "打开"); mSettingConcerngameSb.performClick(); break; case R.id.setting_logout_rl: @@ -371,6 +372,7 @@ public class SettingsFragment extends NormalFragment { case R.id.setting_clean_package: // MtaHelper.onEvent("发现", "安装包清理"); // DataCollectionUtils.uploadClick(requireContext(), "安装包清理", "发现"); + MtaHelper.onEvent("我的光环_设置", "设置功能", "安装包清理"); startActivity(CleanApkActivity.getIntent(requireContext())); break; default: diff --git a/app/src/main/java/com/halo/assistant/fragment/user/UserInfoEditFragment.java b/app/src/main/java/com/halo/assistant/fragment/user/UserInfoEditFragment.java index 39ae95be4d..8d36bb443b 100644 --- a/app/src/main/java/com/halo/assistant/fragment/user/UserInfoEditFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/user/UserInfoEditFragment.java @@ -14,6 +14,7 @@ import android.widget.ImageView; import android.widget.TextView; import com.gh.common.util.DialogUtils; +import com.gh.common.util.MtaHelper; import com.gh.common.util.TextHelper; import com.gh.gamecenter.R; import com.gh.gamecenter.entity.IdCardEntity; @@ -88,8 +89,10 @@ public class UserInfoEditFragment extends NormalFragment { TextView mUserInfoIntroduceTv; @BindView(R.id.userinfo_information_tv) TextView mUserInfoInformationTv; - @BindView(R.id.userinfo_verified_complete) - TextView mUserinfoVerifiedComplete; + @BindView(R.id.userinfo_commit) + TextView mUserinfoCommit; + @BindView(R.id.userinfo_verified_success) + View mUserinfoVerifiedSuccess; private static final int MIN_NAME_LENGHT = 2; @@ -133,7 +136,7 @@ public class UserInfoEditFragment extends NormalFragment { } if (mLoadingDialog != null && userInfoEntity != null && userInfoEntity.getData() != null) { if (TextUtils.equals(UserViewModel.TYPE_ID_CARD, mEditType)) { - mUserinfoVerifiedComplete.setVisibility(View.VISIBLE); + mUserinfoVerifiedSuccess.setVisibility(View.VISIBLE); mUserInfoInformationTv.setVisibility(View.GONE); if (mSaveMenuItem != null) mSaveMenuItem.setVisible(false); return; @@ -218,6 +221,10 @@ public class UserInfoEditFragment extends NormalFragment { mUserinfoMobileEt.setFilters(new InputFilter[]{TextHelper.getFilter(11, "手机号最多11位")}); break; case UserViewModel.TYPE_ID_CARD: + if (mSaveMenuItem != null) { + TextView menuView = mSaveMenuItem.getActionView().findViewById(R.id.tv_menu_button); + menuView.setVisibility(View.GONE); + } mIdCard.setVisibility(View.VISIBLE); title = "实名认证"; IdCardEntity idCard = mUserInfoEntity.getIdCard(); @@ -230,7 +237,8 @@ public class UserInfoEditFragment extends NormalFragment { mIdCardEt.setText(idCard.getId().replaceAll("(\\d)\\d{16}([0-9,x-y])", "$1****************$2")); mIdCardNameEt.setEnabled(false); mIdCardEt.setEnabled(false); - mUserinfoVerifiedComplete.setVisibility(View.VISIBLE); + mUserinfoCommit.setVisibility(View.GONE); + mUserinfoVerifiedSuccess.setVisibility(View.VISIBLE); mUserInfoInformationTv.setVisibility(View.GONE); if (mSaveMenuItem != null) mSaveMenuItem.setVisible(false); } else { @@ -325,23 +333,25 @@ public class UserInfoEditFragment extends NormalFragment { toast("身份证无效,请重新输入"); return; } - DialogUtils.showAlertDialog(getContext(), "实名认证确认", "身份认证信息保存之后将不可修改,确定提交?" - , "确定", "取消", () -> { - try { - JSONObject object = new JSONObject(); - object.put("id", idCard); - object.put("name", name); - change(object.toString()); - } catch (JSONException e) { - e.printStackTrace(); - } - }, null); + VerifiedConfirmDialog dialog = new VerifiedConfirmDialog(requireContext(), "我的光环_新", "实名认证"); + dialog.show(); + dialog.setOnConfirmClickListener(() -> { + try { + JSONObject object = new JSONObject(); + object.put("id", idCard); + object.put("name", name); + change(object.toString()); + } catch (JSONException e) { + e.printStackTrace(); + } + return null; + }); } } @OnClick({R.id.userinfo_contact_iv, R.id.userinfo_sex_man, - R.id.userinfo_sex_woman}) + R.id.userinfo_sex_woman, R.id.userinfo_commit}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.userinfo_contact_iv: @@ -353,6 +363,10 @@ public class UserInfoEditFragment extends NormalFragment { case R.id.userinfo_sex_woman: change(getString(R.string.gender_female)); break; + case R.id.userinfo_commit: + MtaHelper.onEvent("我的光环_新", "实名认证", "提交"); + saveData(); + break; } } diff --git a/app/src/main/java/com/halo/assistant/fragment/user/UserInfoFragment.java b/app/src/main/java/com/halo/assistant/fragment/user/UserInfoFragment.java index 0f21324f9b..67475a76ec 100644 --- a/app/src/main/java/com/halo/assistant/fragment/user/UserInfoFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/user/UserInfoFragment.java @@ -5,11 +5,9 @@ import android.text.TextUtils; import android.view.View; import android.widget.TextView; -import androidx.annotation.Nullable; -import androidx.lifecycle.ViewModelProviders; - import com.facebook.drawee.view.SimpleDraweeView; import com.gh.common.util.ImageUtils; +import com.gh.common.util.MtaHelper; import com.gh.gamecenter.R; import com.gh.gamecenter.SelectUserIconActivity; import com.gh.gamecenter.UserInfoEditActivity; @@ -20,6 +18,8 @@ import com.gh.gamecenter.entity.UserInfoEntity; import com.gh.gamecenter.normal.NormalFragment; import com.gh.gamecenter.user.UserViewModel; +import androidx.annotation.Nullable; +import androidx.lifecycle.ViewModelProviders; import butterknife.BindView; import butterknife.OnClick; @@ -133,30 +133,39 @@ public class UserInfoFragment extends NormalFragment { public void onViewClicked(View view) { switch (view.getId()) { case R.id.userinfo_icon_rl: + MtaHelper.onEvent("个人主页详情", "个人中心", "头像"); startActivity(SelectUserIconActivity.getIntent(getContext())); break; case R.id.userinfo_nickname_rl: + MtaHelper.onEvent("个人主页详情", "个人中心", "昵称"); startActivity(UserInfoEditActivity.getIntent(getContext(), UserViewModel.TYPE_NAME)); break; case R.id.userinfo_sex_rl: + MtaHelper.onEvent("个人主页详情", "个人中心", "性别"); startActivity(UserInfoEditActivity.getIntent(getContext(), UserViewModel.TYPE_GENDER)); break; case R.id.userinfo_area_rl: + MtaHelper.onEvent("个人主页详情", "个人中心", "地区"); startActivity(UserRegionActivity.getIntent(getContext())); break; case R.id.userinfo_mobile_rl: + MtaHelper.onEvent("个人主页详情", "个人中心", "手机"); startActivity(UserInfoEditActivity.getIntent(getContext(), UserViewModel.TYPE_MOBILE)); break; case R.id.userinfo_qq_rl: + MtaHelper.onEvent("个人主页详情", "个人中心", "QQ"); startActivity(UserInfoEditActivity.getIntent(getContext(), UserViewModel.TYPE_QQ)); break; case R.id.userinfo_verify_rl: + MtaHelper.onEvent("个人主页详情", "个人中心", "实名认证"); startActivity(UserInfoEditActivity.getIntent(getContext(), UserViewModel.TYPE_ID_CARD)); break; case R.id.userinfo_introduce_rl: + MtaHelper.onEvent("个人主页详情", "个人中心", "个性签名"); startActivity(UserInfoEditActivity.getIntent(getContext(), UserViewModel.TYPE_INTRODUCE)); break; case R.id.userinfo_safe_tutorial_tv: + MtaHelper.onEvent("个人主页详情", "个人中心", "账号安全指南"); startActivity(WebActivity.getIntentByUrl(getContext(), "https://resource.ghzs.com/page/guide_page/safety_guide.html")); break; } diff --git a/app/src/main/java/com/halo/assistant/fragment/user/VerifiedConfirmDialog.kt b/app/src/main/java/com/halo/assistant/fragment/user/VerifiedConfirmDialog.kt new file mode 100644 index 0000000000..e9da864e81 --- /dev/null +++ b/app/src/main/java/com/halo/assistant/fragment/user/VerifiedConfirmDialog.kt @@ -0,0 +1,29 @@ +package com.halo.assistant.fragment.user + +import android.content.Context +import android.os.Bundle +import android.view.View +import com.gh.common.dialog.TrackableDialog +import com.gh.common.util.MtaHelper +import com.gh.gamecenter.R +import kotlinx.android.synthetic.main.dialog_verified_confirm.view.* + +class VerifiedConfirmDialog(val mContext: Context, private val mEvent: String, private val mKey: String) + : TrackableDialog(mContext, R.style.DialogWindowTransparent, mEvent, mKey) { + + var onConfirmClickListener: (() -> Unit)? = null + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val view = View.inflate(mContext, R.layout.dialog_verified_confirm, null) + setContentView(view) + view.dialog_cancel.setOnClickListener { + MtaHelper.onEvent(mEvent, mKey, "点击取消") + dismiss() + } + view.dialog_confirm.setOnClickListener { + MtaHelper.onEvent(mEvent, mKey, "点击确定") + onConfirmClickListener?.invoke() + dismiss() + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/icon_close.png b/app/src/main/res/drawable-hdpi/icon_close.png new file mode 100644 index 0000000000000000000000000000000000000000..75c7b65713232e32dda044de6ce4cb9e1c9a874f GIT binary patch literal 861 zcmV-j1ETziP)Px&7fD1xR9FecS4)c;K@e_7QB-`eB8u+8M^1alEs$e!-9TW^`!8}0LI6V@H+@fP^V|-n!)xM(tLtYR?f&{wVZh5=iet_I1S~f`D=1> zuh)N@=4cJT>Jk8dkIC;aPMehIc<{muyek;-3FD=ooUZ{~H9$Y3z4V)O=r@4hpk4TR z;~xV$oz8Ore*wtpp+Euh1MttA&E^lc+@1k;yuU->vB4e80rKL7+Y^?xg}eMz)rfKVE$LO`vIB0ad)6SV<@BtxX(@C5EhwC zM#STBlU~J3rBWiD)~|(F_SqsVyih9-87*bASy3z&MYUQLRBob^lM_)cmqn>m5{ZNg zwcnIWVp}|3!8M+6tJO*>peLwUX9U6X`Mi|H3dMT8_5*glWr@N75Id_EWB@mR{} zjPQaFheNU1Y>aw|%^cvx5=fKDL~Dc}_+qgL)CqyJ7#{LQ3nNVL8->utX!=tArwHnEP8uT{{b|WFc`7G3Lo+Qq5sF znEkrlp#(hx%=<+T9Atnu;igm89zx~BfkxcYfVR{S;^75n!i`2F?d}Mnvds`&hY%Eg z;7-iFiD^2l+*rhpAc5j2LhiuOo`%eHDkYh=S}vE9Ta_{fWJa7%XD=T@&nohEM)b1EE*8Q z0VjwufG>0lm~SvVh7r_x?zo<6!K&{%J2DKG+wSvz?W2~00000NkvXXu0mjf=-QQz literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/bg_userinfo_verified_success.9.png b/app/src/main/res/drawable-xhdpi/bg_userinfo_verified_success.9.png new file mode 100644 index 0000000000000000000000000000000000000000..4994be456b09cc5a9303ad291bf49ba50f01b6d5 GIT binary patch literal 35086 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 Y1*`9OkBGTvjQ{`u07*qoM6N<$f;+XyD*ylh literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/login_password_unfocused.png b/app/src/main/res/drawable-xhdpi/login_password_unfocused.png index fd915f428f8308c4de6b208c9609fc8afa978edc..1a6cfc7e771d52e93353fc23a126b9b7a06bb394 100644 GIT binary patch literal 1172 zcmV;F1Z(?=P)Px(PDw;TR7ef2R!xXoRTMtwzD!eRIx|&4OkM)Ec}ZFXu}ll8RF@ZU4c{tt+A6FwPL+!cyf3`r{(BpGYE` zxF#`u!(_dkb>g3d;TkG<_G~S_-fWyAkvj(wBGRvER6U%H$IlJ)8)Q6lrWR|o8b2bk zr14|oAC%%*QF;zz7ME^A#E%Qf9*>8)FcuxZBbl5$-;cL%gk~ETORL`_vbz9oDpu3! zR6K`BbdU^wk$kZ{4gG11EoS;6>m&~aeS%{ZoCL@DQswZb7(wiXjAOsnEoS^p(qz-g zmxSmQGe^V+7mAgGX56dw6$JEz0pN>&LS%3D0teT!Df?w?^Sp;4*TV+w{$^0I7g zXCs;DW)Owz1N!ywX_BH@W5;RS-_Nh7;D-7$-bsDUzx4xmuj3<6x7TD_xm>=n+ivDP z1-a>N?>I-T3!U+hfhFp1-(}q$ne@lOzNcW&;cCY?`<^$Tvp8QWXR!GX;0rROtnH*_ zhbN}Egz-iwVV12(vo?;oNZPIA4&{+~U+zvN@`l3`Tr8HK!TuwyJ0&X=e|RTuA>!w< zP9n#J!pc3`lqDh!`M0nWpRQ}9ws zmanjb6;z?uHPcDO!c!jAsCq99C4gIs#mZEEsj|OTtBr@jps2UGh4=D8VFgu*XjeMv zo#!Be#X{vck(&cx!uXkjz$7_NC0ZUBWrb7}&ne zI`&6CYj$ViG}3*>%w5)a2@G$c1U1X`h6-o4)=jBNd21}>`E=X6=b;26Z2i&(%Dsy# z=WL$@TRFlaN6lOdZ~FMw-hJpS#a;Rk0!L67%Ean@i}Yoey^Y1?4us(Ezh6qVxip0kYg)#(1Wp>2g#abuWVPeK^BJ_SeCIP|#j1Q{I zI_{sTEMBC;Z~^WOg#({6fKsWlZy3l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT-VtFWlg~VrW1CgG|37u|VHY&pf(~1RD?6IsxA(xEJ)Q4 zN-fSWElLK)N18HBGcfG%TLe-Fbd8mNQ6?}_5_4SglS^|`^GZBjY?XjAdMTMHR>_9u z#->RIDY_O(W{J8crk19<7KvtQy2d7k2F6Afrly98Mlf@*={In8G&eG|bTe^wGc+`G zHFq*HGjuU`c5yT|b}}$`a)ash%quQQ%u7y%*_{cr8>-h8uU;$XqSVBa{GyQj{2W*+ z2*}7U$uG{xFHmrH2F1F$f`)Hma%LV#P!kkU5P!R*7G;*DrnnX5=PH0h+A0%^E6h!j z&6Cm+jdV>cOwx2sj7-gREfdX5b%DZZi5AAjrYRPdN>KeNVmvepI8KD2S?O2>|ZEJ3fPX(~+_6Eh}t@cd?eDj+DCdB4?v$BdJ| ziyw1VJ~+NJ?w#%X&-aSgeSf(sL@P?!duhI)r-bpwsfOn` zjoNY*y}w9b^)kpvJvTA=Pu4oOr`@Vw5AJP9zrerGCoEFBf@QCRyQcWsbtfchuQhS> z7H=}$sKfbkQT>HAx7Tj5+Qz?S60c(5gtSLm){(x_pC0k$`9D4RYkAoAtN`831+#6o zxjP2l%C=V1GUy7mGTmkR$U=UK-R}-A;f?J*T!Kn=2W@tQsU)z-T&r<(J{fgDNbdU1 z{u#d4vOcqI9(2$=Dg(JCp;C^mrPauAKcM5KR5PjvxK+#>^18bwEwT%b6Z4VzjL+3?F|!3_gyS6 i-lSEX{6_wp?g562w+b(c-i*=%6|A1FelF{r5}E*HtO?Zs diff --git a/app/src/main/res/drawable-xhdpi/login_phone_unfocused.png b/app/src/main/res/drawable-xhdpi/login_phone_unfocused.png index 39a9f137bfdd5ff9b31c9a15a4646664861cfaf4..7a9e750fa823f8ec92ef7a04fd6a099958271143 100644 GIT binary patch literal 593 zcmV-X0Px%3rR#lR7ef&m%T~@K@i7h?gAPgK#UqN(KFhlve3#Gh*)W@51`ms*eKZBXkjDR zYpE|_C!!#NpQl90mtbu^z}z@G>T9J&L<@j!fwZHZ?*7eq94n$@0|i#D6;2tFZbiJ=9EM-@bPY@jG$MoT zodKnpegk@BaWv6)?yRtx)Ytvu&_nih0_q?8vXOGNxXz>3Y}*_gIn*KxsbuWzw=h|T zXo!|~^Mk@C`;kX2&$-WDz!z|*KqvtT39l8f3jGZ+uR%wdG(&z55aajA}4ls0Y zJC=4V{jmd`L-S+HnoY3pLpA8m%+INIxHWllJ|L$A2VPH`8Vx`^Y!8P#=X}61V{pD5 zz&kVNdFlgx2a^lbd@O8nDmLsJhfvUm2UZNkn(z4+L15tX^II<=EQ5PM7)AjmC2Ki%#!{6Q{7V*c7u1AiI fMC?TL|D}8a=s2`foi{Iz00000NkvXXu0mjff^rLk literal 1254 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 Bx@G_X literal 4300 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 diff --git a/app/src/main/res/drawable-xhdpi/login_wechat_icon.png b/app/src/main/res/drawable-xhdpi/login_wechat_icon.png index bfbb6c5c6319f4c4e6ca6c3a3c41944bfb201d45..acbb94c5ba3eb68990b06a331c4418ee41481abb 100644 GIT binary patch literal 3401 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 literal 5113 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 DYtdc} literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/personal_new_version.png b/app/src/main/res/drawable-xhdpi/personal_new_version.png new file mode 100644 index 0000000000000000000000000000000000000000..2038f5ebf37c7e502b6a22df6869a651753ee8cf GIT binary patch literal 1850 zcmV-A2gUe_P)Px*^hrcPR9Fe+nQ4rTXB5Z(*S;?uN(YIpqzKU>G-xa(cGV$O5=-I(A5>I`771w^ zi4P(YL?pygBZw_+S|WmAv_WmLleDJxYE)}!xjnyoJno%w-N=cUcwz;3Jzo zAH)qP^tP|8_YIW2sR|VU(L%}TLtFNS0tE70`s-;k3ruMjTQvd!ahoy83?qhcJT;PnXgk=;5M%%X1$dM9e z7$tm()~yTnRZ?+@a#GKp(wH$4n=34=+pwY3rHj<8S>fIn>!U|YluU&Wy>g`z zx}vl5Wn#AN3`0mTZ|4MOELs#R)-v9DOByghx_B`x>fkhPEVXFiKtN;_D@xn8No&?5 zUZx>Kr1##FX3lhy>(IgbUVmL0JlIJPB7Ef)2aQ>`Zb?(7NRJ-*8ilU_I+TpSWZk;V ztr}3EgvE>Dl+IvaRGEaihaWsTd296bwbv}3SwQ36zx*PdKktz&KVSOkCkH1Akmyy5@8NyuJaHmp!C+H4 zL#Dkwv=pJ0Xc8qTx!>}eHf^LEH!S6`oCk|QnG+|Zzy9)>yNr`ptVjYCwO+dR_3M@3 zuXKI14IKDlPpZq&pN{vw{yI8JqVtFm<~Ug`!2%0$dn3;%DzyIbhk2UO49cE5<@f2+ zCCq*GY6phx-oIZw7;q4-fxP{;yB5ziYbMvBUbd`s@17SFA3K)TXn~W`$WC)TUy<5HKodez5;HV8Qg z{D5U3!-jeBnqP6rQKQ@f!#H~C)|GnqmTupc>eTVEzy2!W+C)i!3=-Tr)C=E9I318~ z0Ma1QPX=0)G;J!4AMYb-)R3qnWP-Hs*x_})I3-nJbT%0TOS^V0)THXwlg}t};DFar zm~p`!H*Zdk14v~1_T;|4`G&+xs!+jF%apM`GWwd-y+Iipm7N$#I$o3g86PI;W`Tr0&^RNVUY+sOSF!2x8F*G2D#PDnUkJm zedTo5IDlj(5MFSFkdToy5owTMA&_d61VH#ASOPpiu0q0w5N^qBx_5U%#rN~_yf0iQ zOt6^PQu^^n2R^ii`-Tn9X>YtCO`c4iQFO3iULbgLP+TT6IdjJI3|t_%42clj!Eb{q zReYUH0QvM&Y0DNLPnZlFV(z|uQuF3+^0+Ca83Zu;_VpU$NCI263cdaew~-zo-7H>A zo$BCvOZscDayvW8+(KAt_;87kN$5pL!Ta>_G#hh8VEQN_0?}VM$!gTdXYkd@hXQ$% z(*)ti7+?S()|f6;pF1~l>n_PN+`>m9q|nd?E-@hTl?T zzD0q-`@?+GCUZbeo|Kj^mu}v4hUdjZ5lolRNRq~ws00W=Q5e!q6>=H)1lO29-w7L~ z0T`F~;tT2X&;4L3SSIsNpY~Nq*oaEVf&~Rh^wK47FY3w}i60!Dv)?ku44w>y4HDKM zS9}u?*c2?!S3h?yJ;{aTu^z_m-5Xl`j{o8Y2M_w%`2XzL(!6~-5YXpp0yWqV}q2CJA~o5L~0v;N#22}2f=0d4TQiaL@9Cv%h&LJgP!I#+^Zc^|F zk#p56VTu0_Ah>x3hs>oH5G;X&57LIul7B;(zbMa2`oAHblWMS;(tWp3s978pMyXkP oEyRwhOld+|z7>n*nf;adH;r6LjoL9Mg#Z8m07*qoM6N<$g7_ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/et_line_login.xml b/app/src/main/res/drawable/et_line_login.xml index 3deaaeed30..67efac1b01 100644 --- a/app/src/main/res/drawable/et_line_login.xml +++ b/app/src/main/res/drawable/et_line_login.xml @@ -2,7 +2,7 @@ - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/login_btn_bg.xml b/app/src/main/res/drawable/login_btn_bg_unenable.xml similarity index 64% rename from app/src/main/res/drawable/login_btn_bg.xml rename to app/src/main/res/drawable/login_btn_bg_unenable.xml index 55f901d086..7b237d1083 100644 --- a/app/src/main/res/drawable/login_btn_bg.xml +++ b/app/src/main/res/drawable/login_btn_bg_unenable.xml @@ -2,8 +2,8 @@ - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_login_btn_bg.xml b/app/src/main/res/drawable/selector_login_btn_bg.xml new file mode 100644 index 0000000000..408a1e876d --- /dev/null +++ b/app/src/main/res/drawable/selector_login_btn_bg.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_verified_confirm.xml b/app/src/main/res/layout/dialog_verified_confirm.xml new file mode 100644 index 0000000000..7ba44fd37d --- /dev/null +++ b/app/src/main/res/layout/dialog_verified_confirm.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml index e399c9696f..42cc660ddb 100644 --- a/app/src/main/res/layout/fragment_login.xml +++ b/app/src/main/res/layout/fragment_login.xml @@ -6,9 +6,10 @@ + android:layout_height="match_parent" + android:layout_marginTop="50dp"> - + android:textSize="16sp" /> @@ -43,41 +46,52 @@ android:background="@null" android:drawableLeft="@drawable/login_password_unfocused" android:drawableBottom="@drawable/et_line_login" - android:drawablePadding="12dp" + android:drawablePadding="8dp" android:hint="@string/input_captcha_hint" android:inputType="number" android:maxLength="8" android:paddingTop="6dp" android:paddingBottom="10dp" - android:textColorHint="@color/hint" + android:textColor="@color/text_333333" + android:textColorHint="@color/text_cccccc" android:textCursorDrawable="@drawable/cursor_color" - android:textSize="15sp" /> + android:textSize="16sp" /> + android:textColor="@color/text_1383EB" + android:textSize="14sp" /> + + @@ -140,15 +154,16 @@ + android:layout_marginBottom="40dp"> + android:background="@color/text_eeeeee" /> + android:background="@color/text_eeeeee" /> + android:layout_height="wrap_content" + android:layout_marginBottom="60dp"> @@ -210,7 +229,9 @@ @@ -231,19 +252,12 @@ - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_login_olduser.xml b/app/src/main/res/layout/fragment_login_olduser.xml index ed339e69b1..aa55bcb733 100644 --- a/app/src/main/res/layout/fragment_login_olduser.xml +++ b/app/src/main/res/layout/fragment_login_olduser.xml @@ -71,7 +71,7 @@ android:layout_height = "45dp" android:layout_below = "@+id/login_pass_rl" android:layout_marginTop = "42dp" - android:background = "@drawable/login_btn_bg" + android:background = "@drawable/login_btn_bg_enable" android:gravity = "center" android:text = "@string/login" android:textColor = "@android:color/white" diff --git a/app/src/main/res/layout/fragment_personal.xml b/app/src/main/res/layout/fragment_personal.xml index b19fecb634..9a2f43dd8b 100644 --- a/app/src/main/res/layout/fragment_personal.xml +++ b/app/src/main/res/layout/fragment_personal.xml @@ -67,6 +67,7 @@ android:text="立即登录" android:textColor="@color/white" android:textSize="18sp" + android:textStyle="bold" app:layout_constraintBottom_toBottomOf="@+id/personal_user_icon_container" app:layout_constraintStart_toEndOf="@+id/personal_user_icon_container" app:layout_constraintTop_toTopOf="@+id/personal_user_icon_container" /> @@ -108,9 +109,11 @@ android:id="@+id/personal_home" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="个人主页 >" + android:text="个人主页" android:textColor="@color/white" android:textSize="12sp" + android:drawablePadding="4dp" + android:drawableRight="@drawable/personal_home_arrow" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/layout/fragment_userinfo_edit.xml b/app/src/main/res/layout/fragment_userinfo_edit.xml index 3ae65a7ddb..4845f6e94a 100644 --- a/app/src/main/res/layout/fragment_userinfo_edit.xml +++ b/app/src/main/res/layout/fragment_userinfo_edit.xml @@ -5,21 +5,6 @@ android:layout_height="match_parent" android:orientation="vertical"> - - - + + + + + + android:text="真实姓名" + android:textColor="@color/text_333333" /> + android:textSize="14sp" /> - + android:text="身份证号" + android:textColor="@color/text_333333" /> + android:textSize="14sp" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_my_game_rating.xml b/app/src/main/res/layout/item_my_game_rating.xml index 87b502b046..bba0e15b53 100644 --- a/app/src/main/res/layout/item_my_game_rating.xml +++ b/app/src/main/res/layout/item_my_game_rating.xml @@ -1,131 +1,147 @@ - - - - - - - - - - - - - - - - - - - - - + android:background="@color/white"> - + - + + + + + + + + + + + + + + + + + - + android:background="@color/white"> + + + + + + + + diff --git a/app/src/main/res/layout/item_personal_fun_group.xml b/app/src/main/res/layout/item_personal_fun_group.xml index 0bf27cd89b..396f03ff96 100644 --- a/app/src/main/res/layout/item_personal_fun_group.xml +++ b/app/src/main/res/layout/item_personal_fun_group.xml @@ -5,10 +5,7 @@ android:layout_height="wrap_content" android:background="@drawable/personal_card_bg" android:orientation="vertical" - android:paddingLeft="20dp" - android:paddingRight="20dp" - android:paddingTop="16dp" - android:paddingBottom="16dp"> + android:padding="16dp"> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/personal_new_version" + android:layout_alignLeft="@+id/iv_addon_icon" + android:layout_marginLeft="8dp" + android:visibility="gone"/> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_menu_my_ask_draft.xml b/app/src/main/res/layout/layout_menu_my_ask_draft.xml new file mode 100644 index 0000000000..a2a795407e --- /dev/null +++ b/app/src/main/res/layout/layout_menu_my_ask_draft.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/app/src/main/res/menu/menu_my_ask_wrapper.xml b/app/src/main/res/menu/menu_my_ask_wrapper.xml index a2da279e66..1b61ab575c 100644 --- a/app/src/main/res/menu/menu_my_ask_wrapper.xml +++ b/app/src/main/res/menu/menu_my_ask_wrapper.xml @@ -3,8 +3,8 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> #FFDAA2 #FF9B06 #D8D8D8 + #FAFAFA \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 655ba588e1..66315d1c2d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -268,7 +268,7 @@ QQ 微信 新浪微博 - 还可以选择以下方式登录 + 第三方账号快捷登录 版本更新 个人中心 一键删除(%1$d个,释放%2$s)