Prechádzať zdrojové kódy

个人资料的新盖

jixionghui 4 rokov pred
rodič
commit
9333537655

+ 2 - 1
skWeiChatBaidu/src/main/AndroidManifest.xml

@@ -84,7 +84,8 @@
         android:theme="@style/AppTheme"
         tools:ignore="GoogleAppIndexingWarning"
         tools:replace="android:name">
-        <activity android:name=".ui.me.redpacket.MyRedPacketActivity"/>
+        <activity android:name=".ui.me.MyInfoActivity"/>
+        <activity android:name=".ui.me.redpacket.MyRedPacketActivity" />
         <activity android:name=".ui.backup.ReceiveChatHistoryActivity" />
         <activity
             android:name=".ui.backup.SendChatHistoryActivity"

+ 4 - 1
skWeiChatBaidu/src/main/java/com/liaobo/im/fragment/MeFragment.java

@@ -31,6 +31,7 @@ import com.liaobo.im.ui.dialog.VerifiedDialogView;
 import com.liaobo.im.ui.me.AccessibilityActivity;
 import com.liaobo.im.ui.me.BasicInfoEditActivity;
 import com.liaobo.im.ui.me.MyCollection;
+import com.liaobo.im.ui.me.MyInfoActivity;
 import com.liaobo.im.ui.me.SelectFriendsActivity;
 import com.liaobo.im.ui.me.SettingActivity;
 import com.liaobo.im.ui.me.redpacket.MyRedPacketActivity;
