设置基本资料

This commit is contained in:
hch 2023-10-16 18:18:35 +08:00
parent 427d10158b
commit 9ae47dffc2
31 changed files with 1258 additions and 188 deletions

View File

@ -143,6 +143,7 @@
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity android:name=".activity.HomeSearchActivity" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.shayu.onetoone.fileprovider"

View File

@ -1,6 +1,5 @@
package com.shayu.onetoone.activity;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
@ -19,6 +18,7 @@ import com.shayu.onetoone.activity.fragments.DynamicFragment;
import com.shayu.onetoone.activity.fragments.FriendsFragment;
import com.shayu.onetoone.activity.fragments.MessageFragment;
import com.shayu.onetoone.activity.fragments.MyFragment;
import com.shayu.onetoone.bean.JoinAnchorBean;
import com.shayu.onetoone.bean.OfficialNoticeBean;
import com.shayu.onetoone.event.MessageMsgBusEvent;
import com.shayu.onetoone.manager.OTONetManager;
@ -27,8 +27,10 @@ import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.manager.NoviceInstructorManager;
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import org.greenrobot.eventbus.Subscribe;
@ -114,39 +116,63 @@ public class MainActivity extends AbsOTOActivity {
});
}
@Override
protected void onResume() {
super.onResume();
checkUserInfoIsSet();
}
/**
* 检测用户是否设置个人信息
*/
private void checkUserInfoIsSet() {
OTONetManager.getInstance(mContext).getBaseInfos(true, new com.yunbao.common.http.base.HttpCallback<com.shayu.onetoone.bean.UserBean>() {
@Override
public void onSuccess(com.shayu.onetoone.bean.UserBean data) {
if (data.getStatus() == 0) {
RouteManager.forwardCompleteActivity();
}
}
@Override
public void onError(String error) {
}
});
}
private void showRedPoint(int count) {
OTONetManager.getInstance(mContext)
.getMessageSystemLists(new HttpCallback<List<OfficialNoticeBean>>() {
int point = 0;
OTONetManager.getInstance(mContext).getMessageSystemLists(new HttpCallback<List<OfficialNoticeBean>>() {
int point = 0;
@Override
public void onSuccess(List<OfficialNoticeBean> data) {
for (OfficialNoticeBean datum : data) {
point += datum.getNum();
}
//大于0则是通过会话未读监听器获取到的数则不用再调用获取未读数接口了
if (count >= 0) {
updateUnreadCount(point + count);
return;
}
RongIMClient.getInstance().getTotalUnreadCount(new RongIMClient.ResultCallback<Integer>() {
@Override
public void onSuccess(List<OfficialNoticeBean> data) {
for (OfficialNoticeBean datum : data) {
point += datum.getNum();
}
//大于0则是通过会话未读监听器获取到的数则不用再调用获取未读数接口了
if (count >= 0) {
updateUnreadCount(point + count);
return;
}
RongIMClient.getInstance().getTotalUnreadCount(new RongIMClient.ResultCallback<Integer>() {
@Override
public void onSuccess(Integer integer) {
updateUnreadCount(point + integer);
}
@Override
public void onError(RongIMClient.ErrorCode e) {
}
});
public void onSuccess(Integer integer) {
updateUnreadCount(point + integer);
}
@Override
public void onError(String error) {
public void onError(RongIMClient.ErrorCode e) {
}
});
}
@Override
public void onError(String error) {
}
});
}
private void updateUnreadCount(int count) {

View File

@ -34,6 +34,7 @@ import com.opensource.svgaplayer.SVGAVideoEntity;
import com.shayu.onetoone.R;
import com.shayu.onetoone.adapter.MainMeAdapter;
import com.shayu.onetoone.bean.SlideBean;
import com.shayu.onetoone.manager.RouteManager;
import com.shayu.onetoone.utils.MainHttpConsts;
import com.shayu.onetoone.utils.MainHttpUtil;
import com.shayu.onetoone.view.CustomMyViewHolder;
@ -114,7 +115,6 @@ public class MyFragment extends BaseFragment implements OnItemClickListener<User
private LinearLayout lt_advertisement;
private View redPoint;
@Override
public View createView(LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState) {
@ -129,7 +129,8 @@ public class MyFragment extends BaseFragment implements OnItemClickListener<User
ViewClicksAntiShake.clicksAntiShake(mAvatar, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
RouteUtil.forwardUserHome(mContext, CommonAppConfig.getInstance().getUid(), 2);
//RouteUtil.forwardUserHome(mContext, CommonAppConfig.getInstance().getUid(), 2);
RouteManager.forwardEditProfileActivity();
}
});
@ -139,7 +140,8 @@ public class MyFragment extends BaseFragment implements OnItemClickListener<User
ViewClicksAntiShake.clicksAntiShake(gift_svga, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
RouteUtil.forwardUserHome(mContext, CommonAppConfig.getInstance().getUid(), 2);
//RouteUtil.forwardUserHome(mContext, CommonAppConfig.getInstance().getUid(), 2);
RouteManager.forwardEditProfileActivity();
}
});
user_noble_ico = (ImageView) itemView.findViewById(R.id.user_noble_ico);

View File

@ -0,0 +1,251 @@
package com.shayu.onetoone.activity.login;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
import com.bigkoo.pickerview.view.TimePickerView;
import com.blankj.utilcode.util.StringUtils;
import com.lxj.xpopup.XPopup;
import com.shayu.onetoone.R;
import com.shayu.onetoone.activity.AbsOTOActivity;
import com.shayu.onetoone.activity.MainActivity;
import com.shayu.onetoone.bean.AvatarBean;
import com.shayu.onetoone.manager.OTONetManager;
import com.shayu.onetoone.manager.RouteManager;
import com.shayu.onetoone.view.UserAvatarPopup;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.HttpCallbackModel;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.interfaces.ImageResultCallback;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.ProcessImageUtil;
import com.yunbao.common.utils.ToastUtil;
import java.io.File;
import java.util.Calendar;
import java.util.Date;
/**
* 完善个人资料
*/
@Route(path = RouteManager.ACTIVITY_COMPLETE)
public class ChooseLabelActivity extends AbsOTOActivity {
private RelativeLayout editHead; //头像点击事件
private ImageView userAvatar; //头像
private TextView txtChoose;
private EditText userNickName; //昵称
private TextView userSex1; //性别
private TextView userSex2; //性别
private TextView userBirthday; //年龄
private Button btnRegister; //提交资料
private int sex = -1;
ProcessImageUtil cameraUtil;
private File mAvatarFile;
int year;
int month;
int day;
private String avatarUrl;
@Override
protected int getLayoutId() {
return R.layout.activity_complete;
}
@Override
protected void main(Bundle savedInstanceState) {
Calendar calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR) - 18;
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
initView();
initCamera();
}
private void initCamera() {
cameraUtil = new ProcessImageUtil(this, "com.shayu.onetoone.fileprovider");
cameraUtil.setImageResultCallback(new ImageResultCallback() {
@Override
public void beforeCamera() {
}
@Override
public void onSuccess(File file) {
L.e("cameraUtil.setImageResultCallback:");
if (file != null) {
mAvatarFile = file;
OTONetManager.getInstance(ChooseLabelActivity.this).updateFile(mAvatarFile, new HttpCallback<AvatarBean>() {
@Override
public void onSuccess(AvatarBean data) {
ImgLoader.display(mContext, file, userAvatar);
//txtChoose.setVisibility(View.GONE);
avatarUrl = data.getAvatar();
ToastUtil.show("上传成功");
}
@Override
public void onError(String error) {
ToastUtil.show("上传失败");
}
});
}
}
@Override
public void onFailure() {
}
});
}
@SuppressLint("SetTextI18n")
private void initView() {
editHead = findViewById(R.id.editHead);
userAvatar = findViewById(R.id.userAvatar);
txtChoose = findViewById(R.id.text_choose);
userNickName = findViewById(R.id.userNickName);
userSex1 = findViewById(R.id.user_sex_1);
userSex2 = findViewById(R.id.user_sex_2);
userBirthday = findViewById(R.id.userBirthday);
btnRegister = findViewById(R.id.btn_register);
avatarUrl = CommonAppConfig.getInstance().getUserBean().getAvatar();
if (!StringUtils.isEmpty(avatarUrl)) {
ImgLoader.display(ChooseLabelActivity.this, avatarUrl, userAvatar);
}
if (!StringUtils.isEmpty(CommonAppConfig.getInstance().getUserBean().getUserNiceName())) {
userNickName.setText(CommonAppConfig.getInstance().getUserBean().getUserNiceName());
}
editHead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chooseImage();
}
});
userBirthday.setText(year + "" + (month + 1) + "" + day + "");
userSex1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
changeSex(0);
}
});
userSex2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
changeSex(1);
}
});
userBirthday.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//时间选择器
Calendar selectedDate = Calendar.getInstance();
selectedDate.set(year, month, day);
TimePickerView pvTime = new TimePickerBuilder(ChooseLabelActivity.this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
userBirthday.setText(year + "" + (month + 1) + "" + day + "");
}
}).setCancelText("生日").setSubmitColor(getResources().getColor(R.color.blue01)).setSubmitText("完成").setContentTextSize(20).setDate(selectedDate).build();
pvTime.show();
}
});
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (StringUtils.isEmpty(userNickName.getText().toString())) {
Toast.makeText(mContext, "请填写昵称", Toast.LENGTH_SHORT).show();
return;
}
if (sex == -1) {
Toast.makeText(mContext, "请选择性别", Toast.LENGTH_SHORT).show();
return;
}
OTONetManager.getInstance(mContext).setInfo(avatarUrl, userNickName.getText().toString(), sex, year + "-" + month + "-" + day, new HttpCallback<HttpCallbackModel>() {
@Override
public void onSuccess(HttpCallbackModel data) {
Toast.makeText(mContext, data.getMsg(), Toast.LENGTH_SHORT).show();
if (data.getCode() == 0) {
Intent intent = new Intent(ChooseLabelActivity.this, MainActivity.class);
intent.putExtra(Constants.SHOW_INVITE, false);
startActivity(intent);
RouteManager.forwardMainActivity();
finish();
}
}
@Override
public void onError(String error) {
}
});
}
});
}
/**
* 选择图片
*/
private void chooseImage() {
UserAvatarPopup userAvatarPopup = new UserAvatarPopup(this, userAvatar1 -> {
avatarUrl = userAvatar1;
ImgLoader.display(ChooseLabelActivity.this, avatarUrl, userAvatar);
//txtChoose.setVisibility(View.GONE);
}, isCamera -> {
if (isCamera) {
cameraUtil.getImageByCamera();
} else {
cameraUtil.getImageByAlumb();
}
});
new XPopup.Builder(mContext).asCustom(userAvatarPopup).show();
}
private void changeSex(int i) {
sex = i;
if (sex == 0) {
userSex1.setTextColor(getResources().getColor(R.color.white));
userSex2.setTextColor(getResources().getColor(R.color.text_gray));
userSex1.setBackgroundResource(R.mipmap.icon_user_sex_02);
userSex2.setBackgroundResource(R.mipmap.icon_user_sex_00);
} else {
userSex1.setTextColor(getResources().getColor(R.color.text_gray));
userSex2.setTextColor(getResources().getColor(R.color.white));
userSex1.setBackgroundResource(R.mipmap.icon_user_sex_00);
userSex2.setBackgroundResource(R.mipmap.icon_user_sex_01);
}
}
}

