登录/注册+修改个人信息
2017-12-12 10:09
567 查看
M层
P层
V层也就是Activuty
V层接口
========================
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); 14b97 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; } } } }
相关文章推荐
- php实现简单的用户注册,登录,修改个人信息接口
- Retrofit+RxJava+OkHttp封装类请求接口数据→原生登录,注册,个人信息页+设置用户头像(图片上传或拍照)+SharedPreferences保存信息+Fresco加载图片+Mvp分层
- 登录,注册,个人信息,退出的隐藏和出现
- 登录 注册 个人信息 的布局
- Retrofit+RxJava+OkHttp封装类请求接口数据→原生登录,注册,个人信息页+设置用户头像(图片上传或拍照)+SharedPreferences保存信息+Fresco加载图片+Mvp分层
- 基于xml制作登录注册修改用户信息
- 银行管理系统 实现用户注册 登录 存、取款 交易记录查询和修改用户信息等功能
- vue.js实现用户评论、登录、注册、及修改信息功能
- vue.js实现用户评论、登录、注册、及修改用户部分信息功能代码。
- 复杂的个人信息登录界面
- php+mysql实现简单登录注册修改密码网页
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Andriod中WebView加载登录界面获取Cookie信息并同步保存,使第二次不用登录也可查看个人信息。
- ecshop 登录注册信息提示页面的跳转时间设置
- python以post方式登录csdn网站,并以cookie方式访问个人信息
- android注册 登录 修改帐号密码 添加资料 给新注册用户充值DEMO
- 修改 Ubuntu SSH 登录后的欢迎信息
- .net实现个人信息登录界面
- bash登录信息修改
- Dedecms系统登录、更新的提示信息修改方法