@@ -179,7 +180,9 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
         switch (id) {
             case R.id.info_rl:
                 // 我的资料
-                startActivityForResult(new Intent(getActivity(), BasicInfoEditActivity.class), 1);
+//                startActivityForResult(new Intent(getActivity(), BasicInfoEditActivity.class), 1);
+
+                startActivityForResult(new Intent(getActivity(), MyInfoActivity.class), 1);
                 break;
             case R.id.my_monry:
                 // 我的钱包

+ 578 - 0
skWeiChatBaidu/src/main/java/com/liaobo/im/ui/me/MyInfoActivity.java

@@ -0,0 +1,578 @@
+package com.liaobo.im.ui.me;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.DatePickerDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.v7.widget.SwitchCompat;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.util.Log;
+import android.view.View;
+import android.widget.DatePicker;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.drawable.GlideDrawable;
+import com.bumptech.glide.request.animation.GlideAnimation;
+import com.bumptech.glide.request.target.SimpleTarget;
+import com.bumptech.glide.signature.StringSignature;
+import com.liaobo.im.AppConstant;
+import com.liaobo.im.MyApplication;
+import com.liaobo.im.R;
+import com.liaobo.im.bean.Area;
+import com.liaobo.im.bean.EventAvatarUploadSuccess;
+import com.liaobo.im.bean.User;
+import com.liaobo.im.db.InternationalizationHelper;
+import com.liaobo.im.db.dao.UserAvatarDao;
+import com.liaobo.im.db.dao.UserDao;
+import com.liaobo.im.helper.AvatarHelper;
+import com.liaobo.im.helper.DialogHelper;
+import com.liaobo.im.helper.LoginHelper;
+import com.liaobo.im.ui.base.BaseActivity;
+import com.liaobo.im.ui.other.QRcodeActivity;
+import com.liaobo.im.ui.tool.SelectAreaActivity;
+import com.liaobo.im.util.CameraUtil;
+import com.liaobo.im.util.Constants;
+import com.liaobo.im.util.PreferenceUtils;
+import com.liaobo.im.util.StringUtils;
+import com.liaobo.im.util.TimeUtils;
+import com.liaobo.im.util.ToastUtil;
+import com.liaobo.im.volley.Result;
+import com.liaobo.im.xuan.xuanhttplibrary.okhttp.HttpUtils;
+import com.liaobo.im.xuan.xuanhttplibrary.okhttp.callback.BaseCallback;
+import com.liaobo.im.xuan.xuanhttplibrary.okhttp.result.ObjectResult;
+import com.loopj.android.http.AsyncHttpClient;
+import com.loopj.android.http.AsyncHttpResponseHandler;
+import com.loopj.android.http.RequestParams;
+import com.makeramen.roundedimageview.RoundedImageView;
+
+import org.apache.http.Header;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Map;
+
+import de.greenrobot.event.EventBus;
+import okhttp3.Call;
+
+public class MyInfoActivity extends BaseActivity implements View.OnClickListener {
+
+
+    private RoundedImageView ivAvatar;
+    private TextView tvNickname, tvCommunication, tvPhone, tvBirthday, tvLocation;
+
+//    private ImageView iv_modify_nickname;
+    private EditText edtDiyName;
+    private SwitchCompat switchSex;
+
+    private static final int REQUEST_CODE_CAPTURE_CROP_PHOTO = 1108;
+    private static final int REQUEST_CODE_PICK_CROP_PHOTO = 1109;
+    private static final int REQUEST_CODE_SELECT_LOCATION = 1110;
+    public static final int REQUEST_CODE_SET_ACCOUNT = 1111;
+    private static final int REQUEST_CODE_CROP_PHOTO = 1112;
+    private User mUser;
+    private Uri mNewPhotoUri;
+    private User mTempUserData;
+    private File mCurrentFile;
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_my_info);
+        getSupportActionBar().hide();
+        findViewById(R.id.iv_title_left).setOnClickListener(view -> finish());
+        TextView tvTitle = (TextView) findViewById(R.id.tv_title_center);
+        tvTitle.setText(R.string.my_details);
+        mUser = coreManager.getSelf();
+        if (LoginHelper.isUserValidation(mUser)) {
+
+        }
+        tvNickname = findViewById(R.id.tv_nickname);
+        tvCommunication = findViewById(R.id.tv_communication);
+        tvPhone = findViewById(R.id.tv_phone);
+        tvBirthday = findViewById(R.id.tv_birthday);
+        tvLocation = findViewById(R.id.tv_location);
+        ivAvatar = findViewById(R.id.avatar_img);
+        switchSex = findViewById(R.id.switch_sex);
+        ivAvatar.setOnClickListener(this);
+        findViewById(R.id.rlt_birthday).setOnClickListener(this);
+        findViewById(R.id.rlt_user_location).setOnClickListener(this);
+        findViewById(R.id.rlt_qr_code).setOnClickListener(this);
+        findViewById(R.id.iv_modify_nickname).setOnClickListener(this);
+        findViewById(R.id.tv_update).setOnClickListener(this);
+        edtDiyName = findViewById(R.id.edt_diy_name);
+        edtDiyName.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+            }
+
+            @Override
+            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+            }
+
+            @Override
+            public void afterTextChanged(Editable editable) {
+                mTempUserData.setDescription(editable.toString());
+
+            }
+        });
+
+        switchSex.setOnCheckedChangeListener((c,b)->{
+            if (b){
+                mTempUserData.setSex(1);
+            }else {
+                mTempUserData.setSex(0);
+            }
+
+        });
+        updateUI();
+    }
+    public void initView(){
+
+    }
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()){
+            case R.id.avatar_img:
+                showSelectAvatarDialog();
+                break;
+            case R.id.rlt_birthday:
+                showSelectBirthdayDialog();
+                break;
+            case R.id.rlt_user_location:
+                Intent intent = new Intent(this, SelectAreaActivity.class);
+                intent.putExtra(SelectAreaActivity.EXTRA_AREA_TYPE, Area.AREA_TYPE_PROVINCE);
+                intent.putExtra(SelectAreaActivity.EXTRA_AREA_PARENT_ID, Area.AREA_DATA_CHINA_ID);
+                intent.putExtra(SelectAreaActivity.EXTRA_AREA_DEEP, Area.AREA_TYPE_CITY);
+                startActivityForResult(intent, REQUEST_CODE_SELECT_LOCATION);
+                break;
+            case R.id.rlt_qr_code:
+                Intent intentQrCode = new Intent(this, QRcodeActivity.class);
+                intentQrCode.putExtra("isgroup", false);
+                if (!TextUtils.isEmpty(mUser.getAccount())) {
+                    intentQrCode.putExtra("userid", mUser.getAccount());
+                } else {
+                    intentQrCode.putExtra("userid", mUser.getUserId());
+                }
+                intentQrCode.putExtra("userAvatar", mUser.getUserId());
+                startActivity(intentQrCode);
+                break;
+            case R.id.iv_modify_nickname:
+                showEditNickname();
+                break;
+            case R.id.tv_update:
+                updateUserInfo();
+                break;
+        }
+
+    }
+
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == REQUEST_CODE_CAPTURE_CROP_PHOTO) {// 拍照返回再去裁减
+            if (resultCode == Activity.RESULT_OK) {
+                if (mNewPhotoUri != null) {
+                    Uri o = mNewPhotoUri;
+                    mNewPhotoUri = CameraUtil.getOutputMediaFileUri(this, CameraUtil.MEDIA_TYPE_IMAGE);
+                    mCurrentFile = new File(mNewPhotoUri.getPath());
+                    CameraUtil.cropImage(this, o, mNewPhotoUri, REQUEST_CODE_CROP_PHOTO, 1, 1, 300, 300);
+                } else {
+                    ToastUtil.showToast(this, R.string.c_photo_album_failed);
+                }
+            }
+        } else if (requestCode == REQUEST_CODE_PICK_CROP_PHOTO) {// 选择一张图片,然后立即调用裁减
+            if (resultCode == Activity.RESULT_OK) {
+                if (data != null && data.getData() != null) {
+                    Uri o = data.getData();
+                    mNewPhotoUri = CameraUtil.getOutputMediaFileUri(this, CameraUtil.MEDIA_TYPE_IMAGE);
+                    mCurrentFile = new File(mNewPhotoUri.getPath());
+                    CameraUtil.cropImage(this, o, mNewPhotoUri, REQUEST_CODE_CROP_PHOTO, 1, 1, 300, 300);
+                } else {
+                    ToastUtil.showToast(this, R.string.c_photo_album_failed);
+                }
+            }
+        } else if (requestCode == REQUEST_CODE_CROP_PHOTO) {
+            if (resultCode == Activity.RESULT_OK) {
+                if (mNewPhotoUri != null) {
+                    mCurrentFile = new File(mNewPhotoUri.getPath());
+                    AvatarHelper.getInstance().displayUrl(mNewPhotoUri.toString(), ivAvatar);
+                    // 上传头像
+                    uploadAvatar(mCurrentFile);
+                } else {
+                    ToastUtil.showToast(this, R.string.c_crop_failed);
+                }
+            }
+        } else if (requestCode == REQUEST_CODE_SELECT_LOCATION) {// 选择城市
+            if (resultCode == RESULT_OK && data != null) {
+                int countryId = data.getIntExtra(SelectAreaActivity.EXTRA_COUNTRY_ID, 0);
+                int provinceId = data.getIntExtra(SelectAreaActivity.EXTRA_PROVINCE_ID, 0);
+                int cityId = data.getIntExtra(SelectAreaActivity.EXTRA_CITY_ID, 0);
+                int countyId = data.getIntExtra(SelectAreaActivity.EXTRA_COUNTY_ID, 0);
+
+                String province_name = data.getStringExtra(SelectAreaActivity.EXTRA_PROVINCE_NAME);
+                String city_name = data.getStringExtra(SelectAreaActivity.EXTRA_CITY_NAME);
+                /*String county_name = data.getStringExtra(SelectAreaActivity.EXTRA_COUNTY_ID);*/
+                tvLocation.setText(province_name + "-" + city_name);
+
+                mTempUserData.setCountryId(countryId);
+                mTempUserData.setProvinceId(provinceId);
+                mTempUserData.setCityId(cityId);
+                mTempUserData.setAreaId(countyId);
+            }
+        } else if (requestCode == REQUEST_CODE_SET_ACCOUNT) {
+            if (resultCode == RESULT_OK && data != null) {
+                String account = data.getStringExtra(AppConstant.EXTRA_USER_ACCOUNT);
+                mTempUserData.setAccount(account);
+                mTempUserData.setSetAccountCount(1);
+                initAccount();
+            }
+        }
+    }
+
+
+
+    private void showEditNickname() {
+        EditText editText = new EditText(this);
+        final AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                        .setView(editText)
+                        .setTitle(R.string.modify_nickname)
+                .setPositiveButton(R.string.confirm, (d,i)->{
+                    String nickName = edtDiyName.getText().toString();
+                    tvNickname.setText(nickName);
+
+                    mTempUserData.setNickName(nickName);
+
+                })
+                .setNegativeButton(R.string.cancel,(d,i)->{
+
+                });
+        builder.show();
+    }
+
+    private void updateUserInfo() {
+        if (!MyApplication.getInstance().isNetworkActive()) {
+            ToastUtil.showToast(this, R.string.net_exception);
+            return;
+        }
+            if (TextUtils.isEmpty(mTempUserData.getNickName())){
+                ToastUtil.showToast(this,getString(R.string.name_empty_error));
+                return;
+            }
+
+
+        if (!coreManager.getConfig().disableLocationServer) {
+            if (mTempUserData.getCityId() <= 0) {
+                ToastUtil.showToast(this, getString(R.string.live_address_empty_error));
+                return;
+            }
+        }
+
+        if (mUser != null && !mUser.equals(coreManager)) {// 数据改变了,提交数据
+            updateData();
+        } else {
+            finish();
+        }
+    }
+
+
+    private void showSelectAvatarDialog() {
+        String[] items = new String[]{InternationalizationHelper.getString("PHOTOGRAPH"), InternationalizationHelper.getString("ALBUM")};
+        AlertDialog.Builder builder = new AlertDialog.Builder(this).setTitle(InternationalizationHelper.getString("SELECT_AVATARS"))
+                .setSingleChoiceItems(items, 0,
+                        new DialogInterface.OnClickListener() {
+                            @Override
+                            public void onClick(DialogInterface dialog, int which) {
+                                if (which == 0) {
+                                    takePhoto();
+
+                                } else {
+                                    selectPhoto();
+                                }
+                                dialog.dismiss();
+                            }
+                        });
+        builder.show();
+    }
+    @SuppressWarnings("deprecation")
+    private void showSelectBirthdayDialog() {
+        Date date = new Date(mTempUserData.getBirthday() * 1000);
+        DatePickerDialog dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
+            @Override
+            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
+                GregorianCalendar calendar = new GregorianCalendar(year, monthOfYear, dayOfMonth);
+                mTempUserData.setBirthday(TimeUtils.getSpecialBeginTime(tvBirthday, calendar.getTime().getTime() / 1000));
+                long currentTime = System.currentTimeMillis() / 1000;
+                long birthdayTime = calendar.getTime().getTime() / 1000;
+                if (birthdayTime > currentTime) {
+                    ToastUtil.showToast(mContext, R.string.data_of_birth);
+                }
+            }
+        }, date.getYear() + 1900, date.getMonth(), date.getDate());
+        dialog.show();
+    }
+
+
+
+
+    private void takePhoto() {
+        mNewPhotoUri = CameraUtil.getOutputMediaFileUri(this, CameraUtil.MEDIA_TYPE_IMAGE);
+        CameraUtil.captureImage(this, mNewPhotoUri, REQUEST_CODE_CAPTURE_CROP_PHOTO);
+    }
+
+    private void selectPhoto() {
+        CameraUtil.pickImageSimple(this, REQUEST_CODE_PICK_CROP_PHOTO);
+    }
+
+
+
+    private void updateUI() {
+        // clone一份临时数据,用来存数变化的值,返回的时候对比有无变化
+        try {
+            mTempUserData = (User) mUser.clone();
+        } catch (CloneNotSupportedException e) {
+            e.printStackTrace();
+        }
+        switchSex.setChecked(mTempUserData.getSex()==1);
+        if (mTempUserData.getDescription()!=null){
+            edtDiyName.setText(mTempUserData.getDescription());
+            edtDiyName.setSelection(mTempUserData.getDescription().length());
+        }
+        AvatarHelper.getInstance().updateAvatar(mTempUserData.getUserId());
+        // AvatarHelper.getInstance().displayAvatar(mTempData.getUserId(), mAvatarImg, false);
+        displayAvatar(mTempUserData.getUserId());
+
+
+        tvNickname.setText(mTempUserData.getNickName());
+//        if (mTempData.getSex() == 1) {
+//            mSexTv.setText(InternationalizationHelper.getString("JX_Man"));
+//        } else {
+//            mSexTv.setText(InternationalizationHelper.getString("JX_Wuman"));
+//        }
+        tvBirthday.setText(TimeUtils.sk_time_s_long_2_str(mTempUserData.getBirthday()));
+        tvLocation.setText(Area.getProvinceCityString(mTempUserData.getCityId(), mTempUserData.getAreaId()));
+//        mTvDiyName.setText(mTempUserData.getDescription());
+
+        String phoneNumber = coreManager.getSelf().getTelephone();
+        int mobilePrefix = PreferenceUtils.getInt(this, Constants.AREA_CODE_KEY, -1);
+        String sPrefix = String.valueOf(mobilePrefix);
+        // 删除开头的区号,
+        if (phoneNumber.startsWith(sPrefix)) {
+            phoneNumber = phoneNumber.substring(sPrefix.length());
+        }
+        tvPhone.setText(phoneNumber);
+
+        initAccount();
+    }
+
+    public void displayAvatar(final String userId) {
+        DialogHelper.showDefaulteMessageProgressDialog(this);
+        final String mOriginalUrl = AvatarHelper.getAvatarUrl(userId, false);
+        Log.e("zx", "displayAvatar: mOriginalUrl:  " + mOriginalUrl + " uID: " + userId);
+        if (!TextUtils.isEmpty(mOriginalUrl)) {
+            String time = UserAvatarDao.getInstance().getUpdateTime(userId);
+
+            Glide.with(MyApplication.getContext())
+                    .load(mOriginalUrl)
+                    .placeholder(R.drawable.avatar_normal)
+                    .signature(new StringSignature(time))
+                    .dontAnimate()
+                    .error(R.drawable.avatar_normal)
+                    .into(new SimpleTarget<GlideDrawable>() {
+                        @Override
+                        public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) {
+                            DialogHelper.dismissProgressDialog();
+                            ivAvatar.setImageDrawable(resource);
+                        }
+
+                        @Override
+                        public void onLoadFailed(Exception e, Drawable errorDrawable) {
+                            DialogHelper.dismissProgressDialog();
+                            Log.e("zq", "加载原图失败:" + mOriginalUrl);// 该用户未设置头像,网页访问该URL也是404
+                            AvatarHelper.getInstance().displayAvatar(mTempUserData.getNickName(), userId, ivAvatar, true);
+                        }
+                    });
+        } else {
+            DialogHelper.dismissProgressDialog();
+            Log.e("zq", "未获取到原图地址");// 基本上不会走这里
+        }
+    }
+
+    private void initAccount() {
+        if (mTempUserData != null) {
+            if (mTempUserData.getSetAccountCount() == 0) {
+                // 之前未设置过sk号 前往设置
+                findViewById(R.id.rlt_account).setOnClickListener(v -> {
+                    Intent intent = new Intent(mContext, SetAccountActivity.class);
+                    intent.putExtra(AppConstant.EXTRA_USER_ID, mTempUserData.getUserId());
+                    intent.putExtra(AppConstant.EXTRA_NICK_NAME, mTempUserData.getNickName());
+                    startActivityForResult(intent, REQUEST_CODE_SET_ACCOUNT);
+                });
+                findViewById(R.id.iv_communication).setVisibility(View.VISIBLE);
+            } else {
+                findViewById(R.id.rlt_account).setOnClickListener(null);
+                findViewById(R.id.iv_communication).setVisibility(View.INVISIBLE);
+            }
+            if (!TextUtils.isEmpty(mTempUserData.getAccount())) {
+                tvCommunication.setText(mTempUserData.getAccount());
+            }
+
+        }
+    }
+
+
+    private void uploadAvatar(File file) {
+        if (!file.exists()) {
+            // 文件不存在
+            return;
+        }
+        // 显示正在上传的ProgressDialog
+        DialogHelper.showDefaulteMessageProgressDialog(this);
+        RequestParams params = new RequestParams();
+        final String loginUserId = coreManager.getSelf().getUserId();
+        params.put("userId", loginUserId);
+        try {
+            params.put("file1", file);
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        }
+
+        AsyncHttpClient client = new AsyncHttpClient();
+        client.post(coreManager.getConfig().AVATAR_UPLOAD_URL, params, new AsyncHttpResponseHandler() {
+            @Override
+            public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
+                DialogHelper.dismissProgressDialog();
+                boolean success = false;
+                if (arg0 == 200) {
+                    Result result = null;
+                    try {
+                        result = JSON.parseObject(new String(arg2), Result.class);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                    if (result != null && result.getResultCode() == Result.CODE_SUCCESS) {
+                        success = true;
+                    }
+                }
+
+                if (success) {
+                    ToastUtil.showToast(getBaseContext(), R.string.upload_avatar_success);
+                    AvatarHelper.getInstance().updateAvatar(loginUserId);// 更新时间
+                    EventBus.getDefault().post(new EventAvatarUploadSuccess(true));
+                } else {
+                    ToastUtil.showToast(getBaseContext(), R.string.upload_avatar_failed);
+                }
+            }
+
+            @Override
+            public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
+                DialogHelper.dismissProgressDialog();
+                ToastUtil.showToast(getBaseContext(), R.string.upload_avatar_failed);
+            }
+        });
+    }
+
+
+    private void updateData() {
+        Map<String, String> params = new HashMap<>();
+        params.put("access_token", coreManager.getSelfStatus().accessToken);
+        if (!mUser.getNickName().equals(mTempUserData.getNickName())) {
+            params.put("nickname", mTempUserData.getNickName());
+        }
+        if (mUser.getSex() != mTempUserData.getSex()) {
+            params.put("sex", String.valueOf(mTempUserData.getSex()));
+        }
+        if (mUser.getBirthday() != mTempUserData.getBirthday()) {
+            params.put("birthday", String.valueOf(mTempUserData.getBirthday()));
+        }
+        if (mUser.getCountryId() != mTempUserData.getCountryId()) {
+            params.put("countryId", String.valueOf(mTempUserData.getCountryId()));
+        }
+        if (mUser.getProvinceId() != mTempUserData.getProvinceId()) {
+            params.put("provinceId", String.valueOf(mTempUserData.getProvinceId()));
+        }
+        if (mUser.getCityId() != mTempUserData.getCityId()) {
+            params.put("cityId", String.valueOf(mTempUserData.getCityId()));
+        }
+        if (mUser.getAreaId() != mTempUserData.getAreaId()) {
+            params.put("areaId", String.valueOf(mTempUserData.getAreaId()));
+        }
+        if (!mUser.getDescription().equals(mTempUserData.getDescription())){
+            params.put("description", String.valueOf(mTempUserData.getDescription()));
+
+        }
+        DialogHelper.showDefaulteMessageProgressDialog(this);
+
+        HttpUtils.get().url(coreManager.getConfig().USER_UPDATE)
+                .params(params)
+                .build()
+                .execute(new BaseCallback<Void>(Void.class) {
+
+                    @Override
+                    public void onResponse(ObjectResult<Void> result) {
+                        DialogHelper.dismissProgressDialog();
+                        saveData();
+                    }
+
+                    @Override
+                    public void onError(Call call, Exception e) {
+                        DialogHelper.dismissProgressDialog();
+                        ToastUtil.showErrorNet(getBaseContext());
+                    }
+                });
+    }
+
+    private void saveData() {
+        if (!mUser.getNickName().equals(mTempUserData.getNickName())) {
+            coreManager.getSelf().setNickName(mTempUserData.getNickName());
+            UserDao.getInstance().updateNickName(mTempUserData.getUserId(), mTempUserData.getNickName());     // 更新数据库
+        }
+        if (mUser.getSex() != mTempUserData.getSex()) {
+            coreManager.getSelf().setSex(mTempUserData.getSex());
+            UserDao.getInstance().updateSex(mTempUserData.getUserId(), mTempUserData.getSex() + "");          // 更新数据库
+        }
+        if (mUser.getBirthday() != mTempUserData.getBirthday()) {
+            coreManager.getSelf().setBirthday(mTempUserData.getBirthday());
+            UserDao.getInstance().updateBirthday(mTempUserData.getUserId(), mTempUserData.getBirthday() + "");// 更新数据库
+        }
+
+        if (mUser.getCountryId() != mTempUserData.getCountryId()) {
+            coreManager.getSelf().setCountryId(mTempUserData.getCountryId());
+            UserDao.getInstance().updateCountryId(mTempUserData.getUserId(), mTempUserData.getCountryId());
+        }
+        if (mUser.getProvinceId() != mTempUserData.getProvinceId()) {
+            coreManager.getSelf().setProvinceId(mTempUserData.getProvinceId());
+            UserDao.getInstance().updateProvinceId(mTempUserData.getUserId(), mTempUserData.getProvinceId());
+        }
+        if (mUser.getCityId() != mTempUserData.getCityId()) {
+            coreManager.getSelf().setCityId(mTempUserData.getCityId());
+            UserDao.getInstance().updateCityId(mTempUserData.getUserId(), mTempUserData.getCityId());
+        }
+        if (mUser.getAreaId() != mTempUserData.getAreaId()) {
+            coreManager.getSelf().setAreaId(mTempUserData.getAreaId());
+            UserDao.getInstance().updateAreaId(mTempUserData.getUserId(), mTempUserData.getAreaId());
+        }
+        if (!mUser.getDescription().equals(mTempUserData.getDescription())){
+            coreManager.getSelf().setDescription(mTempUserData.getDescription());
+            UserDao.getInstance().updateDescription(mTempUserData.getUserId(), mTempUserData.getDescription());
+        }
+
+        setResult(RESULT_OK);
+        finish();
+    }
+
+}

