登录/注册+修改个人信息

M层

public class UserModel {
    private ILogin ilogin;

    public void login(Map<String,String> map){
        OkHttpClient okHttpClient=new OkHttpClient();
        FormBody.Builder formBody=new FormBody.Builder();
        //添加参数
        for (Map.Entry<String, String> entry : map.entrySet()) {
            formBody.add(entry.getKey(),entry.getValue());
        }


        Request request=new Request.Builder().post(formBody.build()).url(ApiUrl.USERLOGIN).build();
        //请求
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                ilogin.gainFail();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                if(!TextUtils.isEmpty(string)) {
                    Gson gson = new Gson();
                    UserBean userBean = gson.fromJson(string, UserBean.class);

                            if("0".equals( userBean.getCode()))
                            {
                                ilogin.gainSuc(string);
                            }
                            else
                            {
                                ilogin.loaginFail("登录有误");
                            }
                }

            }
        });

    }
    public void unload(Map<String,Object> map){
        OkHttpClient okHttpClient=new OkHttpClient();
        MultipartBody.Builder builder=new MultipartBody.Builder().setType(MultipartBody.FORM);
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            if(entry.getValue() instanceof File)
            {
                builder.addFormDataPart(entry.getKey(),((File) entry.getValue()).getName(), RequestBody.create(MediaType.parse("image/*"),(File) entry.getValue()));

            }
            else
            {
                builder.addFormDataPart(entry.getKey(),entry.getValue().toString());
            }
        }
        Request request=new Request.Builder().post(builder.build()).url(ApiUrl.USERUNLOAD).build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                ilogin.unloadFail("请求失败");
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                if(!TextUtils.isEmpty(string))
                {
                    ilogin.unloadSuc("上传成功");
                }
            }
        });

    }
    public void gainUserInfo(Map<String,String> map){
        OkHttpClient okHttpClient=new OkHttpClient();
        FormBody.Builder formBody=new FormBody.Builder();
        //添加参数
        for (Map.Entry<String, String> entry : map.entrySet()) {
            formBody.add(entry.getKey(),entry.getValue());
        }


        Request request=new Request.Builder().post(formBody.build()).url(ApiUrl.USERINFO).build();
        //请求
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                ilogin.gainUserInfoFail();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();

                if(!TextUtils.isEmpty(string)) {
                    Gson gson = new Gson();
                    UserBean userBean = gson.fromJson(string, UserBean.class);

                    if("0".equals( userBean.getCode()))
                    {
                        ilogin.gainUserSuc(string);
                    }
                    else
                    {
                        ilogin.loaginFail("登录有误");
                    }
                }

            }
        });

    }
    public void addUser(Map<String,String> map){
        OkHttpClient okHttpClient=new OkHttpClient();
        FormBody.Builder formBody=new FormBody.Builder();
        //添加参数
        for (Map.Entry<String, String> entry : map.entrySet()) {
            formBody.add(entry.getKey(),entry.getValue());
        }


        Request request=new Request.Builder().post(formBody.build()).url(ApiUrl.USERADD).build();
        //请求
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                ilogin.gainFail();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();

                if(!TextUtils.isEmpty(string)) {
                    Gson gson = new Gson();
                    UserBean userBean = gson.fromJson(string, UserBean.class);
                    String msg = userBean.getMsg();
                    System.out.println("add======"+msg);
                    ilogin.gainaddSuc(msg);
                }

            }
        });

    }
    public void setIlogin(ILogin ilogin){
        this.ilogin=ilogin;
    }
    public void setNickName(Map<String,String> map){
        OkHttpClient okHttpClient=new OkHttpClient();
        FormBody.Builder formBody=new FormBody.Builder();
        //添加参数
        for (Map.Entry<String, String> entry : map.entrySet()) {
            formBody.add(entry.getKey(),entry.getValue());
        }


        Request request=new Request.Builder().post(formBody.build()).url(ApiUrl.USERKITNAME).build();
        //请求
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                ilogin.gainFail();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();

                if(!TextUtils.isEmpty(string)) {


                        ilogin.setNickSuc("修改成功");


                }

            }
        });

    }
M层接口
 public interface ILogin{
        void gainFail();
        void gainSuc(String data);
        void loaginFail(String msg);
        void gainUserInfoFail();
        void gainUserSuc(String data);
        void setNickSuc(String msg);
        void gainaddSuc(String data);
        void unloadSuc(String msg);
        void unloadFail(String msg);
    }
}
P层