View File

@ -1,17 +1,71 @@
package com.shayu.onetoone.activity.login;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
import com.bigkoo.pickerview.view.TimePickerView;
import com.blankj.utilcode.util.StringUtils;
import com.lxj.xpopup.XPopup;
import com.shayu.onetoone.R;
import com.shayu.onetoone.activity.AbsOTOActivity;
import com.shayu.onetoone.activity.MainActivity;
import com.shayu.onetoone.bean.AvatarBean;
import com.shayu.onetoone.manager.OTONetManager;
import com.shayu.onetoone.manager.RouteManager;
import com.shayu.onetoone.view.UserAvatarPopup;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.HttpCallbackModel;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.interfaces.ImageResultCallback;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.ProcessImageUtil;
import com.yunbao.common.utils.ToastUtil;
import java.io.File;
import java.util.Calendar;
import java.util.Date;
/**
* 完善个人资料
*/
@Route(path = RouteManager.ACTIVITY_COMPLETE)
public class CompleteActivity extends AbsOTOActivity {
private RelativeLayout editHead; //头像点击事件
private ImageView userAvatar; //头像
private TextView txtChoose;
private EditText userNickName; //昵称
private TextView userSex1; //性别
private TextView userSex2; //性别
private TextView userBirthday; //年龄
private Button btnRegister; //提交资料
private int sex = -1;
ProcessImageUtil cameraUtil;
private File mAvatarFile;
int year;
int month;
int day;
private String avatarUrl;
@Override
protected int getLayoutId() {
@ -20,6 +74,178 @@ public class CompleteActivity extends AbsOTOActivity {
@Override
protected void main(Bundle savedInstanceState) {
Calendar calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR) - 18;
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
initView();
initCamera();
}
private void initCamera() {
cameraUtil = new ProcessImageUtil(this, "com.shayu.onetoone.fileprovider");
cameraUtil.setImageResultCallback(new ImageResultCallback() {
@Override
public void beforeCamera() {
}
@Override
public void onSuccess(File file) {
L.e("cameraUtil.setImageResultCallback:");
if (file != null) {
mAvatarFile = file;
OTONetManager.getInstance(CompleteActivity.this).updateFile(mAvatarFile, new HttpCallback<AvatarBean>() {
@Override
public void onSuccess(AvatarBean data) {
ImgLoader.display(mContext, file, userAvatar);
//txtChoose.setVisibility(View.GONE);
avatarUrl = data.getAvatar();
ToastUtil.show("上传成功");
}
@Override
public void onError(String error) {
ToastUtil.show("上传失败");
}
});
}
}
@Override
public void onFailure() {
}
});
}
@SuppressLint("SetTextI18n")
private void initView() {
editHead = findViewById(R.id.editHead);
userAvatar = findViewById(R.id.userAvatar);
txtChoose = findViewById(R.id.text_choose);
userNickName = findViewById(R.id.userNickName);
userSex1 = findViewById(R.id.user_sex_1);
userSex2 = findViewById(R.id.user_sex_2);
userBirthday = findViewById(R.id.userBirthday);
btnRegister = findViewById(R.id.btn_register);
avatarUrl = CommonAppConfig.getInstance().getUserBean().getAvatar();
if (!StringUtils.isEmpty(avatarUrl)) {
ImgLoader.display(CompleteActivity.this, avatarUrl, userAvatar);
}
if (!StringUtils.isEmpty(CommonAppConfig.getInstance().getUserBean().getUserNiceName())) {
userNickName.setText(CommonAppConfig.getInstance().getUserBean().getUserNiceName());
}
editHead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chooseImage();
}
});
userBirthday.setText(year + "" + (month + 1) + "" + day + "");
userSex1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
changeSex(0);
}
});
userSex2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
changeSex(1);
}
});
userBirthday.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//时间选择器
Calendar selectedDate = Calendar.getInstance();
selectedDate.set(year, month, day);
TimePickerView pvTime = new TimePickerBuilder(CompleteActivity.this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
userBirthday.setText(year + "" + (month + 1) + "" + day + "");
}
}).setCancelText("生日").setSubmitColor(getResources().getColor(R.color.blue01)).setSubmitText("完成").setContentTextSize(20).setDate(selectedDate).build();
pvTime.show();
}
});
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (StringUtils.isEmpty(userNickName.getText().toString())) {
Toast.makeText(mContext, "请填写昵称", Toast.LENGTH_SHORT).show();
return;
}
if (sex == -1) {
Toast.makeText(mContext, "请选择性别", Toast.LENGTH_SHORT).show();
return;
}
OTONetManager.getInstance(mContext).setInfo(avatarUrl, userNickName.getText().toString(), sex, year + "-" + month + "-" + day, new HttpCallback<HttpCallbackModel>() {
@Override
public void onSuccess(HttpCallbackModel data) {
Toast.makeText(mContext, data.getMsg(), Toast.LENGTH_SHORT).show();
if (data.getCode() == 0) {
Intent intent = new Intent(CompleteActivity.this, MainActivity.class);
intent.putExtra(Constants.SHOW_INVITE, false);
startActivity(intent);
RouteManager.forwardMainActivity();
finish();
}
}
@Override
public void onError(String error) {
}
});
}
});
}
/**
* 选择图片
*/
private void chooseImage() {
UserAvatarPopup userAvatarPopup = new UserAvatarPopup(this, userAvatar1 -> {
avatarUrl = userAvatar1;
ImgLoader.display(CompleteActivity.this, avatarUrl, userAvatar);
//txtChoose.setVisibility(View.GONE);
}, isCamera -> {
if (isCamera) {
cameraUtil.getImageByCamera();
} else {
cameraUtil.getImageByAlumb();
}
});
new XPopup.Builder(mContext).asCustom(userAvatarPopup).show();
}
private void changeSex(int i) {
sex = i;
if (sex == 0) {
userSex1.setTextColor(getResources().getColor(R.color.white));
userSex2.setTextColor(getResources().getColor(R.color.text_gray));
userSex1.setBackgroundResource(R.mipmap.icon_user_sex_02);
userSex2.setBackgroundResource(R.mipmap.icon_user_sex_00);
} else {
userSex1.setTextColor(getResources().getColor(R.color.text_gray));
userSex2.setTextColor(getResources().getColor(R.color.white));
userSex1.setBackgroundResource(R.mipmap.icon_user_sex_00);
userSex2.setBackgroundResource(R.mipmap.icon_user_sex_01);
}
}
}