BIN
skWeiChatBaidu/src/main/res/drawable-xhdpi/icon_modify.png


+ 9 - 0
skWeiChatBaidu/src/main/res/drawable/selector_switch_thumb.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_checked="true"
+        android:drawable="@drawable/shape_thumb_button"/>
+    <item
+        android:state_checked="false"
+        android:drawable="@drawable/shape_thumb_button"/>
+</selector>

+ 9 - 0
skWeiChatBaidu/src/main/res/drawable/selector_switch_track.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_checked="true"
+        android:drawable="@drawable/shape_track_bg"/>
+    <item
+        android:state_checked="false"
+        android:drawable="@drawable/shape_track_bg"/>
+</selector>

+ 6 - 0
skWeiChatBaidu/src/main/res/drawable/shape_bg_blue_radius_8.xml

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

+ 6 - 0
skWeiChatBaidu/src/main/res/drawable/shape_bg_d8d8d8_radius_12.xml

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

+ 6 - 0
skWeiChatBaidu/src/main/res/drawable/shape_thumb_button.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="12dp"/>
+    <solid android:color="@color/white"/>
+
+</shape>

+ 9 - 0
skWeiChatBaidu/src/main/res/drawable/shape_track_bg.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+<corners android:radius="12dp" />
+<solid android:color="#e1e1e1" />
+<stroke
+    android:width="1dp"
+    android:color="#c6c6c6" />
+
+</shape>

