//loginmain
<?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:orientation="vertical" tools:context="com.bwie.dogdong.view.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="60dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="手机号:" android:textSize="20sp" /> <EditText android:id="@+id/mobile" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="13333598668" android:hint="请输入手机号" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="90dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密 码:" android:textSize="20sp" /> <EditText android:id="@+id/pass" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="123123123" android:hint="请输入密码" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:orientation="horizontal"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="登录" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="170dp" android:text="注册" /> </LinearLayout> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="5dp" android:text="第三方登录" android:textSize="18sp" /> <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginTop="15dp" android:background="#000" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp"> <Button android:id="@+id/qq" android:layout_width="60dp" android:layout_height="60dp" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginEnd="104dp" android:layout_marginRight="104dp" android:background="@drawable/qq"/> <ImageView android:id="@+id/wx" android:layout_width="60dp" android:layout_height="60dp" android:layout_alignParentTop="true" android:layout_marginEnd="51dp" android:layout_marginRight="51dp" android:layout_toLeftOf="@+id/qq" android:layout_toStartOf="@+id/qq" android:background="@drawable/weixin"/> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout> </LinearLayout>
//Regmain
<?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:orientation="vertical" tools:context="com.bwie.dogdong.view.RegActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="60dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="手机号:" android:textSize="20sp" /> <EditText android:id="@+id/mobile" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入手机号" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="90dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密 码:" android:textSize="20sp" /> <EditText android:id="@+id/pass" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入密码" /> </LinearLayout> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="注册" /> </LinearLayout>
//model
public interface Model { void login(String accout,String pwd, OnNetListener onNetListener); void reg(String accout,String pwd, OnNetListener onNetListener); }
@Override public void login(String accout, String pwd, OnNetListener onNetListener) { Map<String, String> params = new HashMap<>(); params.put("mobile", accout); params.put("password", pwd); OkhttpUtils.getInstance().login(Api.LOGIN_URL, params, onNetListener); } @Override public void reg(String accout, String pwd, OnNetListener onNetListener) { Map<String, String> params = new HashMap<>(); params.put("mobile", accout); params.put("password", pwd); OkhttpUtils.getInstance().login(Api.REG_URL, params, onNetListener); }
//presenter
public interface Presenter { void login(); void reg(); //解绑 void detach(); }
public class PresenterImp implements Presenter { View view; ModelImp modelImp; public PresenterImp(View view) { this.view = view; modelImp = new ModelImp(); } @Override public void login() { String accout = view.getAccout(); String pwd = view.getPwd(); if (TextUtils.isEmpty(accout) || TextUtils.isEmpty(pwd)) { view.toast("账号密码不能为空"); return; } modelImp.login(accout, pwd, new OnNetListener() { @Override public void onSuccess(String result) { if (view == null) { return; } LoginBean loginBean = new Gson().fromJson(result, LoginBean.class); if ("天呢!密码错误".equals(loginBean.getMsg())) { view.toast(loginBean.getMsg()); return; }else if("密码格式有问题,不能少于6位数".equals(loginBean.getMsg())){ view.toast(loginBean.getMsg()); return; }else if("天呢!用户不存在".equals(loginBean.getMsg())){ view.toast(loginBean.getMsg()); return; }else{ view.showMsg(loginBean.getMsg()); view.finish(loginBean.getMsg()); } } @Override public void onFailed(Exception e) { if (view == null) { return; } } }); } @Override public void reg() { String accout = view.getAccout(); String pwd = view.getPwd(); if (TextUtils.isEmpty(accout) || TextUtils.isEmpty(pwd)) { view.toast("账号密码不能为空"); return; } modelImp.reg(accout, pwd, new OnNetListener() { @Override public void onSuccess(String result) { if (view == null) { return; } RegBean regBean = new Gson().fromJson(result, RegBean.class); if ("请输入正确的手机号码".equals(regBean.getMsg())) { view.toast(regBean.getMsg()); return; } else if ("天呢!用户已注册".equals(regBean.getMsg())) { view.toast(regBean.getMsg()); return; } else if ("密码格式有问题,不能少于6位数".equals(regBean.getMsg())) { view.toast(regBean.getMsg()); return; } view.showMsg(regBean.getMsg()); // view.finish(regBean.getData()); } @Override public void onFailed(Exception e) { if (view == null) { return; } } }); } @Override public void detach() { if (view == null) { return; } } }
//view
public interface View { String getAccout(); String getPwd(); void showMsg(String str); void finish(String s); void toast(String str); }
//Main代码
public class MainActivity extends BaseActivity implements View, android.view.View.OnClickListener{ private TextView mTv; private EditText mobile, pass; private Button login, reg; private PresenterImp presenterImp; private Button qq; private UMShareListener shareListener = new UMShareListener() { /** * @descrption 分享开始的回调 * @param platform 平台类型 */ @Override public void onStart(SHARE_MEDIA platform) { } /** * @descrption 分享成功的回调 * @param platform 平台类型 */ @Override public void onResult(SHARE_MEDIA platform) { Toast.makeText(MainActivity.this, "成功了", Toast .LENGTH_LONG).show(); } /** * @descrption 分享失败的回调 * @param platform 平台类型 * @param t 错误原因 */ @Override public void onError(SHARE_MEDIA platform, Throwable t) { Toast.makeText(MainActivity.this, "失败" + t.getMessage(), Toast.LENGTH_LONG).show(); } /** * @descrption 分享取消的回调 * @param platform 平台类型 */ @Override public void onCancel(SHARE_MEDIA platform) { Toast.makeText(MainActivity.this, "取消了", Toast .LENGTH_LONG).show(); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); } private void initData() { mobile = (EditText) findViewById(R.id.mobile); pass = (EditText) findViewById(R.id.pass); login = (Button) findViewById(R.id.button1); reg = (Button) findViewById(R.id.button2); presenterImp = new PresenterImp(this); mTv = (TextView) findViewById(R.id.tv); login.setOnClickListener(this); reg.setOnClickListener(this); qq = (Button) findViewById(R.id.qq); qq.setOnClickListener(this); } @Override public String getAccout() { Log.e("TAG", "手机" + mobile.getText().toString()); return mobile.getText().toString(); } @Override public String getPwd() { Log.e("TAG", "手机" + pass.getText().toString()); return pass.getText().toString(); } @Override public void showMsg(String str) { Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show(); } @Override public void finish(String s) { } @Override public void toast(String str) { Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show(); } @Override protected void onDestroy() { super.onDestroy(); presenterImp.detach(); } @Override public void onClick(android.view.View view) { switch (view.getId()) { case R.id.button1: presenterImp.login(); Intent intent2 = new Intent(MainActivity.this, FragmentHomeActivity.class); startActivity(intent2); break; case R.id.button2: Intent intent = new Intent(MainActivity.this, RegActivity.class); startActivity(intent); break; case R.id.qq: try { Toast.makeText(MainActivity.this, "点击了", Toast.LENGTH_SHORT).show(); UMShareAPI.get(this).getPlatformInfo(MainActivity.this, SHARE_MEDIA.QQ, authListener); }catch (Exception e){ e.printStackTrace(); } break; } } UMAuthListener authListener = new UMAuthListener() { /** * @desc 授权开始的回调 * @param platform 平台名称 */ @Override public void onStart(SHARE_MEDIA platform) { } /** * @desc 授权成功的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 * @param data 用户资料返回 */ @Override public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) { Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_LONG).show(); StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : data.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); sb.append(key + ":"); sb.append(value + "\n"); } mTv.setText(sb.toString()); } /** * @desc 授权失败的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 * @param t 错误原因 */ @Override public void onError(SHARE_MEDIA platform, int action, Throwable t) { Toast.makeText(MainActivity.this, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show(); } /** * @desc 授权取消的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 */ @Override public void onCancel(SHARE_MEDIA platform, int action) { Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_LONG).show(); } }; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //分享或者登录的结果交给友盟处理 UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); } }
//注册
public class RegActivity extends AppCompatActivity implements View { private EditText mobile, pass; private Button reg; private PresenterImp presenterImp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_reg); initData(); } private void initData() { mobile = (EditText) findViewById(R.id.mobile); pass = (EditText) findViewById(R.id.pass); reg = (Button) findViewById(R.id.button); final PresenterImp presenterImp=new PresenterImp(this); reg.setOnClickListener(new android.view.View.OnClickListener() { @Override public void onClick(android.view.View view) { presenterImp.reg(); //finish(); } }); } @Override public String getAccout() { return mobile.getText().toString(); } @Override public String getPwd() { return pass.getText().toString(); } @Override public void showMsg(String str) { Toast.makeText(RegActivity.this,str,Toast.LENGTH_SHORT).show(); } @Override public void finish(String s) { finish(); } @Override public void toast(String str) { Toast.makeText(RegActivity.this, str,Toast.LENGTH_SHORT).show(); } }