feat:完成登录、注册UI改变(删除快捷登录页面)

This commit is contained in:
max
2024-02-28 10:56:39 +08:00
parent 4c01a2eb2c
commit 1ffd596ab2
28 changed files with 197 additions and 477 deletions

View File

@@ -739,6 +739,7 @@
android:theme="@style/dialog_web_view_activity" />
<activity
android:name=".ui.login.LoginPasswordActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait" /> <!-- 社区 -->
<activity
android:name=".ui.setting.ResetPasswordActivity"

View File

@@ -23,6 +23,7 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.ViewModelProvider;
import com.chwl.app.ui.login.LoginPasswordActivity;
import com.chwl.core.settings.SettingsModel;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.log.LogUtil;
@@ -61,7 +62,6 @@ import com.chwl.app.service.DaemonService;
import com.chwl.app.ui.im.ImInitHelper;
import com.chwl.app.ui.im.avtivity.NimP2PMessageActivity;
import com.chwl.app.ui.login.BindPhoneActivity;
import com.chwl.app.ui.login.LoginActivity;
import com.chwl.app.ui.login.fragment.AddUserInfoFragment;
import com.chwl.app.ui.patriarch.help.LimitEnterRoomHelper;
import com.chwl.app.ui.patriarch.help.PmDialogShowMrg;
@@ -511,14 +511,14 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
public void onLogout() {
Logger.e(TAG, "onLogout Success ~~~~");
getMvpPresenter().exitRoom();
LoginActivity.start(MainActivity.this);
LoginPasswordActivity.start(MainActivity.this);
PmDialogShowMrg.get().onLogout();
finish();
}
public void onNeedLogin() {
NimMiddleActivity.openCommunity = false;
LoginActivity.start(MainActivity.this);
LoginPasswordActivity.start(MainActivity.this);
}
@Subscribe(threadMode = ThreadMode.MAIN)

View File

