//M层
public interface IModel { void login(User user,int i); }
public class MOdel implements IModel { private setOnfinish setOnfinishs; public interface setOnfinish{ void finish1(Login login); void finish2(Regiest regiest); } public void MOdel(setOnfinish setOnfinishs){ this.setOnfinishs=setOnfinishs; } @Override public void login(User user, int i) { Map<String,String> map = new HashMap<>(); map.put("mobile",user.getMobile()); map.put("password",user.getPassword()); if(i==0){ OkHttp3Utils.doPost("http://120.27.23.105/user/login", map, new GsonObjectCallback<Login>() { @Override public void onUi(Login login) { if(setOnfinishs!=null){ setOnfinishs.finish1(login); } } @Override public void onFailed(Call call, IOException e) { } }); }else if(i==1){ OkHttp3Utils.doPost("http://120.27.23.105/user/reg",map, new GsonObjectCallback<Regiest>() { @Override public void onUi(Regiest regiest) { if(setOnfinishs!=null){ setOnfinishs.finish2(regiest); } } @Override public void onFailed(Call call, IOException e) { } }); } } }
//V层
public interface IView { void loginsuccess(String msg); void loginfalse(String msg); }
//p层
public class pass implements MOdel.setOnfinish{ private IView iView; private MOdel mOdel; public pass(IView iView) { this.iView = iView; this.mOdel=new MOdel(); } public void login(User user,int i){ mOdel.login(user,i); mOdel.MOdel(this); } @Override public void finish1(Login login) { if (login.getCode().equals("0")) { iView.loginsuccess(login.getMsg()); } else { iView.loginfalse(login.getMsg()); } } @Override public void finish2(Regiest regiest) { if (regiest.getCode().equals("0")) { iView.loginsuccess(regiest.getMsg()); } else { iView.loginfalse(regiest.getMsg()); } } }
//bean层
public class User { private String mobile; private String password; public User(String mobile, String password) { this.mobile = mobile; this.password = password; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User{" + "mobile='" + mobile + '\'' + ", password='" + password + '\'' + '}'; } }
public class Login { /** * msg : 天呢!用户名和密码怎么都是空 * code : 1 */ private String msg; private String code; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } }
public class Regiest { /** * msg : 天呢!用户名或密码不能为空 * code : 1 * data : {} */ private String msg; private String code; private String data; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getData() { return data; } public void setData(String data) { this.data = data; } }
//Main
public class MainActivity extends AppCompatActivity implements IView { /** * 请输入手机号 */ private EditText mEtMobile; /** * 请输入密码 */ private EditText mEtPassword; /** * 登录 */ private Button mBtnLogin; /** * 注册 */ private Button mBtnRegist; private static final String APP_ID = "1105602574"; private Tencent tencent; private BaseUiLi baseUiLi; private ImageView qq; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tencent = Tencent.createInstance(APP_ID, MainActivity.this.getApplicationContext()); initView(); } private void initView() { mEtMobile = (EditText) findViewById(R.id.et_mobile); mEtPassword = (EditText) findViewById(R.id.et_password); mBtnLogin = (Button) findViewById(R.id.btn_login); mBtnRegist = (Button) findViewById(R.id.btn_regist); qq = (ImageView) findViewById(R.id.iv1); qq.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { baseUiLi = new BaseUiLi(); tencent.login(MainActivity.this, "all", baseUiLi); } }); mBtnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(TextUtils.isEmpty(mEtMobile.getText().toString())||TextUtils.isEmpty(mEtPassword.getText().toString())){ Toast.makeText(MainActivity.this,"不能为空",Toast.LENGTH_SHORT).show(); }else{ new pass(MainActivity.this).login(new User(mEtMobile.getText().toString(),mEtPassword.getText().toString()),0); } } }); mBtnRegist.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this, RegiestActivity.class); startActivity(intent); } }); } private class BaseUiLi implements IUiListener { private UserInfo userInfo; //成功 @Override public void onComplete(Object o) { Toast.makeText(MainActivity.this, "授权成功", Toast.LENGTH_SHORT).show(); JSONObject obj = (JSONObject) o; try { String openID = obj.getString("openid"); String accessToken = obj.getString("access_token"); String expires = obj.getString("expires_in"); tencent.setOpenId(openID); tencent.setAccessToken(accessToken, expires); QQToken qqToken = tencent.getQQToken(); userInfo = new UserInfo(getApplicationContext(), qqToken); userInfo.getUserInfo(new IUiListener() { @Override public void onComplete(Object response) { Toast.makeText(MainActivity.this, "欢迎使用☺", Toast.LENGTH_SHORT).show(); //获取QQ用户登入信息 String qqmessage = response.toString(); Gson gson = new Gson(); QQUser qqUser = gson.fromJson(qqmessage, QQUser.class); Intent intent = new Intent(MainActivity.this, Fragment01.class); intent.putExtra("qquser", qqUser); startActivity(intent); } @Override public void onError(UiError uiError) { } @Override public void onCancel() { } }); } catch (JSONException e) { e.printStackTrace(); } } //错误 @Override public void onError(UiError uiError) { Toast.makeText(MainActivity.this, "授权失败", Toast.LENGTH_SHORT).show(); } //取消 @Override public void onCancel() { Toast.makeText(MainActivity.this, "授权取消", Toast.LENGTH_SHORT).show(); } } @Override public void loginsuccess(String msg) { Toast.makeText(this,msg,Toast.LENGTH_SHORT).show(); Intent intent = new Intent(MainActivity.this, ShopActivity.class); startActivity(intent); } @Override public void loginfalse(String msg) { Toast.makeText(this,msg,Toast.LENGTH_SHORT).show(); } }
//布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/login_tao" android:layout_centerHorizontal="true" android:id="@+id/imageView" /> <EditText android:id="@+id/et_mobile" android:layout_width="300dp" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="64dp" android:hint="请输入手机号" android:text="13465045920" android:inputType="number" /> <EditText android:id="@+id/et_password" android:layout_width="300dp" android:layout_height="wrap_content" android:layout_below="@id/et_mobile" android:layout_centerHorizontal="true" android:layout_marginTop="10dp" android:hint="请输入密码" android:text="111111" android:inputType="textPassword" /> <Button android:id="@+id/btn_regist" android:layout_width="100dp" android:layout_height="wrap_content" android:text="新用户注册" android:background="#ffffff" android:layout_below="@+id/et_password" android:layout_alignRight="@+id/et_password" android:layout_alignEnd="@+id/et_password" /> <Button android:id="@+id/btn_login" android:layout_width="300dp" android:layout_height="wrap_content" android:background="@drawable/login_login" android:layout_below="@id/btn_regist" android:layout_alignRight="@+id/btn_regist" android:layout_alignEnd="@+id/btn_regist" /> <ImageView android:id="@+id/iv1" android:layout_width="90dp" android:layout_height="100dp" android:background="@drawable/th_qq" android:layout_marginTop="38dp" android:layout_below="@+id/btn_login" android:layout_centerHorizontal="true" /> </RelativeLayout>//注册布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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" tools:context="com.bawei.com.myapplication.Main2Activity"> <EditText android:id="@+id/et_mobile" android:layout_width="300dp" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="64dp" android:hint="请输入手机号" android:inputType="number" /> <EditText android:id="@+id/et_password" android:layout_width="300dp" android:layout_height="wrap_content" android:layout_below="@id/et_mobile" android:layout_centerHorizontal="true" android:layout_marginTop="10dp" android:hint="请输入密码" android:inputType="textPassword" /> <Button android:id="@+id/btn_regist" android:layout_width="200dp" android:layout_height="wrap_content" android:text="立即注册" android:textColor="@color/colorPrimary" android:layout_below="@id/et_password" android:layout_centerHorizontal="true" /> </RelativeLayout>