+ 1 - 1
skWeiChatBaidu/src/main/res/layout/activity_basic_info_edit.xml

@@ -236,7 +236,7 @@
                         android:id="@+id/city_arrow_img_05"
                         style="@style/IMTbleLine_ArrowImg"
                         android:contentDescription="@string/app_name"
-                        android:visibility="invisible" />
+                        android:visibility="gone" />
                 </RelativeLayout>
 
                 <RelativeLayout

+ 284 - 0
skWeiChatBaidu/src/main/res/layout/activity_my_info.xml

@@ -0,0 +1,284 @@
+<?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="@color/white"
+
+    android:orientation="vertical">
+
+    <include layout="@layout/a_view_actionbar" />
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="150dp"
+            android:background="@drawable/shape_main_bg"
+            android:visibility="visible" />
+
+        <LinearLayout
+
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+
+            <RelativeLayout
+                android:id="@+id/info_rl"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="15dp"
+                android:layout_marginTop="6dp"
+                android:layout_marginEnd="15dp"
+                android:background="@drawable/gray_bg_shadow"
+                android:paddingStart="25dp"
+                android:paddingBottom="24dp">
+
+                <com.makeramen.roundedimageview.RoundedImageView
+                    android:id="@+id/avatar_img"
+                    android:layout_width="78dp"
+                    android:layout_height="78dp"
+
+
+                    android:layout_marginTop="28dp"
+                    android:contentDescription="@string/app_name"
+                    android:scaleType="centerCrop"
+                    android:src="@drawable/avatar_normal"
+
+
+                    app:riv_corner_radius="8dp" />
+
+                <LinearLayout
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="20dp"
+                    android:layout_marginTop="60dp"
+                    android:layout_toEndOf="@+id/avatar_img"
+                    android:orientation="horizontal">
+
+                    <TextView
+                        android:id="@+id/tv_nickname"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="10dp"
+                        android:singleLine="true" />
+
+                    <ImageView
+                        android:id="@+id/iv_modify_nickname"
+                        android:layout_width="20dp"
+                        android:layout_height="20dp"
+                        android:layout_marginStart="10dp"
+                        android:src="@drawable/icon_modify" />
+                </LinearLayout>
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignStart="@+id/avatar_img"
+                    android:layout_alignEnd="@+id/avatar_img"
+                    android:layout_alignBottom="@+id/avatar_img"
+                    android:background="@drawable/shape_modify_avatar"
+                    android:gravity="center"
+                    android:text="@string/modify_avatar"
+                    android:textColor="@color/white" />
+
+                <TextView
+                    android:id="@id/tv_diy_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_below="@+id/avatar_img"
+                    android:layout_marginTop="10dp"
+                    android:text="@string/diy_name"
+                    android:textColor="#333333" />
+
+                <EditText
+                    android:id="@+id/edt_diy_name"
+                    android:layout_width="match_parent"
+                    android:layout_height="28dp"
+                    android:textSize="12sp"
+                    android:gravity="center_vertical"
+                    android:textColor="@color/gray"
+                    android:layout_below="@+id/tv_diy_name"
+                    android:layout_marginTop="10dp"
+                    android:layout_marginEnd="30dp"
+                    android:background="@drawable/shape_bg_d8d8d8_radius_12"
+                    android:paddingStart="4dp"
+                    android:paddingTop="2dp"
+                    android:paddingEnd="4dp"
+                    android:paddingBottom="2dp" />
+            </RelativeLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="15dp"
+                android:layout_marginEnd="15dp"
+                android:background="@drawable/gray_bg_shadow"
+                android:orientation="vertical"
+                android:padding="12dp">
+
+                <RelativeLayout style="@style/IMTbleLine_UP2">
+
+                    <TextView
+                        android:id="@+id/tv_sex"
+                        style="@style/IMTbleLine_TextKey"
+                        android:drawableLeft="@drawable/resume_star_icon"
+                        android:drawablePadding="5dp"
+                        android:text="@string/sex" />
+
+                    <android.support.v7.widget.SwitchCompat
+                        android:id="@+id/switch_sex"
+
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_alignParentEnd="true"
+                        android:layout_centerVertical="true"
+                        android:textOff="@string/sex_woman"
+                        android:textOn="@string/sex_man"
+                        app:showText="true" />
+                </RelativeLayout>
+
+                <RelativeLayout
+                    android:id="@+id/rlt_birthday"
+                    style="@style/IMTbleLine_UP2">
+
+                    <TextView
+                        android:id="@+id/tv_birthday_text"
+                        style="@style/IMTbleLine_TextKey"
+                        android:drawableStart="@drawable/resume_star_icon"
+                        android:drawablePadding="5dp"
+                        android:text="@string/birthday" />
+
+                    <TextView
+                        android:id="@+id/tv_birthday"
+                        style="@style/IMTbleLine_TextValue"
+                        android:layout_toStartOf="@+id/birthday_arrow_img"
+                        android:layout_toEndOf="@+id/tv_birthday_text" />
+
+                    <ImageView
+                        android:id="@+id/birthday_arrow_img"
+                        style="@style/IMTbleLine_ArrowImg"
+                        android:contentDescription="@string/app_name" />
+                </RelativeLayout>
+
+                <RelativeLayout
+                    android:id="@+id/rlt_user_location"
+                    style="@style/IMTbleLine_UP2">
+
+                    <TextView
+                        android:id="@+id/location_text"
+                        style="@style/IMTbleLine_TextKey"
+                        android:drawableStart="@drawable/resume_star_icon"
+                        android:drawablePadding="5dp"
+                        android:text="@string/user_location" />
+
+                    <TextView
+                        android:id="@+id/tv_location"
+
+                        style="@style/IMTbleLine_TextValue"
+                        android:layout_toStartOf="@+id/city_arrow_img"
+                        android:layout_toEndOf="@+id/location_text" />
+
+                    <ImageView
+                        android:id="@+id/city_arrow_img"
+                        style="@style/IMTbleLine_ArrowImg"
+                        android:contentDescription="@string/app_name" />
+                </RelativeLayout>
+
+                <RelativeLayout
+                    android:id="@+id/rlt_qr_code"
+                    style="@style/IMTbleLine_UP2">
+
+                    <TextView
+                        android:id="@+id/city_text_02"
+                        style="@style/IMTbleLine_TextKey"
+                        android:drawablePadding="5dp"
+                        android:text="@string/qrcode" />
+
+                    <TextView
+                        style="@style/IMTbleLine_TextValue"
+                        android:layout_toLeftOf="@+id/city_arrow_img_02"
+                        android:layout_toRightOf="@+id/city_text_02" />
+
+                    <ImageView
+                        android:layout_width="20dp"
+                        android:layout_height="20dp"
+                        android:layout_alignParentRight="true"
+                        android:layout_centerVertical="true"
+                        android:layout_marginRight="30dp"
+                        android:src="@drawable/ic_qr_code" />
+
+                    <ImageView
+                        android:id="@+id/city_arrow_img_02"
+                        style="@style/IMTbleLine_ArrowImg"
+                        android:contentDescription="@string/app_name" />
+                </RelativeLayout>
+
+                <RelativeLayout
+
+                    style="@style/IMTbleLine_UP2">
+
+                    <TextView
+                        android:id="@+id/tvPhoneNumber"
+                        style="@style/IMTbleLine_TextKey"
+                        android:drawablePadding="5dp"
+                        android:text="@string/phone_number" />
+
+                    <TextView
+                        android:id="@+id/tv_phone"
+                        style="@style/IMTbleLine_TextValue"
+                        android:layout_toLeftOf="@+id/city_arrow_img_03"
+                        android:text="" />
+
+                    <ImageView
+                        android:id="@+id/city_arrow_img_03"
+                        style="@style/IMTbleLine_ArrowImg"
+                        android:contentDescription="@string/app_name"
+                        android:visibility="invisible" />
+                </RelativeLayout>
+
+                <RelativeLayout
+                    android:id="@+id/rlt_account"
+                    style="@style/IMTbleLine_UP2">
+
+                    <TextView
+                        style="@style/IMTbleLine_TextKey"
+                        android:drawablePadding="5dp"
+                        android:text="@string/communication" />
+
+                    <TextView
+                        android:id="@+id/tv_communication"
+                        style="@style/IMTbleLine_TextValue"
+                        android:layout_toLeftOf="@+id/iv_communication"
+                        android:selectAllOnFocus="true"
+                        android:text=""
+                        android:textIsSelectable="true" />
+
+                    <ImageView
+                        android:id="@+id/iv_communication"
+                        style="@style/IMTbleLine_ArrowImg"
+                        android:contentDescription="@string/app_name"
+                        android:visibility="invisible" />
+                </RelativeLayout>
+            </LinearLayout>
+
+            <TextView
+                android:id="@+id/tv_update"
+                android:layout_width="match_parent"
+                android:layout_height="48dp"
+                android:layout_margin="24dp"
+                android:background="@drawable/shape_bg_blue_radius_8"
+                android:gravity="center"
+                android:text="@string/update"
+
+                android:textColor="@color/white"
+                android:textSize="20sp" />
+        </LinearLayout>
+
+    </FrameLayout>
+
+
+</LinearLayout>

