diff --git a/app/build.gradle b/app/build.gradle index 7ab8e7d60..dd7f49322 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,7 +10,7 @@ android { compileSdkVersion 32 defaultConfig { - applicationId "com.mango.yinyou" + applicationId "com.vele.peko" minSdkVersion 21 targetSdkVersion 32 versionCode Integer.valueOf(version_code) @@ -55,26 +55,22 @@ android { enabled = true } - packagingOptions { - exclude 'lib/armeabi-v7a/libagora-crypto.so' - } - signingConfigs { v2 { - storeFile file('../yinyou.jks') - storePassword "yinyou2021" - keyAlias "yinyou" - keyPassword "yinyou2021" + storeFile file('../peko.jks') + storePassword "peko2022" + keyAlias "peko" + keyPassword "peko2022" v2SigningEnabled true v1SigningEnabled true } v1 { - storeFile file('../yinyou.jks') - storePassword "yinyou2021" - keyAlias "yinyou" - keyPassword "yinyou2021" + storeFile file('../peko.jks') + storePassword "peko2022" + keyAlias "peko" + keyPassword "peko2022" v2SigningEnabled false v1SigningEnabled true } @@ -98,10 +94,8 @@ android { 'src/module_bank_card/java', 'src/module_super_admin/java', 'src/module_treasure_box/java', - 'src/module_community/java', 'src/module_album/java', - 'src/module_quick_pass/java' ] @@ -120,10 +114,8 @@ android { 'src/module_bank_card/res', 'src/module_super_admin/res', 'src/module_treasure_box/res', - 'src/module_community/res', 'src/module_album/res', - 'src/module_quick_pass/res' ] @@ -198,7 +190,6 @@ dependencies { api "com.ms-square:expandableTextView:0.1.4" api "com.jakewharton:butterknife:10.2.3" annotationProcessor "com.jakewharton:butterknife-compiler:10.2.3" - implementation "com.llew.huawei:verifier:1.0.3" annotationProcessor 'androidx.annotation:annotation:1.4.0' implementation 'io.github.h07000223:flycoTabLayout:3.0.0' @@ -239,13 +230,6 @@ dependencies { implementation 'com.github.mmin18:realtimeblurview:1.2.1' } -repositories { - flatDir { - dirs 'aliyun-libs','com.huawei.agconnect' - } - mavenCentral() -} - channel { //多渠道包的输出目录,默认为new File(project.buildDir,"channel") outputDir = new File(project.buildDir, "channelapk") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fa2780417..6b256d58d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -197,26 +197,7 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -261,31 +264,14 @@ + android:host="main" + android:scheme="pekoapp" /> - - - - - - - - - - - - - diff --git a/app/src/main/java/com/vele/peko/lineapi/LineAuthenticationCallbackActivity.java b/app/src/main/java/com/vele/peko/lineapi/LineAuthenticationCallbackActivity.java new file mode 100644 index 000000000..3dc98b30f --- /dev/null +++ b/app/src/main/java/com/vele/peko/lineapi/LineAuthenticationCallbackActivity.java @@ -0,0 +1,6 @@ +package com.vele.peko.lineapi; + +import cn.sharesdk.line.LineHandlerActivity; + +public class LineAuthenticationCallbackActivity extends LineHandlerActivity { +} diff --git a/app/src/main/java/com/xuanyi/accompany/wxapi/WXEntryActivity.java b/app/src/main/java/com/xuanyi/accompany/wxapi/WXEntryActivity.java deleted file mode 100644 index e9154fb12..000000000 --- a/app/src/main/java/com/xuanyi/accompany/wxapi/WXEntryActivity.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.xuanyi.accompany.wxapi; - -import android.content.Intent; - - -import cn.sharesdk.wechat.utils.WXMediaMessage; -import cn.sharesdk.wechat.utils.WechatHandlerActivity; - -/** - * create by lvzebiao @2019/11/8 - */ -public class WXEntryActivity extends WechatHandlerActivity { - - @Override - public void onShowMessageFromWXReq(WXMediaMessage msg) { - super.onShowMessageFromWXReq(msg); - } - - @Override - public void onGetMessageFromWXReq(WXMediaMessage msg) { - super.onGetMessageFromWXReq(msg); - //从小程序返回APP - Intent iLaunchMyself = getPackageManager().getLaunchIntentForPackage(getPackageName()); - startActivity(iLaunchMyself); - } -} diff --git a/app/src/main/java/com/yizhuan/erban/MainActivity.java b/app/src/main/java/com/yizhuan/erban/MainActivity.java index a1dbe345e..6b65f0e3c 100644 --- a/app/src/main/java/com/yizhuan/erban/MainActivity.java +++ b/app/src/main/java/com/yizhuan/erban/MainActivity.java @@ -20,7 +20,6 @@ import android.view.animation.LinearInterpolator; import android.widget.LinearLayout; import android.widget.TextView; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; @@ -65,7 +64,7 @@ import com.yizhuan.erban.main.helper.NoticationsUiHelper; import com.yizhuan.erban.miniworld.activity.MiniWorldGuestPageActivity; import com.yizhuan.erban.module.Extras; import com.yizhuan.erban.module_hall.secretcode.PwdCodeMgr; -import com.yizhuan.erban.quick_pass.QuickPassLoginAct; +import com.yizhuan.erban.ui.login.LoginActivity; import com.yizhuan.erban.service.DaemonService; import com.yizhuan.erban.ui.im.ImInitHelper; import com.yizhuan.erban.ui.im.avtivity.NimP2PMessageActivity; @@ -98,7 +97,6 @@ import com.yizhuan.xchat_android_core.home.model.HomeModel; import com.yizhuan.xchat_android_core.initial.InitialModel; import com.yizhuan.xchat_android_core.linked.LinkedModel; import com.yizhuan.xchat_android_core.linked.bean.LinkedInfo; -import com.yizhuan.xchat_android_core.manager.AudioEngineManager; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.manager.IMBroadcastManager; import com.yizhuan.xchat_android_core.manager.IMMessageManager; @@ -501,13 +499,13 @@ public class MainActivity extends BaseMvpActivity public void onLogout() { Logger.e(TAG, "onLogout Success ~~~~"); getMvpPresenter().exitRoom(); - QuickPassLoginAct.start(MainActivity.this); + LoginActivity.start(MainActivity.this); PmDialogShowMrg.get().onLogout(); } public void onNeedLogin() { NimMiddleActivity.openCommunity = false; - QuickPassLoginAct.start(MainActivity.this); + LoginActivity.start(MainActivity.this); } diff --git a/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java b/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java index 6b9cb8e5b..a9096b40c 100644 --- a/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java +++ b/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java @@ -6,12 +6,16 @@ import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.Application; import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.content.pm.Signature; import android.graphics.Color; import android.net.http.HttpResponseCache; import android.os.Build; import android.os.Environment; import android.provider.Settings; import android.text.TextUtils; +import android.util.Base64; import android.util.Log; import androidx.multidex.MultiDex; @@ -19,7 +23,6 @@ import androidx.multidex.MultiDex; import com.bumptech.glide.request.target.ViewTarget; import com.coorchice.library.utils.LogUtils; import com.hjq.toast.ToastUtils; -import com.llew.huawei.verifier.LoadedApkHuaWei; import com.mob.MobSDK; import com.netease.nim.uikit.api.NimUIKit; import com.netease.nim.uikit.common.util.log.LogUtil; @@ -95,6 +98,8 @@ import org.greenrobot.eventbus.EventBus; import java.io.File; import java.io.IOException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -253,7 +258,6 @@ public class XChatApplication extends Application { lifeManager = new ActivityLifeManager(); } registerActivityLifecycleCallback(lifeManager); - dealHuaWeiCrash(); initLinkedMe(); MobSDK.init(context); MobSDK.submitPolicyGrantResult(true); @@ -296,17 +300,6 @@ public class XChatApplication extends Application { } - private static void dealHuaWeiCrash() { - String brand = Build.BRAND; - String manufacturer = Build.MANUFACTURER; - if (!TextUtils.isEmpty(brand) && ( - "HUAWEI".toLowerCase().equals(brand.toLowerCase()) - || "HONOR".toLowerCase().equals(brand.toLowerCase()) - || "HUAWEI".equals(manufacturer))) { - LoadedApkHuaWei.hookHuaWeiVerifier((Application) BasicConfig.INSTANCE.getAppContext().getApplicationContext()); - } - } - @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) public static void registerActivityLifecycleCallback(Application.ActivityLifecycleCallbacks callbacks) { ((Application) BasicConfig.INSTANCE.getAppContext().getApplicationContext()).registerActivityLifecycleCallbacks(callbacks); @@ -515,6 +508,22 @@ public class XChatApplication extends Application { if (!isShowPrivacyAgreement) { initOtherSDK(); } + + facebookHashKey(); + } + + //Facebook秘钥散列获取 + private void facebookHashKey() { + try { + PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES); + for (Signature signature : info.signatures) { + MessageDigest md = MessageDigest.getInstance("SHA"); + md.update(signature.toByteArray()); + Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); + } + } catch (PackageManager.NameNotFoundException e) { + } catch (NoSuchAlgorithmException e) { + } } @Override diff --git a/app/src/main/java/com/yizhuan/erban/base/BaseLoginAct.java b/app/src/main/java/com/yizhuan/erban/base/BaseLoginAct.java deleted file mode 100644 index 9eed57ccc..000000000 --- a/app/src/main/java/com/yizhuan/erban/base/BaseLoginAct.java +++ /dev/null @@ -1,254 +0,0 @@ -package com.yizhuan.erban.base; - -import android.annotation.SuppressLint; -import android.graphics.Color; -import android.os.Bundle; -import android.text.SpannableString; -import android.text.SpannableStringBuilder; -import android.text.Spanned; -import android.text.TextUtils; -import android.text.method.LinkMovementMethod; -import android.text.style.ForegroundColorSpan; -import android.view.View; -import android.widget.CheckBox; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; - -import com.netease.nim.uikit.StatusBarUtil; -import com.yizhuan.erban.R; -import com.yizhuan.erban.common.widget.OriginalDrawStatusClickSpan; -import com.yizhuan.erban.ui.webview.CommonWebViewActivity; -import com.yizhuan.xchat_android_constants.XChatConstants; -import com.yizhuan.xchat_android_core.UriProvider; -import com.yizhuan.xchat_android_core.auth.AuthModel; -import com.yizhuan.xchat_android_core.bean.LoginTipsInfo; -import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel; -import com.yizhuan.xchat_android_core.statistic.StatisticManager; -import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol; - -import io.reactivex.SingleObserver; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.BiConsumer; - -public abstract class BaseLoginAct extends BaseActivity { - - protected CheckBox tvProtocol; - protected TextView wxLogin; - protected TextView qqLogin; - protected TextView tvLoginQuickPass; - protected TextView tvLoginTip; - protected TextView tvDesc; - - protected boolean canClick = true; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - protected void setProtocol() { - - if (tvProtocol == null) { - return; - } - - 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_2D93FF)), privacyAgreementTipIndex, privacyAgreementTipIndex + privacyAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - ss.setSpan(new OriginalDrawStatusClickSpan(ContextCompat.getColor(context, R.color.color_2D93FF)) { - @Override - public void onClick(@NonNull View widget) { - if (!canClick) { - return; - } - 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_2D93FF)), userAgreementTipIndex, userAgreementTipIndex + userAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - ss.setSpan(new OriginalDrawStatusClickSpan(ContextCompat.getColor(context, R.color.color_2D93FF)) { - @Override - public void onClick(@NonNull View widget) { - if (!canClick) { - return; - } - 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()); - } - - @SuppressLint("CheckResult") - protected void showLoginTip() { - MarketVerifyModel.get().loadLoginTip() - .compose(bindToLifecycle()) - .subscribe(new BiConsumer() { - @Override - public void accept(LoginTipsInfo loginTipsInfo, Throwable throwable) throws Exception { - if (throwable == null) { - showTvDesc(loginTipsInfo.getTips()); - - showTvLoginTip(loginTipsInfo.isShowWechat() || loginTipsInfo.isShowQq()); - showThirdPartLogin(loginTipsInfo.isShowWechat(), loginTipsInfo.isShowQq(), loginTipsInfo.isShowOneClick()); - - } else { - showTvLoginTip(false); - showThirdPartLogin(false, false, false); - } - } - }); - } - - protected void showThirdPartLogin(boolean isShowWechat, boolean isShowQq, boolean isShowOneClick) { - showwxLogin(isShowWechat); - showqqLogin(isShowQq); - showOneClickLogin(isShowOneClick); - } - - private void showTvLoginTip(boolean visible) { - if (tvLoginTip != null) { - tvLoginTip.setVisibility(visible ? View.VISIBLE : View.GONE); - } - } - - private void showwxLogin(boolean visible) { - if (wxLogin != null) { - wxLogin.setVisibility(visible ? View.VISIBLE : View.GONE); - } - } - - private void showqqLogin(boolean visible) { - if (qqLogin != null) { - qqLogin.setVisibility(visible ? View.VISIBLE : View.GONE); - } - } - - private void showOneClickLogin(boolean visible) { - if (tvLoginQuickPass != null) { - tvLoginQuickPass.setVisibility(visible ? View.VISIBLE : View.GONE); - } - } - - private void showTvDesc(String tips) { - if (tvDesc != null && !TextUtils.isEmpty(tips)) { - SpannableStringBuilder builder = new SpannableStringBuilder(tips); - int start = tips.indexOf("如何登录"); - - if (start > -1) { - builder.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.color_FE4C62)), start, start + 5, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - builder.setSpan(new OriginalDrawStatusClickSpan() { - @Override - public void onClick(@NonNull View widget) { - if (!canClick) { - return; - } - CommonWebViewActivity.start(BaseLoginAct.this, UriProvider.JAVA_WEB_URL + XChatConstants.LOGIN_ERBAN_ACCOUNT_URL); - } - }, start, start + 5, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - - } - - - tvDesc.setText(builder); - tvDesc.setHighlightColor(Color.TRANSPARENT); - tvDesc.setMovementMethod(new LinkMovementMethod()); - - } - } - - protected void wxLogin() { - // 易盾保护 token -// String yiDunToken = watchman.getToken(XChatConstants.YI_DUN_BUSINESS_ID); - // 数美天网 deviceId -// String shuMeiDeviceId = SmAntiFraud.getDeviceId(); - getDialogManager().showProgressDialog(this, "请稍后"); - AuthModel.get() - .wxLogin("", "") - .subscribe(new SingleObserver() { - @Override - public void onSubscribe(Disposable d) { - mCompositeDisposable.add(d); - } - - @Override - public void onSuccess(String s) { - getDialogManager().dismissDialog(); - setResult(RESULT_OK); - finish(); - } - - @Override - public void onError(Throwable e) { - getDialogManager().dismissDialog(); - dealWithLoginError(e); - } - }); - StatisticManager.Instance().onEvent(this, - StatisticsProtocol.EVENT_LOGIN_WX_CLICK, "点击微信登录", null); - - } - - protected void qqLogin() { - // 易盾保护 token -// String yiDunToken = watchman.getToken(XChatConstants.YI_DUN_BUSINESS_ID); - // 数美天网 deviceId -// String shuMeiDeviceId = SmAntiFraud.getDeviceId(); - String yiDunToken = ""; - String shuMeiDeviceId = ""; - - getDialogManager().showProgressDialog(this, "请稍后"); - AuthModel.get() - .qqLogin(yiDunToken, shuMeiDeviceId) - .subscribe(new SingleObserver() { - @Override - public void onSubscribe(Disposable d) { - mCompositeDisposable.add(d); - } - - @Override - public void onSuccess(String s) { - getDialogManager().dismissDialog(); - setResult(RESULT_OK); - finish(); - } - - @Override - public void onError(Throwable e) { - getDialogManager().dismissDialog(); - dealWithLoginError(e); - } - }); - StatisticManager.Instance().onEvent(this, - StatisticsProtocol.EVENT_LOGIN_QQ_CLICK, "点击qq登录", null); - - } - - public abstract void dealWithLoginError(Throwable e); - - @Override - protected boolean needSteepStateBar() { - return true; - } - - @Override - protected void setStatusBar() { - StatusBarUtil.transparencyBar(this); - StatusBarUtil.StatusBarLightMode(this); - } -} diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/BindCodeActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/BindCodeActivity.java index 385afe49d..790821da5 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/login/BindCodeActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/login/BindCodeActivity.java @@ -20,7 +20,7 @@ import androidx.core.content.ContextCompat; import com.coorchice.library.utils.LogUtils; import com.trello.rxlifecycle3.android.ActivityEvent; import com.yizhuan.erban.R; -import com.yizhuan.erban.base.BaseLoginAct; +import com.yizhuan.erban.base.BaseActivity; import com.yizhuan.erban.ui.login.ui.CodeEditText; import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.auth.exception.BanAccountException; @@ -48,7 +48,7 @@ import io.reactivex.disposables.Disposable; * @author zhouxiangfeng * @date 17/2/26 */ -public class BindCodeActivity extends BaseLoginAct { +public class BindCodeActivity extends BaseActivity { private static final String TYPE_SMS = "1"; private CodeEditText codeEt; @@ -171,44 +171,12 @@ public class BindCodeActivity extends BaseLoginAct { @Override public void onError(Throwable e) { toast(e.getMessage()); -// finish(); LogUtils.e("获取短信失败!"); } }); } - @Override - public void dealWithLoginError(Throwable e) { - if (!(e instanceof IsSuperAdminException)) { - String msg = e.getMessage(); - StringBuilder eventLabel = new StringBuilder("登录注册页-登录失败"); - if (!TextUtils.isEmpty(msg)) { - eventLabel.append(msg); - } - // 2004可以完整写入 - StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_LOGIN_FAILED_CLICK, eventLabel.toString()); - } - if (e instanceof BanAccountException) { - isSuperAdmin = false; - BanAccountException exception = (BanAccountException) e; - String text = "您的账号因" + exception.getMessage() + "被封禁\n解封时间:"; - int start = text.length(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日", Locale.getDefault()); - text += simpleDateFormat.format(new Date(exception.getDate())); - SpannableString spannableString = new SpannableString(text); - spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(BindCodeActivity.this, R.color.appColor)), - start, text.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); - getDialogManager().showOkCancelWithTitleDialog("您被封号了", - spannableString, "确定", "取消", null); - } else if (e instanceof IOException) { - toast("网络异常,请检查您的网络再试~"); - } else { - isSuperAdmin = false; - toast(e.getMessage()); - } - } - private void startCountDownTimer() { stopCountDownTimer(); timer = new CodeDownDescTimer(tvSecond, tvGetCode, 60000, 1000); diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/LoginActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/LoginActivity.java new file mode 100644 index 000000000..99fc83e60 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/ui/login/LoginActivity.java @@ -0,0 +1,247 @@ +package com.yizhuan.erban.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.netease.nim.uikit.StatusBarUtil; +import com.trello.rxlifecycle3.android.ActivityEvent; +import com.yizhuan.erban.R; +import com.yizhuan.erban.base.BaseActivity; +import com.yizhuan.erban.common.widget.OriginalDrawStatusClickSpan; +import com.yizhuan.erban.ui.login.helper.LogoutHelper; +import com.yizhuan.erban.ui.webview.CommonWebViewActivity; +import com.yizhuan.xchat_android_core.DemoCache; +import com.yizhuan.xchat_android_core.UriProvider; +import com.yizhuan.xchat_android_core.auth.AuthModel; +import com.yizhuan.xchat_android_core.auth.event.LoginEvent; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +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(); + + } + + private void onFindViews() { + tvProtocol = findViewById(R.id.tv_protocol); + tvProtocolHint = findViewById(R.id.tv_protocol_hint); + } + + private void onSetListener() { + findViewById(R.id.tv_facebook).setOnClickListener(this); + findViewById(R.id.tv_line).setOnClickListener(this); + findViewById(R.id.tv_google).setOnClickListener(this); + findViewById(R.id.tv_others).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_2D93FF)), privacyAgreementTipIndex, privacyAgreementTipIndex + privacyAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + ss.setSpan(new OriginalDrawStatusClickSpan(ContextCompat.getColor(context, R.color.color_2D93FF)) { + @Override + public void onClick(@NonNull View widget) { + 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_2D93FF)), userAgreementTipIndex, userAgreementTipIndex + userAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + ss.setSpan(new OriginalDrawStatusClickSpan(ContextCompat.getColor(context, R.color.color_2D93FF)) { + @Override + public void onClick(@NonNull View widget) { + + 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) { + 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.tv_facebook: + getDialogManager().showProgressDialog(this); + AuthModel.get().facebookLogin() + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .subscribe(new SingleObserver() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onSuccess(String s) { + getDialogManager().dismissDialog(); + finish(); + } + + @Override + public void onError(Throwable e) { + getDialogManager().dismissDialog(); + dealWithLoginError(e); + } + }); + break; + case R.id.tv_line: + getDialogManager().showProgressDialog(this); + AuthModel.get().lineLogin() + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .subscribe(new SingleObserver() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onSuccess(String s) { + getDialogManager().dismissDialog(); + finish(); + } + + @Override + public void onError(Throwable e) { + getDialogManager().dismissDialog(); + dealWithLoginError(e); + } + }); + break; + + case R.id.tv_google: + getDialogManager().showProgressDialog(this); + AuthModel.get().googleLogin() + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .subscribe(new SingleObserver() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onSuccess(String s) { + getDialogManager().dismissDialog(); + finish(); + } + + @Override + public void onError(Throwable e) { + getDialogManager().dismissDialog(); + dealWithLoginError(e); + e.printStackTrace(); + } + }); + + break; + case R.id.tv_others: + LoginPasswordActivity.start(LoginActivity.this); + break; + } + + } + + @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(); + EventBus.getDefault().unregister(this); + } + + /** + * 注册成功后发送过来的事件 + */ + @Subscribe(threadMode = ThreadMode.MAIN) + public void onLoginEvent(LoginEvent event) { + getDialogManager().dismissDialog(); + setResult(RESULT_OK); + finish(); + } + +} diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.java index ea29c6685..a743984e9 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.java @@ -21,7 +21,8 @@ import com.coorchice.library.utils.LogUtils; import com.netease.nim.uikit.StatusBarUtil; import com.trello.rxlifecycle3.android.ActivityEvent; import com.yizhuan.erban.R; -import com.yizhuan.erban.base.BaseLoginAct; +import com.yizhuan.erban.base.BaseActivity; +import com.yizhuan.erban.ui.login.helper.LogoutHelper; import com.yizhuan.erban.ui.login.ui.CodeEditText; import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.auth.event.LoginEvent; @@ -49,10 +50,8 @@ import io.reactivex.disposables.Disposable; * @author zhouxiangfeng * @date 17/2/26 */ -public class LoginCodeActivity extends BaseLoginAct { +public class LoginCodeActivity extends BaseActivity { - private static final String TAG = "LoginVertificationActivity"; - private static final String TYPE_SMS = "1"; private CodeEditText codeEt; private TextView tvGetCode, tvDesc, tvSecond; private String mPhone; @@ -182,16 +181,12 @@ public class LoginCodeActivity extends BaseLoginAct { private void login() { String smsCode = codeEt.getText().toString(); getDialogManager().showProgressDialog(this, "正在登录..."); - // 易盾保护 token 登录 -// String yiDunLoginToken = watchman.getToken(XChatConstants.YI_DUN_LOGIN_BUSINESS_ID); - // 数美天网 deviceId -// String shuMeiDeviceId = SmAntiFraud.getDeviceId(); AuthModel.get().login( - mPhone, - "", - smsCode, - "", - "") + mPhone, + "", + smsCode, + "", + "") .subscribe(new SingleObserver() { @Override public void onSubscribe(Disposable d) { @@ -217,47 +212,8 @@ public class LoginCodeActivity extends BaseLoginAct { StatisticsProtocol.EVENT_LOGIN_PHONE_CLICK, "点击手机号登录", null); } - @Override public void dealWithLoginError(Throwable e) { - if (!(e instanceof IsSuperAdminException)) { - String msg = e.getMessage(); - StringBuilder eventLabel = new StringBuilder("登录注册页-登录失败"); - if (!TextUtils.isEmpty(msg)) { - eventLabel.append(msg); - } - // 2004可以完整写入 - StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_LOGIN_FAILED_CLICK, eventLabel.toString()); - } - if (e instanceof BanAccountException) { - isSuperAdmin = false; - BanAccountException exception = (BanAccountException) e; - String text = "您的账号因" + exception.getMessage() + "被封禁\n解封时间:"; - int start = text.length(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日", Locale.getDefault()); - text += simpleDateFormat.format(new Date(exception.getDate())); - SpannableString spannableString = new SpannableString(text); - spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(LoginCodeActivity.this, R.color.appColor)), - start, text.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); - getDialogManager().showOkCancelWithTitleDialog("您被封号了", - spannableString, "确定", "取消", null); - } else if (e instanceof AccountCancelException) { - AccountCancelException exception = (AccountCancelException) e; - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日", Locale.getDefault()); - - String text = "注销时间:" + simpleDateFormat.format(new Date(exception.getCancelDate())); - int end = text.length(); - text += "\n\n请联系客服(微信:yinyoukefu01)处理哦~"; - SpannableString spannableString = new SpannableString(text); - spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(LoginCodeActivity.this, R.color.appColor)), - 0, end, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); - getDialogManager().showOkWithTitleDialog("该账号已注销", - spannableString, "我知道了", true, null); - } else if (e instanceof IOException) { - toast("网络异常,请检查您的网络再试~"); - } else { - isSuperAdmin = false; - toast(e.getMessage()); - } + LogoutHelper.dealWithLoginError(this, e); } private void startCountDownTimer() { diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/LoginPasswordActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/LoginPasswordActivity.java index 2472ab4fa..2752ad3dc 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/login/LoginPasswordActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/login/LoginPasswordActivity.java @@ -15,9 +15,8 @@ import android.widget.EditText; import androidx.core.content.ContextCompat; import com.yizhuan.erban.R; -import com.yizhuan.erban.base.BaseLoginAct; -import com.yizhuan.erban.common.widget.dialog.DialogManager; -import com.yizhuan.erban.quick_pass.QuickPassLoginAct; +import com.yizhuan.erban.base.BaseActivity; +import com.yizhuan.erban.ui.login.helper.LogoutHelper; import com.yizhuan.erban.ui.setting.ResetPasswordActivity; import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.auth.event.LoginEvent; @@ -41,7 +40,7 @@ import io.reactivex.SingleObserver; import io.reactivex.disposables.Disposable; -public class LoginPasswordActivity extends BaseLoginAct { +public class LoginPasswordActivity extends BaseActivity { private View btnNext; @@ -73,7 +72,6 @@ public class LoginPasswordActivity extends BaseLoginAct { btnNext.setEnabled(enabled); } - private void initView() { btnNext = findViewById(R.id.btn_next); edtPhone = findViewById(R.id.et_account); @@ -82,7 +80,6 @@ public class LoginPasswordActivity extends BaseLoginAct { edtPassword.addTextChangedListener(textWatcher); btnNext.setOnClickListener(v -> login()); findViewById(R.id.iv_back).setOnClickListener(v -> finish()); - findViewById(R.id.tv_code_login).setOnClickListener(v -> finish()); findViewById(R.id.tv_forget_password).setOnClickListener(v -> ResetPasswordActivity.start(context, ResetPasswordActivity.FROM_NOT_LOGIN)); } @@ -95,11 +92,11 @@ public class LoginPasswordActivity extends BaseLoginAct { private void login() { getDialogManager().showProgressDialog(this, "正在登录..."); AuthModel.get().login( - edtPhone.getText().toString().trim(), - edtPassword.getText().toString().trim(), - "", - "", - "") + edtPhone.getText().toString().trim(), + edtPassword.getText().toString().trim(), + "", + "", + "") .subscribe(new SingleObserver() { @Override public void onSubscribe(Disposable d) { @@ -119,50 +116,10 @@ public class LoginPasswordActivity extends BaseLoginAct { dealWithLoginError(e); } }); - - StatisticManager.Instance().onEvent(this, - StatisticsProtocol.EVENT_LOGIN_PHONE_CLICK, "点击手机号登录", null); } - @Override public void dealWithLoginError(Throwable e) { - if (!(e instanceof IsSuperAdminException)) { - String msg = e.getMessage(); - StringBuilder eventLabel = new StringBuilder("登录注册页-登录失败"); - if (!TextUtils.isEmpty(msg)) { - eventLabel.append(msg); - } - // 2004可以完整写入 - StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_LOGIN_FAILED_CLICK, eventLabel.toString()); - } - if (e instanceof BanAccountException) { - BanAccountException exception = (BanAccountException) e; - String text = "您的账号因" + exception.getMessage() + "被封禁\n解封时间:"; - int start = text.length(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日", Locale.getDefault()); - text += simpleDateFormat.format(new Date(exception.getDate())); - SpannableString spannableString = new SpannableString(text); - spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(LoginPasswordActivity.this, R.color.appColor)), - start, text.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); - getDialogManager().showOkCancelWithTitleDialog("您被封号了", - spannableString, "确定", "取消", null); - } else if (e instanceof AccountCancelException) { - AccountCancelException exception = (AccountCancelException) e; - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日", Locale.getDefault()); - - String text = "注销时间:" + simpleDateFormat.format(new Date(exception.getCancelDate())); - int end = text.length(); - text += "\n\n请联系客服(微信:yinyoukefu01)处理哦~"; - SpannableString spannableString = new SpannableString(text); - spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(LoginPasswordActivity.this, R.color.appColor)), - 0, end, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); - getDialogManager().showOkWithTitleDialog("该账号已注销", - spannableString, "我知道了", true, null); - } else if (e instanceof IOException) { - toast("网络异常,请检查您的网络再试~"); - } else { - toast(e.getMessage()); - } + LogoutHelper.dealWithLoginError(this, e); } /** diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/helper/LogoutHelper.java b/app/src/main/java/com/yizhuan/erban/ui/login/helper/LogoutHelper.java index cbda8a319..b928f8b9c 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/login/helper/LogoutHelper.java +++ b/app/src/main/java/com/yizhuan/erban/ui/login/helper/LogoutHelper.java @@ -1,7 +1,27 @@ package com.yizhuan.erban.ui.login.helper; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.TextUtils; +import android.text.style.ForegroundColorSpan; + +import androidx.core.content.ContextCompat; + +import com.yizhuan.erban.R; +import com.yizhuan.erban.base.BaseActivity; +import com.yizhuan.erban.ui.login.LoginActivity; import com.yizhuan.xchat_android_core.PreferencesUtils; import com.yizhuan.xchat_android_core.auth.AuthModel; +import com.yizhuan.xchat_android_core.auth.exception.AccountCancelException; +import com.yizhuan.xchat_android_core.auth.exception.BanAccountException; +import com.yizhuan.xchat_android_core.auth.exception.IsSuperAdminException; +import com.yizhuan.xchat_android_core.statistic.StatisticManager; +import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; /** * create by lvzebiao @2019/12/9 @@ -13,4 +33,44 @@ public class LogoutHelper { PreferencesUtils.setFristQQ(true); } + public static void dealWithLoginError(BaseActivity activity,Throwable e){ + if (!(e instanceof IsSuperAdminException)) { + String msg = e.getMessage(); + StringBuilder eventLabel = new StringBuilder("登录注册页-登录失败"); + if (!TextUtils.isEmpty(msg)) { + eventLabel.append(msg); + } + // 2004可以完整写入 + StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_LOGIN_FAILED_CLICK, eventLabel.toString()); + } + if (e instanceof BanAccountException) { + BanAccountException exception = (BanAccountException) e; + String text = "您的账号因" + exception.getMessage() + "被封禁\n解封时间:"; + int start = text.length(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日", Locale.getDefault()); + text += simpleDateFormat.format(new Date(exception.getDate())); + SpannableString spannableString = new SpannableString(text); + spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(activity, R.color.appColor)), + start, text.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + activity.getDialogManager().showOkCancelWithTitleDialog("您被封号了", + spannableString, "确定", "取消", null); + } else if (e instanceof AccountCancelException) { + AccountCancelException exception = (AccountCancelException) e; + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日", Locale.getDefault()); + + String text = "注销时间:" + simpleDateFormat.format(new Date(exception.getCancelDate())); + int end = text.length(); + text += "\n\n请联系客服(微信:yinyoukefu01)处理哦~"; + SpannableString spannableString = new SpannableString(text); + spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(activity, R.color.appColor)), + 0, end, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + activity.getDialogManager().showOkWithTitleDialog("该账号已注销", + spannableString, "我知道了", true, null); + } else if (e instanceof IOException) { + activity.toast("网络异常,请检查您的网络再试~"); + } else { + activity.toast(e.getMessage()); + } + } + } diff --git a/app/src/main/res/drawable-xhdpi/bg_login.png b/app/src/main/res/drawable-xhdpi/bg_login.png new file mode 100644 index 000000000..3d5a9fbab Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/bg_login.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_female_normal.png b/app/src/main/res/drawable-xhdpi/ic_female_normal.png index 8cac92405..202537396 100644 Binary files a/app/src/main/res/drawable-xhdpi/ic_female_normal.png and b/app/src/main/res/drawable-xhdpi/ic_female_normal.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_female_press.png b/app/src/main/res/drawable-xhdpi/ic_female_press.png index bd7dbb0f0..9753faf08 100644 Binary files a/app/src/main/res/drawable-xhdpi/ic_female_press.png and b/app/src/main/res/drawable-xhdpi/ic_female_press.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_login_arrow_right.png b/app/src/main/res/drawable-xhdpi/ic_login_arrow_right.png new file mode 100644 index 000000000..f59290636 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_login_arrow_right.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_login_checked.png b/app/src/main/res/drawable-xhdpi/ic_login_checked.png index 2b7e1f3dd..a9219d95b 100644 Binary files a/app/src/main/res/drawable-xhdpi/ic_login_checked.png and b/app/src/main/res/drawable-xhdpi/ic_login_checked.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_login_facebook.png b/app/src/main/res/drawable-xhdpi/ic_login_facebook.png new file mode 100644 index 000000000..e7c902acd Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_login_facebook.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_login_google.png b/app/src/main/res/drawable-xhdpi/ic_login_google.png new file mode 100644 index 000000000..900d6094a Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_login_google.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_login_line.png b/app/src/main/res/drawable-xhdpi/ic_login_line.png new file mode 100644 index 000000000..07b6ca3ef Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_login_line.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_login_next.png b/app/src/main/res/drawable-xhdpi/ic_login_next.png new file mode 100644 index 000000000..8bfd840d4 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_login_next.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_male_normal.png b/app/src/main/res/drawable-xhdpi/ic_male_normal.png index 5ad5aeb61..fdb1e08cc 100644 Binary files a/app/src/main/res/drawable-xhdpi/ic_male_normal.png and b/app/src/main/res/drawable-xhdpi/ic_male_normal.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_male_press.png b/app/src/main/res/drawable-xhdpi/ic_male_press.png index fd798bc28..acfcf6a70 100644 Binary files a/app/src/main/res/drawable-xhdpi/ic_male_press.png and b/app/src/main/res/drawable-xhdpi/ic_male_press.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_random_nick.png b/app/src/main/res/drawable-xhdpi/ic_random_nick.png index f64d36a94..6254c301d 100644 Binary files a/app/src/main/res/drawable-xhdpi/ic_random_nick.png and b/app/src/main/res/drawable-xhdpi/ic_random_nick.png differ diff --git a/app/src/main/res/drawable/bg_common_confirm_normal.xml b/app/src/main/res/drawable/bg_common_confirm_normal.xml index 7e12fa04d..d2d66ddcf 100644 --- a/app/src/main/res/drawable/bg_common_confirm_normal.xml +++ b/app/src/main/res/drawable/bg_common_confirm_normal.xml @@ -4,10 +4,10 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_common_confirm_press.xml b/app/src/main/res/drawable/bg_common_confirm_press.xml index 19fd43ceb..979f905ee 100644 --- a/app/src/main/res/drawable/bg_common_confirm_press.xml +++ b/app/src/main/res/drawable/bg_common_confirm_press.xml @@ -4,11 +4,11 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_login_btn_bg.xml b/app/src/main/res/drawable/shape_login_btn_bg.xml new file mode 100644 index 000000000..e71c6d975 --- /dev/null +++ b/app/src/main/res/drawable/shape_login_btn_bg.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/app/src/module_quick_pass/res/drawable/bg_normal.xml b/app/src/main/res/drawable/shape_white_top_25dp.xml similarity index 50% rename from app/src/module_quick_pass/res/drawable/bg_normal.xml rename to app/src/main/res/drawable/shape_white_top_25dp.xml index 865401980..6505c6057 100644 --- a/app/src/module_quick_pass/res/drawable/bg_normal.xml +++ b/app/src/main/res/drawable/shape_white_top_25dp.xml @@ -1,5 +1,7 @@ - + + \ No newline at end of file diff --git a/app/src/module_quick_pass/res/layout/activity_give_gold_to_user.xml b/app/src/main/res/layout/activity_give_gold_to_user.xml similarity index 100% rename from app/src/module_quick_pass/res/layout/activity_give_gold_to_user.xml rename to app/src/main/res/layout/activity_give_gold_to_user.xml diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml new file mode 100644 index 000000000..a46fd7ffe --- /dev/null +++ b/app/src/main/res/layout/activity_login.xml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_login_password.xml b/app/src/main/res/layout/activity_login_password.xml index 58931611a..0f76c26b6 100644 --- a/app/src/main/res/layout/activity_login_password.xml +++ b/app/src/main/res/layout/activity_login_password.xml @@ -6,139 +6,148 @@ android:layout_height="match_parent" android:background="@color/bg_normal_1c1b22"> - - - - - - + + + + + app:layout_constraintTop_toBottomOf="@id/view_top"> + + + + + + + + + + + + + + + android:layout_height="wrap_content" + android:layout_gravity="end" + android:layout_marginTop="@dimen/dp_15" + android:layout_marginEnd="33dp" + android:text="忘记密码" + android:textColor="#B3B3C3" + android:textSize="@dimen/sp_14" /> + +