您的位置:首页 > 其它

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

2017-12-12 10:09 567 查看
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);

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;
}

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