@@ -12,6 +12,7 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import com.bumptech.glide.request.RequestOptions;
import com.chwl.app.ui.login.LoginPasswordActivity;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.chwl.app.MainActivity;
@@ -19,7 +20,6 @@ import com.chwl.app.NimMiddleActivity;
import com.chwl.app.R;
import com.chwl.app.databinding.ActivitySplashBinding;
import com.chwl.app.other.SplashBitmapTransformation;
import com.chwl.app.ui.login.LoginActivity;
import com.chwl.core.DemoCache;
import com.chwl.core.auth.entity.AccountInfo;
import com.chwl.core.channel_page.model.ChannelPageModel;
@@ -56,7 +56,7 @@ public class SplashActivity extends AppCompatActivity implements View.OnClickLis
if (!isTaskRoot()) {
AccountInfo currentAccountInfo = DemoCache.readCurrentAccountInfo();
if (currentAccountInfo == null || TextUtils.isEmpty(currentAccountInfo.getAccess_token())) {
LoginActivity.start(this);
LoginPasswordActivity.start(this);
} else {
MainActivity.start(SplashActivity.this);
}
@@ -133,7 +133,7 @@ public class SplashActivity extends AppCompatActivity implements View.OnClickLis
AccountInfo currentAccountInfo = DemoCache.readCurrentAccountInfo();
if (currentAccountInfo == null || TextUtils.isEmpty(currentAccountInfo.getAccess_token())) {
NimMiddleActivity.openCommunity = false;
LoginActivity.start(this);
LoginPasswordActivity.start(this);
finish();
} else {
if (intent != null) {

View File

@@ -1,295 +0,0 @@
package com.chwl.app.ui.login;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ForegroundColorSpan;
import android.view.KeyEvent;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import com.example.module_base.support.google.IGoogleService;
import com.netease.nim.uikit.StatusBarUtil;
import com.trello.rxlifecycle3.android.ActivityEvent;
import com.chwl.app.MainActivity;
import com.chwl.app.NimMiddleActivity;
import com.chwl.app.R;
import com.chwl.app.application.IReportConstants;
import com.chwl.app.application.ReportManager;
import com.chwl.app.base.BaseActivity;
import com.chwl.app.common.widget.OriginalDrawStatusClickSpan;
import com.chwl.app.ui.login.helper.LogoutHelper;
import com.chwl.app.ui.webview.CommonWebViewActivity;
import com.chwl.core.Constants;
import com.chwl.core.DemoCache;
import com.chwl.core.UriProvider;
import com.chwl.core.auth.AuthModel;
import com.chwl.core.auth.event.LoginEvent;
import com.chwl.core.auth.event.LoginReportEvent;
import com.chwl.library.common.SpConstants;
import com.chwl.library.common.util.SPUtils;
import com.chwl.library.utils.AppMetaDataUtil;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.HashMap;
import io.reactivex.SingleObserver;
import io.reactivex.disposables.Disposable;
public class LoginActivity extends BaseActivity implements View.OnClickListener {
private static final String NEED_CHECKED_PROTOCOL = "need_checked_protocol";
protected CheckBox tvProtocol;
private TextView tvProtocolHint;
public static void start(Context context) {
Intent intent = new Intent(context, LoginActivity.class);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
EventBus.getDefault().register(this);
onFindViews();
onSetListener();
setProtocol();
//登录页展示时
HashMap<String, Object> map = new HashMap<>(2);
map.put(IReportConstants.MODULE, IReportConstants.PEKO_LOGIN);
ReportManager.get().reportEvent(IReportConstants.LOGIN_SHOW, map);
}
private void onFindViews() {
tvProtocol = findViewById(R.id.tv_protocol);
tvProtocolHint = findViewById(R.id.tv_protocol_hint);
findViewById(R.id.cs_google).setVisibility(View.VISIBLE);
String loginType = SPUtils.getString(SpConstants.LOGIN_TYPE, "");
switch (loginType) {
case SpConstants.GOOGLE:
findViewById(R.id.tv_google_last_login).setVisibility(View.VISIBLE);
break;
}
}
private void onSetListener() {
findViewById(R.id.cs_google).setOnClickListener(this);
findViewById(R.id.layout_other).setOnClickListener(this);
}
protected void setProtocol() {
String privacyAgreementTip = context.getString(R.string.tip_privacy_agreement);
String userAgreementTip = context.getString(R.string.tip_user_agreement);
String privacyAgreementDescTip = context.getString(R.string.text_login_protocol, privacyAgreementTip, userAgreementTip);
SpannableString ss = new SpannableString(privacyAgreementDescTip);
int privacyAgreementTipIndex = privacyAgreementDescTip.indexOf(privacyAgreementTip);
int userAgreementTipIndex = privacyAgreementDescTip.indexOf(userAgreementTip);
ss.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.color_1E1E1F)), privacyAgreementTipIndex, privacyAgreementTipIndex + privacyAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(new OriginalDrawStatusClickSpan(ContextCompat.getColor(context, R.color.color_1E1E1F)) {
@Override
public void onClick(@NonNull View widget) {
//隐私政策点击
HashMap<String, Object> map = new HashMap<>(5);
map.put(IReportConstants.CLICK_TYPE, IReportConstants.TWO);
map.put(IReportConstants.MODULE, IReportConstants.PEKO_LOGIN);
map.put(IReportConstants.PAGE, IReportConstants.TWO);
ReportManager.get().reportEvent(IReportConstants.AGREEMENT_CLICK, map);
if (widget instanceof TextView)
((TextView) widget).setHighlightColor(getResources().getColor(android.R.color.transparent));
CommonWebViewActivity.start(context, UriProvider.getPrivacyAgreement());
}
}, privacyAgreementTipIndex, privacyAgreementTipIndex + privacyAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.color_1F1A4E)), userAgreementTipIndex, userAgreementTipIndex + userAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(new OriginalDrawStatusClickSpan(ContextCompat.getColor(context, R.color.color_1F1A4E)) {
@Override
public void onClick(@NonNull View widget) {
//用户协议点击
HashMap<String, Object> map = new HashMap<>(5);
map.put(IReportConstants.CLICK_TYPE, IReportConstants.ONE);
map.put(IReportConstants.MODULE, IReportConstants.PEKO_LOGIN);
map.put(IReportConstants.PAGE, IReportConstants.TWO);
ReportManager.get().reportEvent(IReportConstants.AGREEMENT_CLICK, map);
if (widget instanceof TextView)
((TextView) widget).setHighlightColor(getResources().getColor(android.R.color.transparent));
CommonWebViewActivity.start(context, UriProvider.getUserProtocolUrl());
}
}, userAgreementTipIndex, userAgreementTipIndex + privacyAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
tvProtocol.setText(ss);
tvProtocol.setHighlightColor(Color.TRANSPARENT);
tvProtocol.setMovementMethod(new LinkMovementMethod());
if (DemoCache.readBoolean(NEED_CHECKED_PROTOCOL, false)) {
tvProtocol.setChecked(true);
}
tvProtocol.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (isChecked) {
//协议点击同意
HashMap<String, Object> map = new HashMap<>(5);
map.put(IReportConstants.CLICK_TYPE, IReportConstants.THREE);
map.put(IReportConstants.MODULE, IReportConstants.PEKO_LOGIN);
map.put(IReportConstants.PAGE, IReportConstants.TWO);
ReportManager.get().reportEvent(IReportConstants.AGREEMENT_CLICK, map);
tvProtocolHint.setVisibility(View.GONE);
DemoCache.saveBoolean(NEED_CHECKED_PROTOCOL, true);
}
});
}
@Override
public void onClick(View v) {
if (!tvProtocol.isChecked()) {
tvProtocolHint.setVisibility(View.VISIBLE);
return;
}
switch (v.getId()) {
case R.id.cs_google:
reportLoginType(IReportConstants.THREE);
getDialogManager().showProgressDialog(this);
AuthModel.get().googleLogin(this)
.compose(bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(new SingleObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(String result) {
reportLoginResult(IReportConstants.THREE, IReportConstants.ONE, "");
// HashMap<String, Object> map = new HashMap<>(2);
// map.put(FirebaseAnalytics.Param.METHOD, getString(R.string.login_google));
// ReportManager.get().reportEvent(FirebaseAnalytics.Event.LOGIN, map);
// ReportManager.get().reportAdjustEvent(IReportConstants.ADJUST_LOGIN);
getDialogManager().dismissDialog();
SPUtils.putString(SpConstants.LOGIN_TYPE, SpConstants.GOOGLE);
}
@Override
public void onError(Throwable e) {
reportLoginResult(IReportConstants.THREE, IReportConstants.ZERO, e.getMessage());
getDialogManager().dismissDialog();
dealWithLoginError(e);
e.printStackTrace();
}
});
break;
case R.id.layout_other:
reportLoginType(IReportConstants.FIVE);
LoginPasswordActivity.start(LoginActivity.this);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
AuthModel.get().getGoogleLoginService().onActivityResult(requestCode, resultCode, data);
}
/**
* 上报登录结果
*
* @param loginType
* @param result
* @param failDetail
*/
private void reportLoginResult(int loginType, int result, String failDetail) {
HashMap<String, Object> map = new HashMap<>(6);
map.put(IReportConstants.LOGIN_TYPE, loginType);
map.put(IReportConstants.MODULE, IReportConstants.PEKO_LOGIN);
map.put(IReportConstants.RESULT, result);
if (result == IReportConstants.ZERO) {
map.put(IReportConstants.FAIL_DETAIL, failDetail);
}
ReportManager.get().reportEvent(IReportConstants.LOGIN_RESULT, map);
}
/**
* 上报登录方式
*
* @param loginType 登录方式
*/
private void reportLoginType(int loginType) {
HashMap<String, Object> map = new HashMap<>(3);
map.put(IReportConstants.CLICK_TYPE, loginType);
map.put(IReportConstants.MODULE, IReportConstants.PEKO_LOGIN);
ReportManager.get().reportEvent(IReportConstants.LOGIN_CLICK, map);
}
@Override
protected void setStatusBar() {
super.setStatusBar();
StatusBarUtil.transparencyBar(this);
StatusBarUtil.StatusBarLightMode(this);
}
@Override
protected boolean needSteepStateBar() {
return true;
}
public void dealWithLoginError(Throwable e) {
LogoutHelper.dealWithLoginError(this, e);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onDestroy() {
super.onDestroy();
getDialogManager().dismissDialog();
EventBus.getDefault().unregister(this);
}
/**
* 注册成功后发送过来的事件
*/
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLoginEvent(LoginEvent event) {
getDialogManager().dismissDialog();
NimMiddleActivity.delayOpenCommunity = false;
MainActivity.start(this);
finish();
}
/**
* 三方登录上报事件
*/
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLoginReportEvent(LoginReportEvent event) {
HashMap<String, Object> map = new HashMap<>(3);
map.put(IReportConstants.LOGIN_TYPE, event.getLoginType());
map.put(IReportConstants.MODULE, IReportConstants.PEKO_LOGIN);
ReportManager.get().reportEvent(IReportConstants.LOGIN_REQUEST, map);
}
}

View File

@@ -2,20 +2,32 @@ package com.chwl.app.ui.login;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.text.Editable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.text.method.LinkMovementMethod;
import android.text.style.ForegroundColorSpan;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.AppCompatEditText;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.core.content.ContextCompat;
import com.chwl.app.common.widget.OriginalDrawStatusClickSpan;
import com.chwl.app.ui.webview.CommonWebViewActivity;
import com.chwl.core.UriProvider;
import com.coorchice.library.SuperTextView;
import com.netease.nim.uikit.StatusBarUtil;
import com.trello.rxlifecycle3.android.ActivityEvent;
@@ -49,6 +61,7 @@ import io.reactivex.disposables.Disposable;
public class LoginPasswordActivity extends BaseActivity {
private static final String NEED_CHECKED_PROTOCOL = "need_checked_protocol";
private View btnNext;
private AppCompatTextView tvAccountLogin;
private AppCompatTextView tvCodeLogin;
@@ -66,6 +79,9 @@ public class LoginPasswordActivity extends BaseActivity {
private CountDownTimer cdt = null;
protected CheckBox tvProtocol;
private TextView tvProtocolHint;
private final TextWatcher textWatcher = new TextWatcherWrapper() {
@Override
public void afterTextChanged(Editable s) {
@@ -125,7 +141,8 @@ public class LoginPasswordActivity extends BaseActivity {
edtPhone.addTextChangedListener(textWatcher);
edtPassword.addTextChangedListener(textWatcher);
btnSmsNext = findViewById(R.id.btn_sms_next);
findViewById(R.id.iv_back).setOnClickListener(v -> finish());
tvProtocol = findViewById(R.id.tv_protocol);
tvProtocolHint = findViewById(R.id.tv_protocol_hint);
btnNext.setOnClickListener(v -> login());
findViewById(R.id.tv_forget_password).setOnClickListener(v ->
ResetPasswordActivity.start(context, ResetPasswordActivity.FROM_NOT_LOGIN)
@@ -147,9 +164,17 @@ public class LoginPasswordActivity extends BaseActivity {
llSmsLogin.setVisibility(View.VISIBLE);
});
tvAreaCode.setOnClickListener(v -> {
if (!tvProtocol.isChecked()) {
tvProtocolHint.setVisibility(View.VISIBLE);
return;
}
AreaCodeActivity.startForResult(this, 100);
});
tvRegain.setOnClickListener(v -> {
if (!tvProtocol.isChecked()) {
tvProtocolHint.setVisibility(View.VISIBLE);
return;
}
if (TextUtils.isEmpty(etAccount.getText().toString().trim())) {
toast(getString(R.string.ui_setting_resetpasswordactivity_04));
return;
@@ -190,6 +215,10 @@ public class LoginPasswordActivity extends BaseActivity {
});
});
btnSmsNext.setOnClickListener(v -> {
if (!tvProtocol.isChecked()) {
tvProtocolHint.setVisibility(View.VISIBLE);
return;
}
//发起登录
HashMap<String, Object> map = new HashMap<>(3);
map.put(IReportConstants.LOGIN_TYPE, IReportConstants.FOUR);
@@ -241,6 +270,7 @@ public class LoginPasswordActivity extends BaseActivity {
}
});
});
setProtocol();
}
private void startCounter() {
@@ -311,6 +341,10 @@ public class LoginPasswordActivity extends BaseActivity {
}
private void login() {
if (!tvProtocol.isChecked()) {
tvProtocolHint.setVisibility(View.VISIBLE);
return;
}
getDialogManager().showProgressDialog(this, getString(R.string.login_is_logining));
AuthModel.get().login(
"",
@@ -383,4 +417,79 @@ public class LoginPasswordActivity extends BaseActivity {
MainActivity.start(LoginPasswordActivity.this);
finish();
}
protected void setProtocol() {
String privacyAgreementTip = context.getString(R.string.tip_privacy_agreement);
String userAgreementTip = context.getString(R.string.tip_user_agreement);
String privacyAgreementDescTip = context.getString(R.string.text_login_protocol, privacyAgreementTip, userAgreementTip);
SpannableString ss = new SpannableString(privacyAgreementDescTip);
int privacyAgreementTipIndex = privacyAgreementDescTip.indexOf(privacyAgreementTip);
int userAgreementTipIndex = privacyAgreementDescTip.indexOf(userAgreementTip);
ss.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.color_1E1E1F)), privacyAgreementTipIndex, privacyAgreementTipIndex + privacyAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(new OriginalDrawStatusClickSpan(ContextCompat.getColor(context, R.color.color_1E1E1F)) {
@Override
public void onClick(@NonNull View widget) {
//隐私政策点击
HashMap<String, Object> map = new HashMap<>(5);
map.put(IReportConstants.CLICK_TYPE, IReportConstants.TWO);
map.put(IReportConstants.MODULE, IReportConstants.PEKO_LOGIN);
map.put(IReportConstants.PAGE, IReportConstants.TWO);
ReportManager.get().reportEvent(IReportConstants.AGREEMENT_CLICK, map);
if (widget instanceof TextView)
((TextView) widget).setHighlightColor(getResources().getColor(android.R.color.transparent));
CommonWebViewActivity.start(context, UriProvider.getPrivacyAgreement());
}
}, privacyAgreementTipIndex, privacyAgreementTipIndex + privacyAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.color_1F1A4E)), userAgreementTipIndex, userAgreementTipIndex + userAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(new OriginalDrawStatusClickSpan(ContextCompat.getColor(context, R.color.color_1F1A4E)) {
@Override
public void onClick(@NonNull View widget) {
//用户协议点击
HashMap<String, Object> map = new HashMap<>(5);
map.put(IReportConstants.CLICK_TYPE, IReportConstants.ONE);
map.put(IReportConstants.MODULE, IReportConstants.PEKO_LOGIN);
map.put(IReportConstants.PAGE, IReportConstants.TWO);
ReportManager.get().reportEvent(IReportConstants.AGREEMENT_CLICK, map);
if (widget instanceof TextView)
((TextView) widget).setHighlightColor(getResources().getColor(android.R.color.transparent));
CommonWebViewActivity.start(context, UriProvider.getUserProtocolUrl());
}
}, userAgreementTipIndex, userAgreementTipIndex + privacyAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
tvProtocol.setText(ss);
tvProtocol.setHighlightColor(Color.TRANSPARENT);
tvProtocol.setMovementMethod(new LinkMovementMethod());
if (DemoCache.readBoolean(NEED_CHECKED_PROTOCOL, false)) {
tvProtocol.setChecked(true);
}
tvProtocol.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (isChecked) {
//协议点击同意
HashMap<String, Object> map = new HashMap<>(5);
map.put(IReportConstants.CLICK_TYPE, IReportConstants.THREE);
map.put(IReportConstants.MODULE, IReportConstants.PEKO_LOGIN);
map.put(IReportConstants.PAGE, IReportConstants.TWO);
ReportManager.get().reportEvent(IReportConstants.AGREEMENT_CLICK, map);
tvProtocolHint.setVisibility(View.GONE);
DemoCache.saveBoolean(NEED_CHECKED_PROTOCOL, true);
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
}

View File

@@ -5,6 +5,7 @@ import android.os.Bundle;
import android.text.InputFilter;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioButton;
@@ -13,6 +14,7 @@ import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatTextView;
import com.google.android.material.textfield.TextInputEditText;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.sleepbot.datetimepicker.time.RadialPickerLayout;
import com.sleepbot.datetimepicker.time.TimePickerDialog;
import com.trello.rxlifecycle3.android.FragmentEvent;
@@ -73,6 +75,12 @@ public class AddUserInfoFragment extends BaseFragment
@Override
public void initiate() {
View titleBar = mView.findViewById(R.id.tv_title);
ViewGroup.LayoutParams layoutParams = titleBar.getLayoutParams();
if (layoutParams instanceof ViewGroup.MarginLayoutParams) {
((ViewGroup.MarginLayoutParams) layoutParams).setMargins(0, ScreenUtil.getStatusBarHeight(getContext()), 0, 0);
titleBar.setLayoutParams(layoutParams);
}
gender = -1;
okBtn.setOnClickListener(this);
tvRandomNick.setOnClickListener(this);

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

View File

@@ -4,9 +4,9 @@
android:viewportWidth="20"
android:viewportHeight="20">
<path
android:pathData="M7.585,10.663L7.456,10.687L1.623,12.127L1.579,12.148L1.494,12.173L1.409,12.212C1.336,12.247 1.284,12.277 1.244,12.307C1.185,12.353 1.13,12.404 1.081,12.457C1.047,12.496 1.025,12.534 1.012,12.575C1,12.613 0.996,12.67 1.005,12.745C1.012,12.799 1.028,12.856 1.053,12.914L1.097,13.001L4.403,18.231L4.543,18.378L4.628,18.443L4.647,18.453L4.674,18.462C4.802,18.5 4.852,18.505 4.939,18.496C5.031,18.487 5.161,18.446 5.205,18.417C5.32,18.338 5.368,18.297 5.416,18.224L5.453,18.161L6.874,14.839L6.219,16.291L7.006,16.534C8.079,16.854 9.2,17.026 10.37,17.053L10.81,17.056L11.256,17.045C14.68,16.906 17.07,15.419 18.479,12.56L18.63,12.239L18.772,11.907L18.797,11.844L18.768,11.876C18.621,12.025 18.466,12.169 18.305,12.307C17.895,12.656 17.354,13.002 16.681,13.345C15.995,13.696 15.252,13.948 14.459,14.099C13.662,14.252 12.706,14.276 11.59,14.174C10.614,14.085 9.591,13.874 8.516,13.539L8.052,13.388L7.642,13.249L8.488,11.337L8.497,11.305L8.524,11.24L8.543,11.119C8.552,11.059 8.552,11.013 8.546,10.982C8.529,10.9 8.514,10.852 8.487,10.801C8.473,10.776 8.411,10.723 8.381,10.711L8.281,10.678L8.093,10.638C7.989,10.619 7.797,10.628 7.585,10.663ZM15.242,1.503C15.192,1.497 15.131,1.5 15.061,1.514C14.982,1.53 14.935,1.549 14.895,1.579C14.844,1.619 14.796,1.668 14.754,1.721L14.697,1.802L13.835,3.671L13.492,3.541C12.235,3.063 10.835,2.813 9.285,2.787C5.841,2.723 3.361,3.997 1.79,6.619C1.667,6.829 1.551,7.048 1.44,7.274L1.279,7.62L1.199,7.806L1.393,7.621L1.693,7.36C2.105,7.017 2.657,6.683 3.354,6.349C4.055,6.014 4.803,5.783 5.59,5.658C6.378,5.533 7.333,5.533 8.453,5.656C9.431,5.762 10.451,5.994 11.521,6.352L11.983,6.514L12.392,6.662L12.204,7.056L11.436,8.653L11.409,8.762L11.407,8.826L11.41,8.878C11.417,8.962 11.422,8.975 11.469,9.05C11.505,9.109 11.601,9.183 11.713,9.214C11.863,9.255 12.067,9.267 12.306,9.249L12.491,9.23L18.505,7.903C18.468,7.903 18.442,7.907 18.423,7.913L18.401,7.921L18.577,7.837C18.62,7.818 18.661,7.796 18.705,7.77L18.774,7.728C18.812,7.705 18.862,7.663 18.926,7.598C18.958,7.565 18.977,7.534 18.988,7.501C19,7.462 19.004,7.405 18.994,7.32C18.988,7.261 18.973,7.196 18.954,7.134L18.921,7.047L15.776,1.82L15.669,1.692C15.622,1.645 15.576,1.61 15.532,1.584L15.481,1.559L15.386,1.528L15.31,1.513L15.242,1.503Z"
android:pathData="M1.911,5.733C1.911,5.733 3.551,3.204 6.143,1.847C8.736,0.49 11.929,0.88 14.022,2.196C16.118,3.511 16.823,4.622 16.823,4.622L18.628,3.594C18.628,3.594 19,3.409 19,3.841L19,10.299C19,10.299 19,10.874 18.564,10.668C18.199,10.495 14.235,8.241 12.987,7.53C12.303,7.224 12.904,6.975 12.904,6.975L14.646,5.979C14.646,5.979 13.652,4.735 12.198,4.076C10.643,3.265 9.186,3.169 7.403,3.843C6.238,4.282 4.868,5.408 3.882,7.069L1.911,5.733L1.911,5.733ZM18.089,14.267C18.089,14.267 16.449,16.796 13.857,18.154C11.266,19.511 8.071,19.12 5.978,17.804C3.882,16.488 3.177,15.377 3.177,15.377L1.372,16.405C1.372,16.405 1,16.59 1,16.159L1,9.701C1,9.701 1,9.126 1.436,9.332C1.801,9.504 5.765,11.758 7.013,12.47C7.697,12.775 7.096,13.025 7.096,13.025L5.354,14.02C5.354,14.02 6.348,15.265 7.802,15.924C9.357,16.734 10.814,16.831 12.597,16.157C13.762,15.717 15.132,14.592 16.118,12.93L18.089,14.267L18.089,14.267Z"
android:strokeWidth="1"
android:fillColor="#1E1E1F"
android:fillColor="#A3A5AB"
android:fillType="nonZero"
android:strokeColor="#00000000"/>
</vector>

View File

@@ -1,141 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_white">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/login_bg" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_140"
android:src="@drawable/login_ic_logo"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_logo_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:src="@drawable/login_ic_logo_name"
app:layout_constraintEnd_toEndOf="@id/iv_logo"
app:layout_constraintStart_toStartOf="@id/iv_logo"
app:layout_constraintTop_toBottomOf="@id/iv_logo" />
<LinearLayout
android:id="@+id/cs_google"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_54"
android:layout_marginHorizontal="@dimen/dp_32"
android:layout_marginBottom="@dimen/dp_24"
android:background="@drawable/base_shape_1e1e1f_8dp"
android:gravity="center"
app:layout_constraintBottom_toTopOf="@id/layout_other">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/login_ic_google" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_google"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:gravity="center"
android:text="@string/login_google"
android:textColor="@color/base_color_theme"
android:textSize="@dimen/dp_16" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_google_last_login"
android:layout_width="wrap_content"
android:layout_height="23dp"
android:layout_marginTop="-10dp"
android:layout_marginEnd="-10dp"
android:background="@drawable/base_shape_ccffffff_100dp"
android:gravity="center"
android:paddingHorizontal="11dp"
android:text="@string/last_login"
android:textColor="#1E1E1F"
android:textSize="@dimen/sp_12"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@+id/cs_google"
app:layout_constraintTop_toTopOf="@+id/cs_google"
tools:visibility="visible" />
<LinearLayout
android:id="@+id/layout_other"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_54"
android:layout_marginHorizontal="@dimen/dp_32"
android:layout_marginBottom="@dimen/dp_92"
android:background="@drawable/base_shape_theme_8dp"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintBottom_toTopOf="@id/tv_protocol"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_others"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="@dimen/dp_4"
android:gravity="center"
android:includeFontPadding="false"
android:text="@string/login_select_other_login_type"
android:textColor="#1E1E1F"
android:textSize="@dimen/dp_16"
app:drawableEndCompat="@drawable/base_arrow_right_1e1e1f" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_protocol_hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_login_protocol_hint"
android:gravity="center"
android:paddingHorizontal="4dp"
android:paddingBottom="6dp"
android:text="@string/login_agree_with_the_protocol"
android:textColor="@color/white"
android:textSize="@dimen/sp_10"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@+id/tv_protocol"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:visibility="visible" />
<CheckBox
android:id="@+id/tv_protocol"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="@dimen/dp_32"
android:button="@null"
android:checked="true"
android:drawableStart="@drawable/selector_login_radio_btn"
android:drawablePadding="@dimen/dp_5"
android:text="@string/text_login_protocol"
android:textColor="#8E9094"
android:textSize="@dimen/dp_12"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:ignore="SpUsage" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -6,21 +6,29 @@
android:layout_height="match_parent"
android:background="#F7F7F7">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_back"
<ImageView
android:id="@+id/iv_top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/login_bg_top"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_logo"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_50"
android:src="@drawable/login_left"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
android:layout_marginTop="88dp"
android:src="@drawable/ic_logo_text"
app:layout_constraintTop_toTopOf="@id/iv_top" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_account_login"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_42"
android:layout_marginTop="@dimen/dp_21"
android:gravity="center_horizontal"
android:paddingVertical="10dp"
android:text="@string/account_login"
@@ -30,7 +38,7 @@
app:layout_constraintEnd_toStartOf="@+id/tv_code_login"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_back" />
app:layout_constraintTop_toBottomOf="@id/iv_logo" />
<ImageView
android:id="@+id/iv_account_indicator"
@@ -275,4 +283,41 @@
</LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_protocol_hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_login_protocol_hint"
android:gravity="center"
android:paddingHorizontal="4dp"
android:paddingBottom="6dp"
android:text="@string/login_agree_with_the_protocol"
android:textColor="@color/white"
android:textSize="@dimen/sp_10"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@+id/tv_protocol"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:visibility="visible" />
<CheckBox
android:id="@+id/tv_protocol"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="@dimen/dp_32"
android:button="@null"
android:checked="true"
android:drawableStart="@drawable/selector_login_radio_btn"
android:drawablePadding="@dimen/dp_5"
android:text="@string/text_login_protocol"
android:textColor="#8E9094"
android:textSize="@dimen/dp_12"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:ignore="SpUsage" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -5,10 +5,17 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F7F7F7"
android:fitsSystemWindows="true"
android:gravity="center_horizontal"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/login_bg_top"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
@@ -77,7 +84,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginStart="15dp"
android:background="@drawable/selector_radiobutton_gender_female"
android:button="@null" />