View File

@ -201,12 +201,12 @@ public class LoginActivity extends AbsOTOActivity {
}
}
});
}
//注册
private void register() {
startActivity(new Intent(mContext, RegisterActivity.class));
//RouteManager.forwardCompleteActivity();
}
//忘记密码
@ -235,19 +235,18 @@ public class LoginActivity extends AbsOTOActivity {
loadingDialog = new LoadingDialog();
loadingDialog.show(getSupportFragmentManager(), "LoadingDialog");
loadingDialog.setShowText(getString(R.string.login_ing));
OTONetManager.getInstance(mContext)
.login(phoneNum, pwd, uuid, new com.yunbao.common.http.base.HttpCallback<IMLoginModel>() {
@Override
public void onSuccess(IMLoginModel data) {
onLoginSuccess(data);
}
OTONetManager.getInstance(mContext).login(phoneNum, pwd, uuid, new com.yunbao.common.http.base.HttpCallback<IMLoginModel>() {
@Override
public void onSuccess(IMLoginModel data) {
onLoginSuccess(data);
}
@Override
public void onError(String error) {
ToastUtil.show(error);
loadingDialog.dismiss();
}
});
@Override
public void onError(String error) {
ToastUtil.show(error);
loadingDialog.dismiss();
}
});
hideKeyboard(mEditPwd);
}
@ -283,46 +282,44 @@ public class LoginActivity extends AbsOTOActivity {
* 获取用户信息
*/
private void getBaseUserInfo() {
OTONetManager.getInstance(mContext)
.getBaseInfos(true, new com.yunbao.common.http.base.HttpCallback<com.shayu.onetoone.bean.UserBean>() {
OTONetManager.getInstance(mContext).getBaseInfos(true, new com.yunbao.common.http.base.HttpCallback<com.shayu.onetoone.bean.UserBean>() {
@Override
public void onSuccess(com.shayu.onetoone.bean.UserBean data) {
RongcloudIMManager.connectIM(mContext);
OTONetManager.getInstance(mContext).getRandJoinAnchor(new com.yunbao.common.http.base.HttpCallback<JoinAnchorBean>() {
@Override
public void onSuccess(com.shayu.onetoone.bean.UserBean data) {
RongcloudIMManager.connectIM(mContext);
OTONetManager.getInstance(mContext)
.getRandJoinAnchor(new com.yunbao.common.http.base.HttpCallback<JoinAnchorBean>() {
@Override
public void onSuccess(JoinAnchorBean data) {
if (mFirstLogin) {
IMLoginManager.get(mContext).setNewUserGif(true);
IMLoginManager.get(mContext).setisNewUserOne(true);
public void onSuccess(JoinAnchorBean data) {
if (mFirstLogin) {
IMLoginManager.get(mContext).setNewUserGif(true);
IMLoginManager.get(mContext).setisNewUserOne(true);
// MainActivity.forward(EntryActivity.this, false);
if (!StringUtil.isEmpty(data.getHome_zdy_img_us())) {
home_zdy_img_us = data.getHome_zdy_img_us();
home_zdy_img_cn = data.getHome_zdy_img_cn();
}
if (!StringUtil.isEmpty(data.getHome_zdy_pop())) {
NoviceInstructorManager.get(mContext).setHomeZdyPop(data.getHome_zdy_pop());
}
IMLoginManager.get(mContext).setisNewUserOne(true);
IMLoginManager.get(mContext).setNewUserGif(true);
}
loadingDialog.dismiss();
RouteManager.forwardMainActivity();
finish();
}
@Override
public void onError(String error) {
ToastUtil.show(error);
}
});
if (!StringUtil.isEmpty(data.getHome_zdy_img_us())) {
home_zdy_img_us = data.getHome_zdy_img_us();
home_zdy_img_cn = data.getHome_zdy_img_cn();
}
if (!StringUtil.isEmpty(data.getHome_zdy_pop())) {
NoviceInstructorManager.get(mContext).setHomeZdyPop(data.getHome_zdy_pop());
}
IMLoginManager.get(mContext).setisNewUserOne(true);
IMLoginManager.get(mContext).setNewUserGif(true);
}
loadingDialog.dismiss();
RouteManager.forwardMainActivity();
finish();
}
@Override
public void onError(String error) {
ToastUtil.show(error);
}
});
}
@Override
public void onError(String error) {
}
});
}

View File

@ -25,6 +25,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.DeviceUtils;
import com.blankj.utilcode.util.GsonUtils;
import com.blankj.utilcode.util.StringUtils;
import com.fm.openinstall.OpenInstall;
import com.fm.openinstall.listener.AppInstallAdapter;
import com.fm.openinstall.model.AppData;
@ -33,6 +34,7 @@ import com.sahooz.library.CountryPicker;
import com.sahooz.library.OnPick;
import com.shayu.onetoone.R;
import com.shayu.onetoone.activity.MainActivity;
import com.shayu.onetoone.manager.RouteManager;
import com.shayu.onetoone.utils.MainHttpUtil;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
@ -52,6 +54,7 @@ import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.LiveRoomCheckLivePresenter;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.SpUtil;
import com.yunbao.common.utils.ToastUtil;
import org.greenrobot.eventbus.EventBus;
@ -121,8 +124,8 @@ public class RegisterActivity extends AbsActivity {
getUuidDevice();
getPromoCode();
mGetCode =mContext.getString(R.string.reg_get_code);
mGetCodeAgain =mContext.getString(R.string.reg_get_code_again);
mGetCode = mContext.getString(R.string.reg_get_code);
mGetCodeAgain = mContext.getString(R.string.reg_get_code_again);
mTvCountryCodeClick();
mEditPhone.addTextChangedListener(new TextWatcher() {
@Override
@ -280,9 +283,9 @@ public class RegisterActivity extends AbsActivity {
} else if (i == R.id.btn_register) {
register();
} else if (i == R.id.btn_tip2) {
WebViewActivity.forward(mContext, HtmlConfig.REG_PRIVCAY1,false);
WebViewActivity.forward(mContext, HtmlConfig.REG_PRIVCAY1, false);
} else if (i == R.id.btn_tip3) {
WebViewActivity.forward(mContext, HtmlConfig.REG_PRIVCAY2,false);
WebViewActivity.forward(mContext, HtmlConfig.REG_PRIVCAY2, false);
}
}
@ -362,12 +365,12 @@ public class RegisterActivity extends AbsActivity {
mDialog.show();
}
String ti = "";
if (edit_invitecode_2.getText().toString().trim().equals("此設備已註冊")){
if (edit_invitecode_2.getText().toString().trim().equals("此設備已註冊")) {
ti = "";
}else{
} else {
ti = edit_invitecode_2.getText().toString().trim();
}
MainHttpUtil.register(UserID,ti, phoneNum, mPromoCode, mUuidDevice, mCountryCode, pwd, pwd2, code, new HttpCallback() {
MainHttpUtil.register(UserID, ti, phoneNum, mPromoCode, mUuidDevice, mCountryCode, pwd, pwd2, code, new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0) {
@ -402,25 +405,25 @@ public class RegisterActivity extends AbsActivity {
//获取自定义数据
if (appData.getData() != null && !appData.getData().equals("")) {
JSONObject data = JSON.parseObject(appData.getData());
if (CommonAppConfig.IS_GOOGLE_PLAY == true) {
if (CommonAppConfig.IS_GOOGLE_PLAY == true) {
yqm_view.setVisibility(View.VISIBLE);
MainHttpUtil.getDeviceLoginType(new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if(code == 201){
if (code == 201) {
edit_invitecode_2.setText("此設備已註冊");
edit_invitecode_2.setEnabled(false);
}
}
});
}else{
yqm_view.setVisibility(View.GONE);
//推广的码
} else {
yqm_view.setVisibility(View.GONE);
//推广的码
mPromoCode = data.getString("admin_id") + "";
//用户的码
UserID = data.getString("user_id") + "";
}
Log.d("OpenInstall", UserID+"appData.getData()1111= " + mPromoCode);
Log.d("OpenInstall", UserID + "appData.getData()1111= " + mPromoCode);
}
}
});
@ -483,41 +486,35 @@ public class RegisterActivity extends AbsActivity {
@Override
public void run() {
IMLoginModel userInfo = IMLoginManager.get(activity).getUserInfo();
HttpClient.getInstance().post("Home.getRandJoinAnchor", "Home.getRandJoinAnchor")
.params("uid", userInfo.getId())
.params("token", userInfo.getToken())
.execute(new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (info[0] != null) {
JSONObject obj = JSON.parseObject(info[0]);
IMLoginManager.get(activity).setisNewUserOne(true);
IMLoginManager.get(activity).setNewUserGif(true);
if (obj.containsKey("home_zdy_img_us")) {
home_zdy_img_us = obj.getString("home_zdy_img_us");
home_zdy_img_cn = obj.getString("home_zdy_img_cn");
}
gotoLive(obj.getString("anchor_id"));
if (obj.containsKey("home_zdy_pop")) {
NoviceInstructorManager.get(mContext).setHomeZdyPop(obj.getString("home_zdy_pop"));
}
jumpMain(false);
} else {
jumpMain(false);
}
// EventBus.getDefault().post(new RegSuccessEvent());
HttpClient.getInstance().post("Home.getRandJoinAnchor", "Home.getRandJoinAnchor").params("uid", userInfo.getId()).params("token", userInfo.getToken()).execute(new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (info[0] != null) {
JSONObject obj = JSON.parseObject(info[0]);
IMLoginManager.get(activity).setisNewUserOne(true);
IMLoginManager.get(activity).setNewUserGif(true);
if (obj.containsKey("home_zdy_img_us")) {
home_zdy_img_us = obj.getString("home_zdy_img_us");
home_zdy_img_cn = obj.getString("home_zdy_img_cn");
}
});
gotoLive(obj.getString("anchor_id"));
if (obj.containsKey("home_zdy_pop")) {
NoviceInstructorManager.get(mContext).setHomeZdyPop(obj.getString("home_zdy_pop"));
}
jumpMain(false);
} else {
jumpMain(false);
}
// EventBus.getDefault().post(new RegSuccessEvent());
}
});
}
};
private void jumpMain(boolean showInvite) {
Intent intent = new Intent(activity, MainActivity.class);
intent.putExtra(Constants.SHOW_INVITE, showInvite);
startActivity(intent);
RouteManager.forwardCompleteActivity();
}
private void gotoLive(final String live_id) {
LiveHttpUtil.getLiveInfo(live_id, new HttpCallback() {
@Override

View File

@ -0,0 +1,109 @@
package com.shayu.onetoone.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.shayu.onetoone.R;
import com.yunbao.common.bean.UserAvatarSelectBean;
import com.yunbao.common.custom.RatioRoundImageView;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.interfaces.OnItemClickListener;
import java.util.ArrayList;
import java.util.List;
public class UserAvatarSelectAdapter extends RecyclerView.Adapter<UserAvatarSelectAdapter.AvatarSelectViewHolder> {
private Context mContext;
private List<UserAvatarSelectBean> list = new ArrayList<>();
private OnItemClickListener<UserAvatarSelectBean> onClickListener;
private int selectId = -1;
private int defId = -1;
private UserAvatarSelectBean selectInfo;
public void setList(List<UserAvatarSelectBean> list) {
this.list = list;
notifyDataSetChanged();
}
public int getSelect() {
if (selectId == -1 && getItemCount() > 0) {
return list.get(0).getId();
}
return selectId;
}
public void setOnClickListener(OnItemClickListener<UserAvatarSelectBean> onClickListener) {
this.onClickListener = onClickListener;
}
public int getDefId() {
return defId;
}
public UserAvatarSelectAdapter(Context mContext) {
this.mContext = mContext;
}
@NonNull
@Override
public AvatarSelectViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new AvatarSelectViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_user_avatar_select, parent, false));
}
@Override
public void onBindViewHolder(@NonNull AvatarSelectViewHolder holder, int position) {
holder.setData(list.get(position), position);
}
@Override
public int getItemCount() {
return list.size();
}
public void setDef(int id) {
this.defId = id;
}
public class AvatarSelectViewHolder extends RecyclerView.ViewHolder {
private View hide;
private View show;
private RatioRoundImageView avatar;
public AvatarSelectViewHolder(@NonNull View itemView) {
super(itemView);
hide = itemView.findViewById(R.id.hideCover);
show = itemView.findViewById(R.id.showCover);
avatar = itemView.findViewById(R.id.avatar);
itemView.setOnClickListener(v -> {
selectInfo = (UserAvatarSelectBean) v.getTag();
selectId = selectInfo.getId();
notifyDataSetChanged();
onClickListener.onItemClick(selectInfo, defId);
});
}
public void setData(UserAvatarSelectBean bean, int position) {
ImgLoader.display(itemView.getContext(), bean.getPath(), avatar);
if (selectId == -1 && bean.getChecked() == 1) {
selectId = bean.getId();
defId = bean.getId();
selectInfo = bean;
}
hide.setVisibility(View.GONE);
/*if (select == bean.getId()) {
show.setVisibility(View.VISIBLE);
hide.setVisibility(View.GONE);
} else {
show.setVisibility(View.INVISIBLE);
hide.setVisibility(View.VISIBLE);
}*/
itemView.setTag(bean);
}
}
}

View File

@ -0,0 +1,37 @@
package com.shayu.onetoone.bean;
import com.yunbao.common.bean.BaseModel;
import java.util.List;
public class CustomBean extends BaseModel {
public int code;
public String msg;
public List<String> info;
public void setCode(int code) {
this.code = code;
}
public int getCode() {
return code;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void setInfo(List<String> info) {
this.info = info;
}
public List<String> getInfo() {
return info;
}
}

View File

@ -9,6 +9,16 @@ public class UserBean extends BaseModel {
UserInfo info;
UserLevel level;
int status; //0 需要跳转到 编辑资料页面
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public UserBean() {
}
@ -36,7 +46,7 @@ public class UserBean extends BaseModel {
this.level = level;
}
public static class UserInfo{
public static class UserInfo {
private int id;
private String label_id;
private String cn_label;
@ -267,7 +277,7 @@ public class UserBean extends BaseModel {
}
}
public static class UserLevel{
public static class UserLevel {
private int id;
private int wealth;
private int wealth_level;

View File

@ -6,6 +6,7 @@ import android.util.Log;
import com.alibaba.fastjson.JSONObject;
import com.shayu.onetoone.bean.AvatarBean;
import com.shayu.onetoone.bean.CustomBean;
import com.shayu.onetoone.bean.FollowBean;
import com.shayu.onetoone.bean.GiftBean;
import com.shayu.onetoone.bean.GreetBean;
@ -23,6 +24,7 @@ import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.HttpCallbackModel;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.UserAvatarSelectBean;
import com.yunbao.common.http.ResponseModel;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.manager.IMLoginManager;
@ -651,10 +653,11 @@ public class OTONetManager {
}
}).isDisposed();
}
public void getHomeRank(String type,String date, HttpCallback<List<HomeRankBean>> callback) {
public void getHomeRank(String type, String date, HttpCallback<List<HomeRankBean>> callback) {
API.get().otoApi(mContext)
.getHomeRank(type,date)
.getHomeRank(type, date)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(model -> {
@ -676,4 +679,64 @@ public class OTONetManager {
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
return MultipartBody.Part.createFormData("file", file.getName(), requestBody);
}
/**
* 获取系统头像
*
* @param callback
*/
public void getSystemUserAvatar(HttpCallback<List<UserAvatarSelectBean>> callback) {
API.get().otoApi(mContext)
.getSystemUserAvatar(CommonAppConfig.getInstance().getUid())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<List<UserAvatarSelectBean>>>() {
@Override
public void accept(ResponseModel<List<UserAvatarSelectBean>> objectResponseModel) throws Exception {
if (objectResponseModel.getData().getCode() == 0) {
callback.onSuccess(objectResponseModel.getData().getInfo());
} else {
callback.onError(objectResponseModel.getData().getMsg());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(com.yunbao.common.R.string.net_error));
}
}
}).isDisposed();
}
/**
* 设置基本资料
*/
public void setInfo(
String avatar,
String user_nicename,
int sex,
String birthday,
HttpCallback<HttpCallbackModel> callback) {
API.get().otoApi(mContext).setInfo(avatar, user_nicename, sex, birthday)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<List<BaseModel>>>() {
@Override
public void accept(ResponseModel<List<BaseModel>> listResponseModel) throws Exception {
if (listResponseModel.getData().getCode() == 0) {
callback.onSuccess(new HttpCallbackModel(listResponseModel.getData().getCode(), listResponseModel.getData().getMsg()));
} else {
callback.onError(listResponseModel.getData().getMsg());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
}
}).isDisposed();
}
}

View File

@ -16,41 +16,63 @@ public class RouteManager {
public static final String ACTIVITY_WEB_VIEW = "/activity/WebViewActivity";
public static final String ACTIVITY_HOME_RANK = "/activity/HomepageRankingActivity";
public static final String ACTIVITY_HOME_SEARCH = "/activity/HomeSearchActivity";
public static final String PATH_EDITPROFILE = "/main/EditProfileActivity";
//设置基本资料
public static final String ACTIVITY_COMPLETE = "/activity/CompleteActivity";
//选择标签
public static final String ACTIVITY_CHOOSE_LABEL = "/activity/ChooseLabelActivity";
/**
* 选择标签
*/
public static void forwardChooseActivity() {
ARouter.getInstance().build(ACTIVITY_CHOOSE_LABEL).navigation();
}
/**
* 修改个人资料
*/
public static void forwardEditProfileActivity() {
ARouter.getInstance().build(PATH_EDITPROFILE).navigation();
}
/**
* 填写基础资料
*/
public static void forwardCompleteActivity() {
ARouter.getInstance().build(ACTIVITY_COMPLETE).navigation();
}
public static void forwardMainActivity() {
ARouter.getInstance().build(ACTIVITY_MAIN)
.navigation();
ARouter.getInstance().build(ACTIVITY_MAIN).navigation();
}
public static void forwardMsgMoreConfigActivity() {
ARouter.getInstance().build(ACTIVITY_MSG_MORE_CONFIG_ACTIVITY)
.navigation();
ARouter.getInstance().build(ACTIVITY_MSG_MORE_CONFIG_ACTIVITY).navigation();
}
public static void forwardMsgChatActivity() {
ARouter.getInstance().build(ACTIVITY_MSG_CHAT)
.navigation();
ARouter.getInstance().build(ACTIVITY_MSG_CHAT).navigation();
}
public static void forwardEntryActivity() {
ARouter.getInstance().build(ACTIVITY_ENTRY)
.navigation();
ARouter.getInstance().build(ACTIVITY_ENTRY).navigation();
}
public static void forwardLoginActivity() {
ARouter.getInstance().build(ACTIVITY_LOGIN)
.navigation();
ARouter.getInstance().build(ACTIVITY_LOGIN).navigation();
}
public static void forwardWebViewActivity(String title, String url) {
ARouter.getInstance().build(ACTIVITY_WEB_VIEW)
.withString("title", title)
.withString("url", url)
.navigation();
ARouter.getInstance().build(ACTIVITY_WEB_VIEW).withString("title", title).withString("url", url).navigation();
}
public static void forwardActivity(String path) {
ARouter.getInstance().build(path)
.navigation();
ARouter.getInstance().build(path).navigation();
}

View File

@ -1,6 +1,7 @@
package com.shayu.onetoone.network;
import com.shayu.onetoone.bean.AvatarBean;
import com.shayu.onetoone.bean.CustomBean;
import com.shayu.onetoone.bean.FollowBean;
import com.shayu.onetoone.bean.GiftBean;
import com.shayu.onetoone.bean.GreetBean;
@ -14,7 +15,9 @@ import com.shayu.onetoone.bean.SystemMessageBean;
import com.shayu.onetoone.bean.TargetUserInfoBean;
import com.shayu.onetoone.bean.UserBean;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.HttpCallbackModel;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.UserAvatarSelectBean;
import com.yunbao.common.http.ResponseModel;
import java.util.List;
@ -137,23 +140,41 @@ public interface OneToOneApi {
@GET("/api/public/?service=Friendappmsg.giftList")
Observable<ResponseModel<List<GiftBean>>> getGiftList();
@GET("/api/public/?service=Friendappmoney.info")
Observable<ResponseModel<PurseBean>> getPurseInfo();
@GET("/api/public/?service=User.setAttents")
Observable<ResponseModel<List<FollowBean>>> follow(@Query("touid")String toUid);
Observable<ResponseModel<List<FollowBean>>> follow(@Query("touid") String toUid);
/**
*
* @param type 1魅力榜 2财富榜
* @param date 1日榜 2周榜
*/
@GET("/api/public/?service=Friendapprank.list")
Observable<ResponseModel<List<HomeRankBean>>> getHomeRank(
@Query("type")String type,
@Query("date")String date
@Query("type") String type,
@Query("date") String date
);
/**
* 设置基本信息
*/
@FormUrlEncoded
@POST("/api/public/?service=Friendappinfos.setInfo")
Observable<ResponseModel<List<BaseModel>>> setInfo(
@Field("avatar") String avatar,
@Field("user_nicename") String userNicename,
@Field("sex") int sex,
@Field("birthday") String birthday
);
/**
* 获取系统默认头像列表
*/
@GET("/api/public/?service=Userhome.getDefaultAvatarList")
Observable<ResponseModel<List<UserAvatarSelectBean>>> getSystemUserAvatar(@Query("user_id") String uid);
}

View File

@ -0,0 +1,123 @@
package com.shayu.onetoone.view;
import android.content.Context;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.lxj.xpopup.core.BottomPopupView;
import com.shayu.onetoone.R;
import com.shayu.onetoone.adapter.UserAvatarSelectAdapter;
import com.shayu.onetoone.manager.OTONetManager;
import com.shayu.onetoone.manager.RouteManager;
import com.yunbao.common.bean.UserAvatarSelectBean;
import com.yunbao.common.custom.ItemDecoration;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.OnItemClickListener;
import java.util.ArrayList;
import java.util.List;
public class UserAvatarPopup extends BottomPopupView implements View.OnClickListener {
RecyclerView recyclerView;
private ImageView camera;
private ImageView album;
private Context mContext;
UserAvatarSelectAdapter adapter;
private OnItemClickListener onItemClickListener;
public interface OnItemClickListener<T> {
void onItemClick(String userAvatar);
}
private onIsCameraClickListener onIsCameraClickListener;
public interface onIsCameraClickListener {
void onIsCamera(boolean isCamera);
}
public UserAvatarPopup(@NonNull Context context, OnItemClickListener onItemClickListener, onIsCameraClickListener onIsCameraClickListener) {
super(context);
this.mContext = context;
this.onIsCameraClickListener = onIsCameraClickListener;
this.onItemClickListener = onItemClickListener;
}
@Override
public void onClick(View v) {
}
// 返回自定义弹窗的布局
@Override
protected int getImplLayoutId() {
return R.layout.dialog_user_avatar;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
initView();
initDate();
}
/**
* 加载系统头像
*/
private void initDate() {
adapter = new UserAvatarSelectAdapter(mContext);
recyclerView.setLayoutManager(new GridLayoutManager(mContext, 4));
ItemDecoration decoration1 = new ItemDecoration(mContext, 0x00000000, 0, 0);
decoration1.setOnlySetItemOffsetsButNoDraw(true);
recyclerView.addItemDecoration(decoration1);
recyclerView.setAdapter(adapter);
adapter.setOnClickListener(new com.yunbao.common.interfaces.OnItemClickListener<UserAvatarSelectBean>() {
@Override
public void onItemClick(UserAvatarSelectBean bean, int position) {
onItemClickListener.onItemClick(bean.getPath());
dismiss();
}
});
OTONetManager.getInstance(mContext).getSystemUserAvatar(new HttpCallback<List<UserAvatarSelectBean>>() {
@Override
public void onSuccess(List<UserAvatarSelectBean> data) {
adapter.setList(data);
}
@Override
public void onError(String error) {
adapter.setList(new ArrayList<>());
}
});
}
private void initView() {
recyclerView = findViewById(R.id.recyclerView);
camera = findViewById(R.id.camera);
album = findViewById(R.id.album);
camera.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
onIsCameraClickListener.onIsCamera(true);
dialog.dismiss();
}
});
album.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
onIsCameraClickListener.onIsCamera(false);
dialog.dismiss();
}
});
}
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
<solid android:color="#F4F7FC" />
</shape>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#FFC300"/>
</shape>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#99000000"/>
</shape>

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="15dp">
<TextView
android:id="@+id/next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:padding="10dp"
android:text="跳过"
android:textColor="@color/black2"
android:textSize="14sp" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="我的标签"
android:textColor="@color/black2"
android:textSize="16sp" />
<com.xuexiang.xui.widget.flowlayout.FlowTagLayout
android:id="@+id/myLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_marginBottom="10dp"
app:ftl_check_mode="none" />
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="@mipmap/bg_login"
@ -10,137 +9,148 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@mipmap/bg_w">
android:background="@mipmap/bg_w"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="80dp"
android:layout_marginTop="120dp"
android:gravity="center"
android:text="完善资料"
android:text="完善个人信息"
android:textColor="#FFFFFF"
android:textSize="33sp"
android:textStyle="bold" />
<RelativeLayout
android:id="@+id/editHead"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_gravity="center"
android:layout_marginTop="10dp">
android:layout_marginTop="20dp">
<ImageView
android:layout_width="90dp"
android:layout_height="90dp"
android:background="@color/red"/>
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/userAvatar"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_centerHorizontal="true"
android:scaleType="centerCrop"
android:src="@mipmap/icon_avatar_placeholder"
app:riv_oval="true" />
<TextView
android:id="@+id/text_choose"
android:layout_width="70dp"
android:layout_height="30dp"
android:textSize="12sp"
android:textColor="#FFFFFF"
android:gravity="center"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="@drawable/background_8f7cdf"
android:text="去选择"/>
android:gravity="center"
android:text="去选择"
android:textColor="#FFFFFF"
android:textSize="12sp" />
</RelativeLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="60dp"
android:text="昵称"
android:textColor="#ff333333"
android:layout_marginTop="60dp"
android:layout_marginLeft="15dp"
android:textSize="16sp"/>
android:textSize="16sp" />
<EditText
android:id="@+id/userNickName"
android:layout_width="match_parent"
android:layout_height="47dp"
android:background="@mipmap/ws_ind"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:textColor="#999999"
android:background="@mipmap/ws_ind"
android:gravity="center"
android:maxEms="15"
android:paddingBottom="5dp"
android:textColor="#999999"
android:textColorHint="#999999"
android:textSize="14sp"/>
android:textSize="14sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="20dp"
android:text="性别"
android:textColor="#ff333333"
android:layout_marginTop="20dp"
android:layout_marginLeft="15dp"
android:textSize="16sp"/>
android:textSize="16sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/user_sex_1"
android:layout_width="119dp"
android:layout_height="45dp"
android:layout_weight="1"
android:background="@mipmap/wi_c"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:textColor="#999999"
android:layout_weight="1"
android:background="@mipmap/icon_user_sex_00"
android:gravity="center"
android:textColorHint="#999999"
android:text="女"
android:textSize="14sp"/>
android:textColor="#999999"
android:textColorHint="#999999"
android:textSize="14sp" />
<TextView
android:id="@+id/user_sex_2"
android:layout_width="119dp"
android:layout_height="45dp"
android:layout_weight="1"
android:background="@mipmap/wi_c"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:textColor="#999999"
android:layout_weight="1"
android:background="@mipmap/icon_user_sex_00"
android:gravity="center"
android:textColorHint="#999999"
android:text="男"
android:textSize="14sp"/>
android:textColor="#999999"
android:textColorHint="#999999"
android:textSize="14sp" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="20dp"
android:text="生日"
android:textColor="#ff333333"
android:layout_marginTop="20dp"
android:layout_marginLeft="15dp"
android:textSize="16sp"/>
android:textSize="16sp" />
<TextView
android:id="@+id/userBirthday"
android:layout_width="match_parent"
android:layout_height="47dp"
android:background="@mipmap/ws_ind"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:textColor="#999999"
android:background="@mipmap/ws_ind"
android:gravity="center"
android:paddingBottom="5dp"
android:textColor="#999999"
android:textColorHint="#999999"
android:textSize="14sp"/>
android:textSize="14sp" />
<Button
android:id="@+id/btn_register"
android:layout_width="match_parent"
android:layout_height="47dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="30dp"
android:layout_marginRight="30dp"
android:background="@drawable/background_8f7cdf"
android:gravity="center"
android:onClick="registerClick"
android:text="完成"
android:textColor="@color/white"
android:textSize="16sp"
/>
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="300dp"
android:background="@drawable/bg_user_avatar"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="4"
tools:itemCount="18"
tools:listitem="@layout/item_user_avatar_select" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="20dp"
android:gravity="center">
<ImageView
android:id="@+id/camera"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="1"
android:src="@mipmap/icon_camera" />
<ImageView
android:id="@+id/album"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="1"
android:src="@mipmap/icon_album" />
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,54 @@
<?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="70dp"
android:layout_height="70dp"
android:layout_marginStart="10dp"
android:layout_marginTop="20dp">
<View
android:id="@+id/showCover"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_user_avatar_select_selected"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.yunbao.common.custom.RatioRoundImageView
android:id="@+id/avatar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_marginStart="2dp"
android:layout_marginTop="2dp"
android:layout_marginEnd="2dp"
android:layout_marginBottom="2dp"
android:src="@mipmap/icon_green_science"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:ri_ratio="0.5"
app:riv_oval="true" />
<View
android:id="@+id/hideCover"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="2dp"
android:layout_marginTop="2dp"
android:layout_marginEnd="2dp"
android:layout_marginBottom="2dp"
android:background="@drawable/bg_user_avatar_select_unselected"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="invisible" />
</androidx.constraintlayout.widget.ConstraintLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="rc_white_color">#F7F7F7</color>
<color name="text_gray">#999999</color>
</resources>

View File

@ -181,7 +181,7 @@ dependencies {
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
api 'com.jakewharton.rxbinding3:rxbinding:3.1.0'
//loading样式库
api 'com.wang.avi:library:2.1.3'
api 'com.wang.avi:library:2.1.3'
api 'com.google.firebase:firebase-messaging:23.0.6'
api 'com.google.firebase:firebase-analytics:21.1.0'
// api 'com.huawei.hms:push:4.0.2.300'
@ -201,6 +201,12 @@ dependencies {
api 'com.google.android.gms:play-services-auth:15.0.0'
api 'com.google.android.material:material:1.4.0'
api 'com.contrarywind:Android-PickerView:4.1.9'
//UI框架
api 'com.github.xuexiangjys:XUI:1.1.6'
api 'com.github.xuexiangjys.XUtil:xutil-core:2.0.0'
// api files('libs/svgaplayer-release-v1.2.1.aar')
}

View File

@ -82,4 +82,5 @@
<color name="gray_f6f7fb">#F6F7FB</color>
<color name="gray_f6f6f6f6">#FFF6F6F6</color>
<color name="blue01">#A279E4</color>
</resources>

View File

@ -21,7 +21,6 @@
android:textColor="@color/textColor"
android:textSize="14sp" />
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/avatar"
android:layout_width="46dp"
@ -313,8 +312,8 @@
android:layout_marginRight="25dp"
android:ellipsize="end"
android:gravity="right"
android:singleLine="true"
android:hint="@string/bind_phone_text"
android:singleLine="true"
android:textColor="#353535"
android:textSize="14sp"
android:textStyle="bold" />

View File

@ -2,8 +2,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="85dp"
android:layout_height="85dp"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginStart="22dp"
android:layout_marginTop="32dp">