From 71bff56b2ac0c6c47b8d33afd4529d2f3e2bd737 Mon Sep 17 00:00:00 2001 From: oujunhui <313127320@qq.com> Date: Fri, 10 Apr 2020 16:48:04 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=A1=B5=E9=83=A8=E5=88=86UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 + app/src/main/AndroidManifest.xml | 2 +- .../com/yizhuan/erban/base/BaseActivity.java | 4 + .../erban/ui/login/AddUserInfoActivity.java | 1 + .../erban/ui/login/CodeDownDescTimer.java | 53 +++ .../erban/ui/login/LoginCodeActivity.java | 306 ++++++++++++ .../erban/ui/login/LoginPhoneActivity.java | 4 +- .../ui/login/LoginVertificationActivity.java | 115 ----- .../login/fragment/AddUserInfoFragment.java | 79 ++-- .../fragment/AddUserInfoOldFragment.java | 443 ++++++++++++++++++ .../res/drawable-xhdpi/ic_female_normal.png | Bin 0 -> 5440 bytes .../res/drawable-xhdpi/ic_female_press.png | Bin 0 -> 10898 bytes .../res/drawable-xhdpi/ic_male_normal.png | Bin 0 -> 5245 bytes .../main/res/drawable-xhdpi/ic_male_press.png | Bin 0 -> 11209 bytes .../selector_radiobutton_gender_male.xml | 7 + app/src/main/res/layout/activity_addinfo.xml | 2 +- .../res/layout/fragment_add_user_info.xml | 196 ++++---- app/src/main/res/values/dimens.xml | 1 + app/src/main/res/values/strings.xml | 1 + ...tification.xml => activity_login_code.xml} | 4 +- .../res/layout/activity_login_phone.xml | 2 +- .../erban/quick_pass/QuickPassLoginAct.java | 6 - .../res/layout/fragment_add_user_info_old.xml | 213 +++++++++ .../selector_radiobutton_gender_female.xml | 7 + build.gradle | 1 + nim_uikit/res/values/strings.xml | 1 + 26 files changed, 1210 insertions(+), 240 deletions(-) create mode 100644 app/src/main/java/com/yizhuan/erban/ui/login/CodeDownDescTimer.java create mode 100644 app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.java delete mode 100644 app/src/main/java/com/yizhuan/erban/ui/login/LoginVertificationActivity.java create mode 100644 app/src/main/java/com/yizhuan/erban/ui/login/fragment/AddUserInfoOldFragment.java create mode 100644 app/src/main/res/drawable-xhdpi/ic_female_normal.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_female_press.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_male_normal.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_male_press.png create mode 100644 app/src/main/res/drawable/selector_radiobutton_gender_male.xml rename app/src/model_customer_server/res/layout/{activity_login_vertification.xml => activity_login_code.xml} (97%) create mode 100644 app/src/module_quick_pass/res/layout/fragment_add_user_info_old.xml create mode 100644 app/src/module_super_admin/res/drawable-xhdpi/selector_radiobutton_gender_female.xml diff --git a/app/build.gradle b/app/build.gradle index e6f91f312..28d104c76 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -126,6 +126,7 @@ android { buildTypes { release { // buildConfigField "String", "BASE_URL", "\"https://www.erbanyy.com/\"" + buildConfigField "String", "BASE_URL", "\"https://api.qxjiaoyou.com/\"" buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL" buildConfigField "String", "BASE_URL_STAGING", "BASE_URL" @@ -282,6 +283,7 @@ dependencies { implementation(name: 'Ui-factory_oauth_mobile_3.8.3.1', ext: 'aar') implementation(name: 'CTAccount_sdk_api_v3.7.0_all', ext: 'aar') + implementation 'com.github.fodroid:XRadioGroup:v1.5' } repositories { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b22dacbea..12183a49f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -440,7 +440,7 @@ android:launchMode="singleTop" android:screenOrientation="portrait" /> diff --git a/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java b/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java index ad44aa134..ac3354ee2 100644 --- a/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java +++ b/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java @@ -52,6 +52,8 @@ import com.yizhuan.erban.ui.login.AddUserInfoActivity; import com.yizhuan.erban.ui.login.ErbanQQMemberBindAndLoginActivity; import com.yizhuan.erban.ui.login.ForgetPswActivity; import com.yizhuan.erban.ui.login.LoginActivity; +import com.yizhuan.erban.ui.login.LoginCodeActivity; +import com.yizhuan.erban.ui.login.LoginPhoneActivity; import com.yizhuan.erban.ui.login.RegisterActivity; import com.yizhuan.erban.ui.pay.ChargeActivity; import com.yizhuan.erban.ui.widget.DefaultToolBar; @@ -1061,6 +1063,8 @@ public abstract class BaseActivity extends RxAppCompatActivity private boolean isNeedToHandleBroadcastMessageActivity() { List acts = new ArrayList<>(); acts.add(LoginActivity.class); + acts.add(LoginPhoneActivity.class); + acts.add(LoginCodeActivity.class); acts.add(ForgetPswActivity.class); acts.add(RegisterActivity.class); acts.add(AddUserInfoActivity.class); diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/AddUserInfoActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/AddUserInfoActivity.java index df7d6eb5f..804691a85 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/login/AddUserInfoActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/login/AddUserInfoActivity.java @@ -27,6 +27,7 @@ public class AddUserInfoActivity extends BaseActivity { addUserInfoFragment = new AddUserInfoFragment(); showAddUserInfo(); + initTitleBar("",true); } public void showAddUserInfo() { diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/CodeDownDescTimer.java b/app/src/main/java/com/yizhuan/erban/ui/login/CodeDownDescTimer.java new file mode 100644 index 000000000..f136d9fc1 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/ui/login/CodeDownDescTimer.java @@ -0,0 +1,53 @@ +package com.yizhuan.erban.ui.login; + +import android.graphics.Color; +import android.os.CountDownTimer; +import android.text.Html; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.style.ForegroundColorSpan; +import android.view.View; +import android.widget.TextView; + +import com.yizhuan.erban.R; + + +/** + * Created by zhouxiangfeng on 2017/5/2. + */ + +public class CodeDownDescTimer extends CountDownTimer { + private TextView mTvSecond; + private TextView mTvDesc; + + /** + * @param tv_second 秒数 + * @param tv_desc 秒数后面的字 + * @param millisInFuture The number of millis in the future from the call + * to {@link #start()} until the countdown is done and {@link #onFinish()} + * is called. + * @param countDownInterval The interval along the way to receiver + * {@link #onTick(long)} callbacks. + */ + public CodeDownDescTimer(TextView tv_second, TextView tv_desc, long millisInFuture, long countDownInterval) { + super(millisInFuture, countDownInterval); + this.mTvSecond = tv_second; + this.mTvDesc = tv_desc; + } + + @Override + public void onTick(long millisUntilFinished) { + mTvSecond.setVisibility(View.VISIBLE); + mTvSecond.setText(millisUntilFinished / 1000 + ""); //设置倒计时时间 + mTvDesc.setClickable(false); //设置不可点击 + mTvDesc.setText(Html.fromHtml("s " + "后可重新获取验证码")); + } + + @Override + public void onFinish() { + mTvSecond.setVisibility(View.GONE); + mTvDesc.setText(Html.fromHtml("重新获取验证码")); + mTvDesc.setClickable(true);//重新获得点击 + } + +} 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 new file mode 100644 index 000000000..9dc389494 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.java @@ -0,0 +1,306 @@ +package com.yizhuan.erban.ui.login; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.v4.content.ContextCompat; +import android.text.Editable; +import android.text.Html; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.text.style.ForegroundColorSpan; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import com.coorchice.library.utils.LogUtils; +import com.ishumei.smantifraud.SmAntiFraud; +import com.netease.mobsec.rjsb.watchman; +import com.orhanobut.logger.Logger; +import com.trello.rxlifecycle2.android.ActivityEvent; +import com.yizhuan.erban.R; +import com.yizhuan.erban.base.BaseActivity; +import com.yizhuan.erban.base.BaseLoginAct; +import com.yizhuan.erban.ui.login.ui.CodeEditText; +import com.yizhuan.erban.utils.KeyBoardUtils; +import com.yizhuan.xchat_android_constants.XChatConstants; +import com.yizhuan.xchat_android_core.auth.AuthModel; +import com.yizhuan.xchat_android_core.auth.event.LoginEvent; +import com.yizhuan.xchat_android_core.auth.exception.BanAccountException; +import com.yizhuan.xchat_android_core.auth.exception.IsSuperAdminException; +import com.yizhuan.xchat_android_core.auth.exception.ShowPhoneCodeException; +import com.yizhuan.xchat_android_core.code.CodeModel; +import com.yizhuan.xchat_android_core.code.CodeType; +import com.yizhuan.xchat_android_core.statistic.StatisticManager; +import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol; +import com.yizhuan.xchat_android_library.utils.DeviceUuidFactory; +import com.yizhuan.xchat_android_library.utils.LogUtil; +import com.yizhuan.xchat_android_library.utils.TextWatcherWrapper; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +import io.reactivex.SingleObserver; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; + +/** + * @author zhouxiangfeng + * @date 17/2/26 + */ +public class LoginCodeActivity extends BaseLoginAct { + + private static final String TAG = "LoginVertificationActivity"; + + private com.yizhuan.erban.ui.login.ui.CodeEditText codeEt; + private TextView tvGetCode,tvDesc,tvSecond; + private String mPhone; + private boolean isSuperAdmin = false; + private CodeDownDescTimer timer; + + public static void start(Context context,String phone) { + Intent intent = new Intent(context, LoginCodeActivity.class); + intent.putExtra("phone",phone); + context.startActivity(intent); + } + + public static void startForResult(Activity context, int requestCode) { + Intent intent = new Intent(context, LoginCodeActivity.class); + context.startActivityForResult(intent, requestCode); // startActivityForResult会导致singletop,singletask失效 + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_login_code); + EventBus.getDefault().register(this); + initTitleBar("",true); + onFindViews(); + initData(); + onSetListener(); + getSmsCode(); + } + + @SuppressLint("SetTextI18n") + private void initData() { + mPhone = getIntent().getStringExtra("phone"); + tvDesc.setText(getString(R.string.str_send_code_success)+mPhone); + + } + + @Override + protected void setStatusBar() { + StatusBarLightModes(true); + } + + private void onFindViews() { + codeEt = findViewById(R.id.et_code); + tvGetCode = findViewById(R.id.tv_get_code); + tvDesc = findViewById(R.id.tv_desc); + tvSecond = findViewById(R.id.tv_second); + } + + private void onSetListener() { + codeEt.setOnTextFinishListener(new CodeEditText.OnTextFinishListener() { + @Override + public void onTextFinish(CharSequence text, int length) { +// login(); +// LogUtils.e(text.toString()); + Intent intent = new Intent(LoginCodeActivity.this,AddUserInfoActivity.class); + startActivity(intent); + } + }); + } + + @Override + protected boolean needSteepStateBar() { + return true; + } + + + @Override + protected void onDestroy() { + codeEt = null; + super.onDestroy(); + stopCountDownTimer(); + EventBus.getDefault().unregister(this); + } + + + @Override + public boolean onTouchEvent(MotionEvent event) { + View view = getCurrentFocus(); + boolean isPressEdit = false; + if (view instanceof EditText) { + if (event.getRawX() >= view.getX() && event.getRawX() <= view.getX() + view.getWidth() && event.getRawY() >= view.getY() && event.getRawY() <= view.getY() + view.getHeight()) { + isPressEdit = true; + } + } + if (!isPressEdit) { + hideIME(); + } + return super.onTouchEvent(event); + + } + + + /** + * 获取验证码 + */ + @SuppressLint("CheckResult") + private void getSmsCode() { + String deviceId = DeviceUuidFactory.getDeviceId(this); + if (isSuperAdmin) { + CodeModel.get() + .sendCode(mPhone, CodeType.SUPER_ADMIN) + .observeOn(AndroidSchedulers.mainThread()) + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .subscribe(new SingleObserver() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onSuccess(String s) { + startCountDownTimer(); + toast(s); + } + + @Override + public void onError(Throwable e) { + toast(e.getMessage()); + Logger.e(TAG, "获取短信失败!"); + } + }); + }else { + AuthModel.get() + .sendLoginCode(mPhone, deviceId) + .observeOn(AndroidSchedulers.mainThread()) + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .subscribe(new SingleObserver() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onSuccess(String s) { + startCountDownTimer(); + toast(s); + } + + @Override + public void onError(Throwable e) { + toast(e.getMessage()); + Logger.e(TAG, "获取短信失败!"); + } + }); + } + } + + 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, + yiDunLoginToken, + shuMeiDeviceId) + .subscribe(new SingleObserver() { + @Override + public void onSubscribe(Disposable d) { + mCompositeDisposable.add(d); + } + + @Override + public void onSuccess(String s) { + getDialogManager().dismissDialog(); + stopCountDownTimer(); + setResult(RESULT_OK); + finish(); + } + + @Override + public void onError(Throwable e) { + getDialogManager().dismissDialog(); + dealWithLoginError(e); + } + }); + + StatisticManager.Instance().onEvent(this, + StatisticsProtocol.Event.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.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 ShowPhoneCodeException) { + isSuperAdmin = false; + ShowPhoneCodeException showPhoneCodeException = (ShowPhoneCodeException) e; + toast(e.getMessage()); + } else { + isSuperAdmin = false; + toast(e.getMessage()); + } + } + + private void startCountDownTimer() { + stopCountDownTimer(); + timer = new CodeDownDescTimer(tvSecond, tvGetCode,60000, 1000); + timer.start(); + } + + private void stopCountDownTimer() { + if (timer != null) { + timer.cancel(); + timer = null; + } + } + + /** + * 注册成功后发送过来的事件 + */ + @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/LoginPhoneActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/LoginPhoneActivity.java index 6235b3c1a..4e54645c0 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/login/LoginPhoneActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/login/LoginPhoneActivity.java @@ -88,7 +88,7 @@ public class LoginPhoneActivity extends BaseActivity implements View.OnClickList protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login_phone); - initTitleBar(""); + initTitleBar("",true); onFindViews(); onSetListener(); // permission(); @@ -129,7 +129,7 @@ public class LoginPhoneActivity extends BaseActivity implements View.OnClickList toast(accountValidator.getErrorMessage()); return; } - LoginVertificationActivity.start(LoginPhoneActivity.this,accountEt.getText().toString()); + LoginCodeActivity.start(LoginPhoneActivity.this,accountEt.getText().toString()); break; default: break; diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/LoginVertificationActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/LoginVertificationActivity.java deleted file mode 100644 index df93d9328..000000000 --- a/app/src/main/java/com/yizhuan/erban/ui/login/LoginVertificationActivity.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.yizhuan.erban.ui.login; - -import android.annotation.SuppressLint; -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.text.Editable; -import android.text.Html; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.MotionEvent; -import android.view.View; -import android.widget.Button; -import android.widget.EditText; -import android.widget.TextView; - -import com.yizhuan.erban.R; -import com.yizhuan.erban.base.BaseActivity; -import com.yizhuan.erban.ui.login.ui.CodeEditText; -import com.yizhuan.xchat_android_library.utils.TextWatcherWrapper; - -/** - * @author zhouxiangfeng - * @date 17/2/26 - */ -public class LoginVertificationActivity extends BaseActivity { - - private static final String TAG = "LoginVertificationActivity"; - - private com.yizhuan.erban.ui.login.ui.CodeEditText codeEt; - private TextView tvGetCode,tvDesc,tvSecond; - private String mPhone; - - public static void start(Context context,String phone) { - Intent intent = new Intent(context, LoginVertificationActivity.class); - intent.putExtra("phone",phone); - context.startActivity(intent); - } - - public static void startForResult(Activity context, int requestCode) { - Intent intent = new Intent(context, LoginVertificationActivity.class); - context.startActivityForResult(intent, requestCode); // startActivityForResult会导致singletop,singletask失效 - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_login_vertification); - initTitleBar(""); - onFindViews(); - initData(); - onSetListener(); - } - - @SuppressLint("SetTextI18n") - private void initData() { - mPhone = getIntent().getStringExtra("phone"); - tvDesc.setText(getString(R.string.str_send_code_success)+mPhone); - - - tvSecond.setText("60"); - tvGetCode.setText(Html.fromHtml("s " + "后可重新获取验证码")); - } - - @Override - protected void setStatusBar() { - StatusBarLightModes(true); - } - - private void onFindViews() { - codeEt = findViewById(R.id.et_code); - tvGetCode = findViewById(R.id.tv_get_code); - tvDesc = findViewById(R.id.tv_desc); - tvSecond = findViewById(R.id.tv_second); - } - - private void onSetListener() { - codeEt.setOnTextFinishListener(new CodeEditText.OnTextFinishListener() { - @Override - public void onTextFinish(CharSequence text, int length) { - - } - }); - } - - @Override - protected boolean needSteepStateBar() { - return true; - } - - - @Override - protected void onDestroy() { - codeEt = null; - super.onDestroy(); - } - - - @Override - public boolean onTouchEvent(MotionEvent event) { - View view = getCurrentFocus(); - boolean isPressEdit = false; - if (view instanceof EditText) { - if (event.getRawX() >= view.getX() && event.getRawX() <= view.getX() + view.getWidth() && event.getRawY() >= view.getY() && event.getRawY() <= view.getY() + view.getHeight()) { - isPressEdit = true; - } - } - if (!isPressEdit) { - hideIME(); - } - return super.onTouchEvent(event); - - } -} diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/fragment/AddUserInfoFragment.java b/app/src/main/java/com/yizhuan/erban/ui/login/fragment/AddUserInfoFragment.java index 48a583790..ccca31799 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/login/fragment/AddUserInfoFragment.java +++ b/app/src/main/java/com/yizhuan/erban/ui/login/fragment/AddUserInfoFragment.java @@ -11,8 +11,11 @@ import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; +import android.widget.RadioButton; +import android.widget.RadioGroup; import android.widget.TextView; +import com.coorchice.library.utils.LogUtils; import com.fourmob.datetimepicker.date.DatePickerDialog; import com.jph.takephoto.model.TResult; import com.netease.nim.uikit.common.util.string.StringUtil; @@ -52,6 +55,7 @@ import java.util.Map; import io.reactivex.SingleObserver; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; +import me.shihao.library.XRadioGroup; /** * @author jack @@ -67,7 +71,7 @@ public class AddUserInfoFragment extends BaseFragment private CircleImageView civAvatar; private TextInputEditText tvNick; private TextInputEditText tvGender; - private TextInputEditText tvBirthday; +// private TextInputEditText tvBirthday; private Button okBtn; // private TextView tvGenderMen; // private TextView tvGenderWomen; @@ -76,13 +80,16 @@ public class AddUserInfoFragment extends BaseFragment private TextView tvRandomNick; - private DatePickerDialog datePickerDialog; +// private DatePickerDialog datePickerDialog; private String avatarUrl; private String avatarUrlWX; private File photoFile; private int gender = -1; + private XRadioGroup rgGender; + private RadioButton rbMale; + private RadioButton rbFemale; AddUserInfoActivity addUserInfoActivity; @@ -103,13 +110,16 @@ public class AddUserInfoFragment extends BaseFragment civAvatar = view.findViewById(R.id.civ_avatar); tvNick = view.findViewById(R.id.tv_nick); tvGender = view.findViewById(R.id.tv_gender); - tvBirthday = view.findViewById(R.id.tv_birthday); +// tvBirthday = view.findViewById(R.id.tv_birthday); okBtn = view.findViewById(R.id.ok_btn); // tvGenderMen = view.findViewById(R.id.tv_gender_men); // tvGenderWomen = view.findViewById(R.id.tv_gender_women); ivRandomAvatar = view.findViewById(R.id.iv_random_avatar); tvRandomNick = view.findViewById(R.id.tv_random_nick); ivRandomAvatar.setVisibility(View.GONE); + rgGender = view.findViewById(R.id.rg_gender); + rbMale = view.findViewById(R.id.rb_male); + rbFemale = view.findViewById(R.id.rb_female); tvRandomNick.setVisibility(View.GONE); } @@ -118,7 +128,7 @@ public class AddUserInfoFragment extends BaseFragment gender = -1; civAvatar.setOnClickListener(this); tvGender.setOnClickListener(this); - tvBirthday.setOnClickListener(this); +// tvBirthday.setOnClickListener(this); okBtn.setOnClickListener(this); // tvGenderMen.setOnClickListener(this); // tvGenderWomen.setOnClickListener(this); @@ -134,7 +144,7 @@ public class AddUserInfoFragment extends BaseFragment if (thirdUserInfo != null) { avatarUrlWX = thirdUserInfo.getUserIcon(); if (thirdUserInfo.getBirth() > 0) { - tvBirthday.setText(TimeUtils.getDateTimeString(thirdUserInfo.getBirth(), "yyyy-MM-dd")); +// tvBirthday.setText(TimeUtils.getDateTimeString(thirdUserInfo.getBirth(), "yyyy-MM-dd")); } String nick = thirdUserInfo.getUserName(); if (!StringUtil.isEmpty(nick)) { @@ -152,12 +162,12 @@ public class AddUserInfoFragment extends BaseFragment private void init() { tvNick.setFilters(new InputFilter[]{new InputFilter.LengthFilter(15)}); - Calendar calendar = Calendar.getInstance(); - int year = calendar.get(Calendar.YEAR) - 18; - datePickerDialog = DatePickerDialog.newInstance(this, year, 0, 1, true); +// Calendar calendar = Calendar.getInstance(); +// int year = calendar.get(Calendar.YEAR) - 18; +// datePickerDialog = DatePickerDialog.newInstance(this, year, 0, 1, true); // 给一个默认的生日值 // 默认给够 18 岁 - tvBirthday.setText(String.format(Locale.getDefault(), "%d-01-01", year)); +// tvBirthday.setText(String.format(Locale.getDefault(), "%d-01-01", year)); // 设置默认昵称 tvNick.setText(R.string.text_default_nick); @@ -172,6 +182,21 @@ public class AddUserInfoFragment extends BaseFragment } }) .subscribe(); + + rgGender.setOnCheckedChangeListener(new XRadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(XRadioGroup radioGroup, int i) { + + if (i == rbMale.getId()){ + gender = UserInfo.GENDER_MALE; + }else { + gender = UserInfo.GENDER_FEMALE; + + } + LogUtils.e(gender+""); +// LogUtils.e(i == rbMale.getId()?gender = UserInfo.GENDER_MALE:gender = UserInfo.GENDER_FEMALE); + } + }); } @Override @@ -200,16 +225,16 @@ public class AddUserInfoFragment extends BaseFragment getDialogManager().showCommonPopupDialog(genderList, "取消", false); break; - case R.id.tv_birthday: - if (datePickerDialog.isAdded()) { - datePickerDialog.dismiss(); - } else { - Calendar calendar = Calendar.getInstance(); - datePickerDialog.setVibrate(true); - datePickerDialog.setYearRange(1945, calendar.get(Calendar.YEAR) - 18); - datePickerDialog.show(getChildFragmentManager(), "DATEPICKER_TAG"); - } - break; +// case R.id.tv_birthday: +// if (datePickerDialog.isAdded()) { +// datePickerDialog.dismiss(); +// } else { +// Calendar calendar = Calendar.getInstance(); +// datePickerDialog.setVibrate(true); +// datePickerDialog.setYearRange(1945, calendar.get(Calendar.YEAR) - 18); +// datePickerDialog.show(getChildFragmentManager(), "DATEPICKER_TAG"); +// } +// break; case R.id.ok_btn: String nick = tvNick.getText().toString(); @@ -218,11 +243,11 @@ public class AddUserInfoFragment extends BaseFragment return; } - String birth = tvBirthday.getText().toString(); - if (TextUtils.isEmpty(birth)) { - toast("生日不能为空!"); - return; - } +// String birth = tvBirthday.getText().toString(); +// if (TextUtils.isEmpty(birth)) { +// toast("生日不能为空!"); +// return; +// } if (gender == -1) { toast("必须要选性别哦"); @@ -328,11 +353,11 @@ public class AddUserInfoFragment extends BaseFragment private void commit() { String nick = tvNick.getText().toString(); - String birth = tvBirthday.getText().toString(); +// String birth = tvBirthday.getText().toString(); UserInfo userInfo = new UserInfo(); userInfo.setUid(AuthModel.get().getCurrentUid()); - userInfo.setBirthStr(birth); +// userInfo.setBirthStr(birth); userInfo.setNick(nick); userInfo.setAvatar(avatarUrl); @@ -401,7 +426,7 @@ public class AddUserInfoFragment extends BaseFragment } else { daystr = String.valueOf(day); } - tvBirthday.setText(String.valueOf(year) + "-" + monthstr + "-" + daystr); +// tvBirthday.setText(String.valueOf(year) + "-" + monthstr + "-" + daystr); } @Override diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/fragment/AddUserInfoOldFragment.java b/app/src/main/java/com/yizhuan/erban/ui/login/fragment/AddUserInfoOldFragment.java new file mode 100644 index 000000000..dedc12ddb --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/ui/login/fragment/AddUserInfoOldFragment.java @@ -0,0 +1,443 @@ +package com.yizhuan.erban.ui.login.fragment; + +import android.app.Activity; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.design.widget.TextInputEditText; +import android.text.InputFilter; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; + +import com.fourmob.datetimepicker.date.DatePickerDialog; +import com.jph.takephoto.model.TResult; +import com.netease.nim.uikit.common.util.string.StringUtil; +import com.sleepbot.datetimepicker.time.RadialPickerLayout; +import com.sleepbot.datetimepicker.time.TimePickerDialog; +import com.trello.rxlifecycle2.android.FragmentEvent; +import com.yizhuan.erban.ErbanTakePhotoActivity; +import com.yizhuan.erban.R; +import com.yizhuan.erban.base.BaseFragment; +import com.yizhuan.erban.common.widget.CircleImageView; +import com.yizhuan.erban.ui.login.AddUserInfoActivity; +import com.yizhuan.erban.ui.utils.ImageLoadUtils; +import com.yizhuan.erban.ui.utils.ImageLoadUtilsV2; +import com.yizhuan.erban.ui.widget.ButtonItem; +import com.yizhuan.xchat_android_core.auth.AuthModel; +import com.yizhuan.xchat_android_core.auth.entity.ThirdUserInfo; +import com.yizhuan.xchat_android_core.file.FileModel; +import com.yizhuan.xchat_android_core.linked.LinkedModel; +import com.yizhuan.xchat_android_core.linked.bean.LinkedInfo; +import com.yizhuan.xchat_android_core.statistic.StatisticManager; +import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol; +import com.yizhuan.xchat_android_core.user.UserModel; +import com.yizhuan.xchat_android_core.user.bean.UserInfo; +import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver; +import com.yizhuan.xchat_android_library.utils.StringUtils; +import com.yizhuan.xchat_android_library.utils.TimeUtils; + +import java.io.File; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import io.reactivex.SingleObserver; +import io.reactivex.disposables.Disposable; + +/** + * @author jack + * @Description + * @Date 2018/11/23 + */ +public class AddUserInfoOldFragment extends BaseFragment + implements View.OnClickListener, DatePickerDialog.OnDateSetListener, + TimePickerDialog.OnTimeSetListener, ErbanTakePhotoActivity.TakePhotoCallBack { + + private static final String TAG = "AddUserInfoFragment"; + + private CircleImageView civAvatar; + private TextInputEditText tvNick; + private TextInputEditText tvGender; + private TextInputEditText tvBirthday; + private Button okBtn; +// private TextView tvGenderMen; +// private TextView tvGenderWomen; + + private ImageView ivRandomAvatar; + + private TextView tvRandomNick; + + private DatePickerDialog datePickerDialog; + + private String avatarUrl; + private String avatarUrlWX; + private File photoFile; + + private int gender = -1; + + AddUserInfoActivity addUserInfoActivity; + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + addUserInfoActivity = (AddUserInfoActivity) activity; + } + + @Override + public int getRootLayoutId() { + return R.layout.fragment_add_user_info; + } + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + civAvatar = view.findViewById(R.id.civ_avatar); + tvNick = view.findViewById(R.id.tv_nick); + tvGender = view.findViewById(R.id.tv_gender); + tvBirthday = view.findViewById(R.id.tv_birthday); + okBtn = view.findViewById(R.id.ok_btn); +// tvGenderMen = view.findViewById(R.id.tv_gender_men); +// tvGenderWomen = view.findViewById(R.id.tv_gender_women); + ivRandomAvatar = view.findViewById(R.id.iv_random_avatar); + tvRandomNick = view.findViewById(R.id.tv_random_nick); + ivRandomAvatar.setVisibility(View.GONE); + tvRandomNick.setVisibility(View.GONE); + } + + @Override + public void initiate() { + gender = -1; + civAvatar.setOnClickListener(this); + tvGender.setOnClickListener(this); + tvBirthday.setOnClickListener(this); + okBtn.setOnClickListener(this); +// tvGenderMen.setOnClickListener(this); +// tvGenderWomen.setOnClickListener(this); + ivRandomAvatar.setOnClickListener(this); + tvRandomNick.setOnClickListener(this); + init(); + addWXUserInfo(); + } + + + private void addWXUserInfo() { + ThirdUserInfo thirdUserInfo = AuthModel.get().getThirdUserInfo(); + if (thirdUserInfo != null) { + avatarUrlWX = thirdUserInfo.getUserIcon(); + if (thirdUserInfo.getBirth() > 0) { + tvBirthday.setText(TimeUtils.getDateTimeString(thirdUserInfo.getBirth(), "yyyy-MM-dd")); + } + String nick = thirdUserInfo.getUserName(); + if (!StringUtil.isEmpty(nick)) { + if (nick.length() > 15) { + tvNick.setText(nick.substring(0, 15)); + } else { + tvNick.setText(nick); + } + } + if (!TextUtils.isEmpty(avatarUrlWX)) { + ImageLoadUtils.loadAvatar(getContext(), avatarUrlWX, civAvatar); + } + } + } + + private void init() { + tvNick.setFilters(new InputFilter[]{new InputFilter.LengthFilter(15)}); + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR) - 18; + datePickerDialog = DatePickerDialog.newInstance(this, year, 0, 1, true); + // 给一个默认的生日值 + // 默认给够 18 岁 + tvBirthday.setText(String.format(Locale.getDefault(), "%d-01-01", year)); + // 设置默认昵称 + tvNick.setText(R.string.text_default_nick); + + UserModel.get().getRandomConfig() + .compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW)) + .doOnSuccess(userRandomConfig -> { + if (userRandomConfig.isAvatar()) { + ivRandomAvatar.setVisibility(View.VISIBLE); + } + if (userRandomConfig.isNick()) { + tvRandomNick.setVisibility(View.VISIBLE); + } + }) + .subscribe(); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.tv_gender: + ButtonItem maleItem = new ButtonItem("男", new ButtonItem.OnClickListener() { + @Override + public void onClick() { + gender = UserInfo.GENDER_MALE; + tvGender.setText("男"); + } + }); + + ButtonItem femaleItem = new ButtonItem("女", new ButtonItem.OnClickListener() { + @Override + public void onClick() { + gender = UserInfo.GENDER_FEMALE; + tvGender.setText("女"); + } + }); + + List genderList = new ArrayList<>(); + genderList.add(maleItem); + genderList.add(femaleItem); + getDialogManager().showCommonPopupDialog(genderList, "取消", false); + break; + + case R.id.tv_birthday: + if (datePickerDialog.isAdded()) { + datePickerDialog.dismiss(); + } else { + Calendar calendar = Calendar.getInstance(); + datePickerDialog.setVibrate(true); + datePickerDialog.setYearRange(1945, calendar.get(Calendar.YEAR) - 18); + datePickerDialog.show(getChildFragmentManager(), "DATEPICKER_TAG"); + } + break; + + case R.id.ok_btn: + String nick = tvNick.getText().toString(); + if (TextUtils.isEmpty(nick)) { + toast("昵称不能为空!"); + return; + } + + String birth = tvBirthday.getText().toString(); + if (TextUtils.isEmpty(birth)) { + toast("生日不能为空!"); + return; + } + + if (gender == -1) { + toast("必须要选性别哦"); + return; + } + + if (photoFile != null) { + getDialogManager().showProgressDialog(getContext(), "正在上传请稍后..."); + FileModel.get() + .uploadFile(photoFile.getAbsolutePath()) + .compose(bindToLifecycle()) + .subscribe((url, throwable) -> { + if (throwable != null) { + onUploadFail(); + } else { + onUpload(url); + } + }); + return; + } + + //用户如果自己拍照作为头像就上传,如果为空就代表没拍照,直接拿微信头像上传 +// avatarUrl = avatarUrlWX; + if (avatarUrlWX != null) { + avatarUrl = avatarUrlWX; + } + if (StringUtils.isEmpty(avatarUrl)) { + avatarUrl = "https://img.erbanyy.com/qingxun_default_avatar.png"; + } + commit(); + break; + case R.id.civ_avatar: + ButtonItem upItem = new ButtonItem("拍照上传", new ButtonItem.OnClickListener() { + @Override + public void onClick() { + ErbanTakePhotoActivity.startToTakePhoto(getContext(), AddUserInfoOldFragment.this); + } + }); + + ButtonItem localItem = new ButtonItem("本地相册", new ButtonItem.OnClickListener() { + @Override + public void onClick() { + ErbanTakePhotoActivity.startToSelectPhoto(getContext(), AddUserInfoOldFragment.this); + + } + }); + List buttonItemList = new ArrayList<>(); + buttonItemList.add(upItem); + buttonItemList.add(localItem); + getDialogManager().showCommonPopupDialog(buttonItemList, "取消", false); + break; + + case R.id.iv_random_avatar: + StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_INFORMATION_RANDOM_AVATAR, + "随机头像"); + ivRandomAvatar.setEnabled(false); + UserModel.get().getRandomAvatar() + .compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW)) + .subscribe(new DontWarnObserver() { + @Override + public void accept(String avatar, String error) { + super.accept(avatar, error); + ivRandomAvatar.setEnabled(true); + if (error != null) { + toast(error); + return; + } + if (!TextUtils.isEmpty(avatar)) { + avatarUrl = avatar; + ImageLoadUtilsV2.loadAvatar(civAvatar, avatar); + } + } + }); + break; + + case R.id.tv_random_nick: + StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_INFORMATION_RANDOM_NAME, + "随机昵称"); + tvRandomNick.setEnabled(false); + UserModel.get().getRandomNick() + .compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW)) + .subscribe(new DontWarnObserver() { + @Override + public void accept(String nick, String error) { + super.accept(nick, error); + tvRandomNick.setEnabled(true); + if (error != null) { + toast(error); + return; + } + if (!TextUtils.isEmpty(nick)) { + tvNick.setText(nick); + } + } + }); + break; + + default: + + break; + } + } + + private void commit() { + String nick = tvNick.getText().toString(); + String birth = tvBirthday.getText().toString(); + + UserInfo userInfo = new UserInfo(); + userInfo.setUid(AuthModel.get().getCurrentUid()); + userInfo.setBirthStr(birth); + userInfo.setNick(nick); + userInfo.setAvatar(avatarUrl); + + if (gender == UserInfo.GENDER_MALE || gender == UserInfo.GENDER_FEMALE) { + userInfo.setGender(gender); + }else { + toast("必须要选性别哦"); + return; + } + + getDialogManager().showProgressDialog(getContext(), "请稍后..."); + LinkedInfo linkedInfo = LinkedModel.get().getLinkedInfo(); + + String channel = ""; + String roomUid = ""; + String uid = ""; + if (linkedInfo != null) { + channel = linkedInfo.getChannel(); + roomUid = linkedInfo.getRoomUid(); + uid = linkedInfo.getUid(); + } + UserModel.get().requestCompleteUserInfo(userInfo, channel, uid, roomUid, null) + .compose(bindUntilEvent(FragmentEvent.DESTROY)) + .subscribe(new SingleObserver() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onSuccess(UserInfo userInfo) { + getDialogManager().dismissDialog(); + StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_COMPLETE,"注册完成(提交个人资料)"); + AuthModel.get().setThirdUserInfo(null); + getActivity().finish(); + } + + @Override + public void onError(Throwable e) { + getDialogManager().dismissDialog(); + toast(e.getMessage()); + } + }); + + Map attributes = new HashMap<>(4); + attributes.put("userUid", userInfo.getUid() + ""); + attributes.put("shareChannel", channel); + attributes.put("shareUid", uid); + attributes.put("roomUid", roomUid); + StatisticManager.Instance().onEvent(getContext(), + StatisticsProtocol.Event.EVENT_LOGIN_REPARI_SUCCESS_CLICK, "补全", attributes); + } + + + @Override + public void onDateSet(DatePickerDialog datePickerDialog, int year, int month, int day) { + String monthstr; + if ((month + 1) < 10) { + monthstr = "0" + (month + 1); + } else { + monthstr = String.valueOf(month + 1); + } + String daystr; + if (day < 10) { + daystr = "0" + day; + } else { + daystr = String.valueOf(day); + } + tvBirthday.setText(String.valueOf(year) + "-" + monthstr + "-" + daystr); + } + + @Override + public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) { + + } + + + public void onUpload(String url) { + Log.d(TAG, "onUpload: 这是添加用户更改上传"); + avatarUrl = url; + getDialogManager().dismissDialog(); + ImageLoadUtils.loadAvatar(getContext(), url, civAvatar); + commit(); + } + + public void onUploadFail() { + toast("上传失败"); + getDialogManager().dismissDialog(); + } + + + @Override + public void takeSuccess(TResult result) { + photoFile = new File(result.getImage().getCompressPath()); + if (getContext() != null) { + ImageLoadUtils.loadImage(getContext(), photoFile, civAvatar, R.drawable.tutu_default_avatar_purple); + } + } + + @Override + public void takeFail(TResult result, String msg) { + toast(msg); + } + + @Override + public void takeCancel() { + + } + + +} diff --git a/app/src/main/res/drawable-xhdpi/ic_female_normal.png b/app/src/main/res/drawable-xhdpi/ic_female_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..e59d810e2c38a741e396463242bc019c71f5c881 GIT binary patch literal 5440 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_female_press.png b/app/src/main/res/drawable-xhdpi/ic_female_press.png new file mode 100644 index 0000000000000000000000000000000000000000..09af5d9a8186fa3ba754951ccab719bc75daef1c GIT binary patch literal 10898 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_male_normal.png b/app/src/main/res/drawable-xhdpi/ic_male_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..dd075900b2245f0eb8b41a417025f410afe049b4 GIT binary patch literal 5245 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/selector_radiobutton_gender_male.xml b/app/src/main/res/drawable/selector_radiobutton_gender_male.xml new file mode 100644 index 000000000..d7980cd1d --- /dev/null +++ b/app/src/main/res/drawable/selector_radiobutton_gender_male.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_addinfo.xml b/app/src/main/res/layout/activity_addinfo.xml index c623a504c..9aac85404 100644 --- a/app/src/main/res/layout/activity_addinfo.xml +++ b/app/src/main/res/layout/activity_addinfo.xml @@ -2,8 +2,8 @@ diff --git a/app/src/main/res/layout/fragment_add_user_info.xml b/app/src/main/res/layout/fragment_add_user_info.xml index 0ae50139c..2ee464494 100644 --- a/app/src/main/res/layout/fragment_add_user_info.xml +++ b/app/src/main/res/layout/fragment_add_user_info.xml @@ -5,32 +5,23 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" + android:background="@mipmap/bg_login" android:orientation="vertical"> - + + app:layout_constraintTop_toTopOf="parent" /> - + app:layout_constraintEnd_toEndOf="parent" + > - + + + + + + + - + app:layout_constraintTop_toBottomOf="@+id/ll_nick" + tools:ignore="SpUsage" + > + + + + + + + + + + + + + -