+ 1 - 1
skWeiChatBaidu/src/main/res/values-zh-rHK/strings.xml

@@ -1678,7 +1678,7 @@ ABCDEFGHIJKLMNOPQRSTUVWXYZ`¬!"£$%^*()~=#{}[];':,./?/*-_+&#060;&#062;&#064;&#03
     <string name="more_info">更多信息</string>
     <string name="setting_nickname">設置備註和標簽</string>
     <string name="nick_name">昵稱:</string>
-    <string name="communication">通訊號</string>
+    <string name="communication">通訊號</string>
     <string name="describe">描述</string>
     <string name="tip_cannot_edit_bulletin">群主或管理員才可編輯公告</string>
     <string name="start_edit">編輯</string>

+ 1 - 1
skWeiChatBaidu/src/main/res/values-zh-rTW/strings.xml

@@ -1676,7 +1676,7 @@ ABCDEFGHIJKLMNOPQRSTUVWXYZ`¬!"£$%^*()~=#{}[];':,./?/*-_+&#060;&#062;&#064;&#03
     <string name="more_info">更多信息</string>
     <string name="setting_nickname">設置備註和標簽</string>
     <string name="nick_name">昵稱:</string>
-    <string name="communication">通訊號</string>
+    <string name="communication">通訊號</string>
     <string name="describe">描述</string>
     <string name="tip_cannot_edit_bulletin">群主或管理員才可編輯公告</string>
     <string name="start_edit">編輯</string>