public class UserPresenter implements UserModel.ILogin {
    private final UserView userView;
    private final UserModel userModel;
    private final Context context;

    public UserPresenter(UserView userView, Context context) {
        this.userView=userView;
        this.context=context;
        userModel = new UserModel();
        userModel.setIlogin(this);
    }
    public void login(Map<String,String> map){
        userModel.login(map);

    }
    public void gainUserInfo(Map<String,String> map){
        userModel.gainUserInfo(map);
    }
    public void gainaddUser(Map<String,String> map){
        userModel.addUser(map);
    }
public void unload(Map<String,Object> map){
    userModel.unload(map);
}
public void setNickName(Map<String,String> map){
    userModel.setNickName(map);
}
    @Override
    public void gainFail() {

            ((AppCompatActivity) context).runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    userView.gainFail();
                }
            });


    }

    @Override
    public void gainSuc(final String data) {
        ((AppCompatActivity) context).runOnUiThread(new Runnable() {
            @Override
            public void run() {
                userView.gainSuc(data);
            }
        });
    }

    @Override
    public void loaginFail(final String msg) {
        ((AppCompatActivity) context).runOnUiThread(new Runnable() {
            @Override
            public void run() {
                userView.loaginFail(msg);
            }
        });
    }

    @Override
    public void gainUserInfoFail() {
        ((AppCompatActivity) context).runOnUiThread(new Runnable() {
            @Override
            public void run() {
                userView.gainUserInfoFail();
            }
        });
    }

    @Override
    public void gainUserSuc(final String data) {
        ((AppCompatActivity) context).runOnUiThread(new Runnable() {
            @Override
            public void run() {
                userView.gainUserSuc(data);
            }
        });
    }

    @Override
    public void setNickSuc(final String msg) {
        ((AppCompatActivity) context).runOnUiThread(new Runnable() {
            @Override
            public void run() {
                userView.setNickSuc(msg);
            }
        });
    }

    @Override
    public void gainaddSuc(final String data) {
        ((AppCompatActivity) context).runOnUiThread(new Runnable() {
            @Override
            public void run() {
                userView.gainaddSuc(data);
            }
        });
    }

    @Override
    public void unloadSuc(final String msg) {
        ((AppCompatActivity) context).runOnUiThread(new Runnable() {
            @Override
            public void run() {
                userView.unloadSuc(msg);
            }
        });
    }

    @Override
    public void unloadFail(final String msg) {
        ((AppCompatActivity) context).runOnUiThread(new Runnable() {
            @Override
            public void run() {
                userView.unloadFail(msg);
            }
        });
    }
}
V层也就是Activuty

public class RegActivity extends AppCompatActivity implements UserView {

