MVP注册登录

MVP注册登录

//布局登录
内有图片可忽略

<?xml version="1.0" encoding="utf-8"?>


<EditText
android:id="@+id/et_name"
android:layout_width=“300dp”
android:layout_marginTop=“70dp”
android:layout_gravity=“center”
android:layout_height=“wrap_content”

    android:hint="请输入用户名"
    />
<EditText
    android:id="@+id/et_password"
    android:layout_width="300dp"
     android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:password="true"
    android:hint="请输入密码"
    />
<CheckBox
    android:id="@+id/pwdss"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginTop="20dp"
    android:text="记住密码"
    />

<ImageView
    android:id="@+id/btn"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_gravity="center"
    android:src="@drawable/umeng_socialize_qq" />
<Button
    android:id="@+id/mBt_denglu"
    android:layout_width="300dp"
    android:layout_gravity="center"
    android:layout_height="wrap_content"
    android:background="@drawable/shape"

    android:text="登录"
    />

<Button
    android:id="@+id/mBt_zhuce"
    android:layout_width="300dp"
    android:layout_gravity="center"
    android:layout_height="wrap_content"
    android:background="@drawable/shape"
    android:layout_marginTop="20dp"
    android:text="注册"
    />
![登录](https://img-blog.csdnimg.cn/20190303195715412.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjA5NjEz,size_16,color_FFFFFF,t_70) //注册 <?xml version="1.0" encoding="utf-8"?>
<EditText
    android:id="@+id/et_Zname"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="请输入用户名"
    />
<EditText
    android:id="@+id/et_Zpassword"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="请输入密码"
    />
<Button
    android:id="@+id/mBt_zhuce"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="注册"
    />
//契约类 package com.example.nuli.contract;

public interface IContract {
//v层
public interface ILoginView{
public void loginData(String responseData);
}

//p层
public interface ILoginPresenter<ILoginView>{
    //绑定
    public void attach(ILoginView iLoginView);
    //解绑
    public void deach(ILoginView iLoginView);
    //传值
    public void requestData(String name, String password);
}
//m层
public interface ILoginModel{
    public void containLoginData(String name, String password, CallBack callBack);
    public interface CallBack{
        public void responseData(String responseData);
    }
}

}
//接口连接
package com.example.nuli.data;

/**

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.nuli.R;
import com.example.nuli.beans.JsonData;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private List<JsonData.ResultBean> listData;
private ViewHolderA viewHolderA;

public void Adapter(Context context, List<JsonData.ResultBean> listData) {
    this.context = context;
    this.listData = listData;
}

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    RecyclerView.ViewHolder holder;
    View inflate = LayoutInflater.from(context).inflate(R.layout.one, viewGroup, false);


    holder = new ViewHolderA(inflate);
    return holder;
}

//点击事件回调
@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder viewHolder, final int i) {
    ((ViewHolderA) viewHolder).textView.setText(listData.get(i).getCommodityName());
    Glide.with(context).load(listData.get(i).getMasterPic()).into(((ViewHolderA) viewHolder).image1);
    //回调方法
    ((ViewHolderA) viewHolder).LinearLayout1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.e("I","123");
            //实现每一条的点击
            jiekou.itemOnclic(i);
        }
    });

}

@Override
public int getItemCount() {
    return listData.size();
}

class ViewHolderA extends RecyclerView.ViewHolder {
    @BindView(R.id.image1)
    ImageView image1;
    @BindView(R.id.textView)
    TextView textView;
    @BindView(R.id.LinearLayout1)
    LinearLayout LinearLayout1;

    public ViewHolderA(@NonNull View itemView) {
        super(itemView);
        ButterKnife.bind(this, itemView);
    }
}

//初始化
public   jiekou jiekou;
//通过方法实现
public void setJiekou( jiekou jiekou){
    this.jiekou = jiekou;
}

//创建接口
public interface jiekou{
public void itemOnclic(int i);
}

}
//多条目
private int itemType;

    public int getItemType() {
        int result = itemType % 2;
        return result;
    }
  //M层
  package com.example.nuli.model;

import android.util.Log;

import com.example.nuli.contract.IContract;
import com.example.nuli.data.Constant;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class DlModel implements IContract.ILoginModel {
@Override
public void containLoginData(String name, String password, CallBack callBack) {
resepanseData(name,password,callBack);
}

private void resepanseData(String name, String password, final CallBack callBack) {
    OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
    FormBody build = new FormBody.Builder().build();
    Request builder = new Request.Builder()
            .method("POST",build)
            .url(Constant.LOGIN_URL+"?phone="+name+"&pwd="+password)
            .build();

    Call call=okHttpClient.newCall(builder);
    call.enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            String responseData = e.getMessage();
            Log.i("jgq","responseData");
            callBack.responseData(responseData);
        }

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



}

}
//p层
package com.example.nuli.persenter;

import com.example.nuli.contract.IContract;
import com.example.nuli.model.DlModel;

import java.lang.ref.SoftReference;

public class DlPersenter implements IContract.ILoginPresenter<IContract.ILoginView> {
private IContract.ILoginView iLoginView;
private SoftReference<IContract.ILoginView> iLoginViewSoftReference;
private DlModel dlModel;

@Override
public void attach(IContract.ILoginView iLoginView) {
    this.iLoginView=iLoginView;
    //软引用
    iLoginViewSoftReference = new SoftReference<>(iLoginView);
    //链接model
    dlModel = new DlModel();


}

@Override
public void deach(IContract.ILoginView iLoginView) {
    iLoginViewSoftReference.clear();
}

@Override
public void requestData(String name, String password) {
    dlModel.containLoginData(name, password, new IContract.ILoginModel.CallBack() {
        @Override
        public void responseData(String responseData) {
            iLoginView.loginData(responseData);
        }
    });

}

}
//v包含记住密码

import java.util.Map;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity implements IContract.ILoginView {

@BindView(R.id.et_name)
EditText etName;
@BindView(R.id.et_password)
EditText etPassword;
@BindView(R.id.mBt_denglu)
Button mBtDenglu;
@BindView(R.id.mBt_zhuce)
Button mBtZhuce;
@BindView(R.id.pwdss)
CheckBox pwdss;
@BindView(R.id.btn)
ImageView btn;

private DlPersenter dlPersenter;
private int remamberFlag = 0;
private String password = "";



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);

    //第三方登录
    if (Build.VERSION.SDK_INT >= 23) {//QQ需要申请写入权限
        String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CALL_PHONE, Manifest.permission.READ_LOGS, Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.SET_DEBUG_APP, Manifest.permission.SYSTEM_ALERT_WINDOW, Manifest.permission.GET_ACCOUNTS, Manifest.permission.WRITE_APN_SETTINGS};
        ActivityCompat.requestPermissions(this, mPermissionList, 123);
      
    }

    SharedPreferences sharedPreferences = getSharedPreferences("test", MODE_PRIVATE);
    //如果不为空
    if (sharedPreferences != null) {
        String name = sharedPreferences.getString("name", "");
        password = sharedPreferences.getString("password", "");
        remamberFlag = sharedPreferences.getInt("remeber_flag", 0);
        etName.setText(name);

    }
    //确定为1获取 记住密码,打钩
    if (remamberFlag == 1) {
        pwdss.setChecked(true);
        etPassword.setText(password);
    }
    //链接persenter
    dlPersenter = new DlPersenter();
    dlPersenter.attach(this);


}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    UMShareAPI.get(MainActivity.this).onActivityResult(requestCode, resultCode, data);
}
@Override
public void loginData(final String responseData) {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(MainActivity.this, responseData, Toast.LENGTH_LONG).show();

            Gson gson = new Gson();
            Login login = gson.fromJson(responseData, Login.class);
            String status = login.getStatus();
            if (status.equals("0000")) {
                Intent intent = new Intent(MainActivity.this, MainActivity2.class);
                startActivity(intent);
            }
        }
    });

}

@OnClick({R.id.mBt_denglu, R.id.mBt_zhuce, R.id.pwdss,R.id.btn})
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.mBt_denglu:
            String name = etName.getText().toString();
            String password = etPassword.getText().toString();
            dlPersenter.requestData(name, password);

            SharedPreferences sharedPreferences = getSharedPreferences("test", MODE_PRIVATE);
            SharedPreferences.Editor editor = sharedPreferences.edit();
            //2  创建Editor对象,写入值
            editor.putString("name", name);

            if (pwdss.isChecked()) {
                remamberFlag = 1;
                editor.putInt("remeber_flag", remamberFlag);
                editor.putString("password", password);
            } else {
                remamberFlag = 0;
                editor.putInt("remeber_flag", remamberFlag);
            }
            //3  提交
            editor.commit();
            Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_LONG).show();

            break;
        case R.id.mBt_zhuce:
            Intent intent = new Intent(MainActivity.this, MainActivity1.class);
            startActivity(intent);

            break;
        case R.id.btn:
            UMShareAPI umShareAPI = UMShareAPI.get(MainActivity.this);
            UMConfigure.setLogEnabled(true);
            umShareAPI.getPlatformInfo(MainActivity.this, SHARE_MEDIA.QQ, new UMAuthListener() {
                @Override
                public void onStart(SHARE_MEDIA share_media) {

                }

                @Override
                public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
                    Intent intent1 = new Intent(MainActivity.this,MainActivity2.class);
                    startActivity(intent1);
                    Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
                    Log.i("Tag", map + "");
                }

                @Override
                public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {

                }

                @Override
                public void onCancel(SHARE_MEDIA share_media, int i) {
                }

            });
         }


    }
///防止溢出
@Override
protected void onDestroy() {
    super.onDestroy();
    dlPersenter.deach(this);
}

}

猜你喜欢

转载自blog.csdn.net/qq_42609613/article/details/88092837