+ 6 - 2
skWeiChatBaidu/src/main/res/values/strings.xml

@@ -325,7 +325,7 @@ ABCDEFGHIJKLMNOPQRSTUVWXYZ`¬!"£$%^*()~=#{}[];':,./?/*-_+&#060;&#062;&#064;&#03
     <string name="basic_info">基本资料</string>
     <string name="name_align">昵&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;称</string>
     <string name="rename_align">备注</string>
-    <string name="sex_align">性&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;别</string>
+    <string name="sex_align">性别</string>
     <string name="birthday">出生日期</string>
     <string name="residence_align">居&#160;&#160;住&#160;&#160;地</string>
     <string name="select_sex">选择性别</string>
@@ -1738,7 +1738,7 @@ ABCDEFGHIJKLMNOPQRSTUVWXYZ`¬!"£$%^*()~=#{}[];':,./?/*-_+&#060;&#062;&#064;&#03
     <string name="more_info">更多信息</string>
     <string name="setting_nickname">设置备注和标签</string>
     <string name="nick_name">昵称:</string>
-    <string name="communication">通讯号</string>
+    <string name="communication">通讯号</string>
     <string name="describe">描述</string>
 
     <string name="sync_friend">同步好友</string>
@@ -1853,4 +1853,8 @@ ABCDEFGHIJKLMNOPQRSTUVWXYZ`¬!"£$%^*()~=#{}[];':,./?/*-_+&#060;&#062;&#064;&#03
     <string name="select_receiver_hint">请选择领取人</string>
     <string name="text_wish">祝福语</string>
     <string name="modify_avatar">修改头像</string>
+    <string name="my_details">我的详情</string>
+    <string name="user_location">居住地</string>
+    <string name="modify_nickname">修改昵称</string>
+    <string name="update">更新</string>
 </resources>

+ 9 - 0
skWeiChatBaidu/src/main/res/values/styles.xml

@@ -181,6 +181,15 @@
         <item name="android:paddingLeft">20dp</item>
         <item name="android:paddingRight">27dp</item>
     </style>
+    <style name="IMTbleLine_UP2">
+        <item name="android:background">@color/transparent</item>
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:minHeight">50dp</item>
+        <item name="android:paddingLeft">15dp</item>
+        <item name="android:paddingRight">15dp</item>
+    </style>
+
 
     <style name="IMTbleLine_TextKey">
         <item name="android:textSize">@dimen/one_level_title</item>