    @BindView(R.id.iv_cha)
    ImageView ivCha;
    @BindView(R.id.et_user)
    EditText etUser;
    @BindView(R.id.et_pass)
    EditText etPass;
    @BindView(R.id.btn_reg)
    Button btnReg;
    @BindView(R.id.tv_my_add)
    TextView tvMyAdd;
    @BindView(R.id.tv_my_forget_pass)
    TextView tvMyForgetPass;
    @BindView(R.id.iv_weixin)
    ImageView ivWeixin;
    @BindView(R.id.iv_qq)
    ImageView ivQq;
    private UserPresenter userPresenter;
    private SharedPreferences login;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

        }
        setContentView(R.layout.activity_reg);
        ButterKnife.bind(this);
        initData();
    }

    private void initData() {
        userPresenter = new UserPresenter(this,this);
        login = getSharedPreferences("userAll", MODE_PRIVATE);
    }

    @OnClick({R.id.iv_cha, R.id.btn_reg, R.id.tv_my_add, R.id.tv_my_forget_pass, R.id.iv_weixin, R.id.iv_qq})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.iv_cha:
                finish();
                break;
            case R.id.btn_reg:
                submitUserInfo();

                break;
            case R.id.tv_my_add:
                addUser();
                break;
            case R.id.tv_my_forget_pass:
                break;
            case R.id.iv_weixin:
                break;
            case R.id.iv_qq:
                break;
        }
    }

    private void addUser() {
        Toast.makeText(this, "aa", Toast.LENGTH_SHORT).show();
        Map<String,String> map=new HashMap<>();
        //获得输入内容
        String user = etUser.getText().toString();
        String pass = etPass.getText().toString();
        map.put("mobile",user);
        map.put("password",pass);
        userPresenter.gainaddUser(map);
    }

    private void submitUserInfo() {

        Map<String,String> map=new HashMap<>();
        //获得输入内容
        String user = etUser.getText().toString();
        String pass = etPass.getText().toString();
        map.put("mobile",user);
        map.put("password",pass);
       userPresenter.login(map);

    }

    @Override
    public void gainFail() {
        Toast.makeText(this, "请求失败", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void gainSuc(String data) {
        System.out.println("mydata+++++======"+data);
        Toast.makeText(this, "请求成功", Toast.LENGTH_SHORT).show();

            Gson gson = new Gson();
            UserBean userBean = gson.fromJson(data, UserBean.class);
            UserBean.DataBean result = userBean.getData();

        login.edit().putString("uid",result.getUid()+"").commit();
        finish();
    }

    @Override
    public void loaginFail(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void gainUserInfoFail() {

    }

    @Override
    public void gainUserSuc(String data) {

    }

    @Override
    public void gainaddSuc(String data) {
        Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void unloadSuc(String msg) {

    }

    @Override
    public void unloadFail(String msg) {

    }

    @Override
    public void setNickSuc(String msg) {

    }
}
V层接口

public interface UserView {
    void gainFail();
    void gainSuc(String data);
    void loaginFail(String msg);
    void gainUserInfoFail();
    void gainUserSuc(String data);
    void gainaddSuc(String data);
    void unloadSuc(String msg);
    void unloadFail(String msg);
    void setNickSuc(String msg);

}
========================

public static final String USERLOGIN="http://120.27.23.105/user/login";
=================
个人设置
/**
 * 个人信息
 */

public class MyInfoActivity extends AppCompatActivity implements UserView {

    @BindView(R.id.iv_cha)
    ImageView ivCha;
    @BindView(R.id.iv_myInfoSet)
    RoundedImageView ivMyInfoSet;
    @BindView(R.id.ll_myInfo_head)
    LinearLayout llMyInfoHead;
    @BindView(R.id.ll_my_head)
    LinearLayout llMyHead;
    @BindView(R.id.tv_myInfo_username)
    TextView tvMyInfoUsername;
    @BindView(R.id.ll_myInfo_head2)
    LinearLayout llMyInfoHead2;
    @BindView(R.id.ll_my_username)
    LinearLayout llMyUsername;
    @BindView(R.id.tv_myInfo_nick)
    TextView tvMyInfoNick;
    @BindView(R.id.ll_myInfo_head3)
    LinearLayout llMyInfoHead3;
    @BindView(R.id.ll_my_nick)
    LinearLayout llMyNick;
    @BindView(R.id.tv_myInfo_sex)
    TextView tvMyInfoSex;
    @BindView(R.id.ll_myInfo_head4)
    LinearLayout llMyInfoHead4;
    @BindView(R.id.ll_my_sex)
    LinearLayout llMySex;
    @BindView(R.id.tv_myInfo_birth)
    TextView tvMyInfoBirth;
    @BindView(R.id.ll_myInfo_head5)
    LinearLayout llMyInfoHead5;
    @BindView(R.id.ll_my_birth)
    LinearLayout llMyBirth;
    private SharedPreferences userAll;
    private UserPresenter userPresenter;
    private Uri tempUri;
    private Bitmap bitmap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT){
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

        }
        setContentView(R.layout.activity_my_info);
        ButterKnife.bind(this);
        initData();
    }

    private void initData() {
        userPresenter = new UserPresenter(this, this);
        userAll = getSharedPreferences("userAll", MODE_PRIVATE);
        gainUserInfo();

    }

    private void gainUserInfo() {
        String uid = userAll.getString("uid", null);
        if (!TextUtils.isEmpty(uid)) {
            Map<String, String> map = new HashMap<>();
            map.put("uid", uid);
            userPresenter.gainUserInfo(map);
        }

    }

    @Override
    public void gainFail() {

    }

    @Override
    public void gainSuc(String data) {

    }

    @Override
    public void loaginFail(String msg) {

    }

    @Override
    public void gainUserInfoFail() {

    }

    @Override
    public void gainUserSuc(String data) {
        Gson gson = new Gson();
        UserBean userBean = gson.fromJson(data, UserBean.class);
        UserBean.DataBean data1 = userBean.getData();
        ivMyInfoSet.setOval(true);
        Glide.with(this.getApplicationContext())
                .load(data1.getIcon().toString())
               .asBitmap()
                .diskCacheStrategy(DiskCacheStrategy.NONE)
                .skipMemoryCache(true)
                .error(R.mipmap.ic_launcher_round)
                .placeholder(R.mipmap.ic_launcher_round)
                .dontAnimate()
                .into(ivMyInfoSet);
        tvMyInfoUsername.setText(data1.getUsername());
        if(data1.getNickname()!=null)
        {
            tvMyInfoNick.setText(data1.getNickname().toString());
        }
        tvMyInfoBirth.setText(data1.getCreatetime());

        tvMyInfoSex.setText("女");
    }

    @Override
    public void gainaddSuc(String data) {

    }

    @Override
    public void unloadSuc(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void unloadFail(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void setNickSuc(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
        initData();
    }

    @OnClick({R.id.iv_cha, R.id.ll_my_head, R.id.ll_my_nick})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.iv_cha:
                finish();
                break;
            case R.id.ll_my_head:
                showAlertDialog();
                break;

            case R.id.ll_my_nick:
                setNickName();
                break;

        }
    }

    private void setNickName() {
        final EditText et_nick=new EditText(this);
        AlertDialog.Builder ab=new AlertDialog.Builder(this)
                .setTitle("修改昵称").setView(et_nick).setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                String uid = userAll.getString("uid", null);
                if(!TextUtils.isEmpty(uid))
                {
                    Map<String,String> map=new HashMap<String, String>();
                    map.put("uid",uid);
                    map.put("nickname",et_nick.getText().toString());
                    userPresenter.setNickName(map);
                }
            }
        }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

            }
        });
        ab.show();
    }

    private void showAlertDialog() {
        String[] items={"选择本地照片","拍照"};
        AlertDialog.Builder builder=new AlertDialog.Builder(MyInfoActivity.this)
                .setTitle("添加图片")
                .setNegativeButton("取消",null)
                .setItems(items, new DialogInterface.OnClickListener() {



                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        switch (i){
                            case 0:
                                Intent bendi=new Intent(Intent.ACTION_GET_CONTENT);
                                bendi.setType("image/*");
                                startActivityForResult(bendi,1000);
                                break;
                            case 1:
                                Intent came=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                                tempUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(),"temp_image.jpg"));
                                came.putExtra(MediaStore.EXTRA_OUTPUT, tempUri);
                                startActivityForResult(came,2000);
                                break;
                        }

                    }
                });
        builder.show();
    }

    /**
     * 控件加载图片
     * @param data
     */
    public void setImageToView(Intent data){
        Bundle extras = data.getExtras();
        if(extras!=null)
        {

            bitmap = extras.getParcelable("data");
            ivMyInfoSet.setImageBitmap(bitmap);
            ByteArrayOutputStream baos=new ByteArrayOutputStream();
            //把bitmap转化为byte[]
            bitmap.compress(Bitmap.CompressFormat.PNG,100,baos);
            byte[] bytes = baos.toByteArray();
//修改当前图片
           ivMyInfoSet.setImageBitmap(bitmap);
            addFile(bytes);

        }
    }

    /**
     * 传输byte赋值给文件
     * @param bytes
     */
    private void addFile(byte[] bytes) {
        FileOutputStream out=null;
        try {
            out= new FileOutputStream(new File(Environment.getExternalStorageDirectory()+"/userhead.png"));
            out.write(bytes);

           //输入发送头像
            String uid = userAll.getString("uid", null);
            if(!TextUtils.isEmpty(uid)) {
                Map<String,Object> map=new HashMap<>();
                map.put("uid",uid);
                map.put("file",new File(Environment.getExternalStorageDirectory()+"/userhead.png"));
                userPresenter.unload(map);

            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            try {

                out.close();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

    /**
     * 裁剪图片
     * @param uri
     */
    public void cutImage(Uri uri){
        if(uri!=null)
        {
            tempUri=uri;
            Intent intent=new Intent("com.android.camera.action.CROP");
            intent.setDataAndType(uri,"image/*");
            intent.putExtra("crop","true");
            intent.putExtra("aspectX", 1);
            intent.putExtra("aspectY",1);
            // outputX outputY 是裁剪图片宽高
            intent.putExtra("outputX", 150);
            intent.putExtra("outputY", 150);
            intent.putExtra("return-data",true);
            startActivityForResult(intent,3000);
        }

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode==MyInfoActivity.RESULT_OK)
        {

            switch (requestCode)
            {
                case 1000:
                    cutImage(data.getData());
                    break;
                case 2000:
                    cutImage(tempUri);
                    break;
                case 3000:
                    if(data!=null)
                    {
                        setImageToView(data);
                    }
                    break;
            }

        }
    }
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值