From 6902f7f08edf36e44b4110584defa8670309c17d Mon Sep 17 00:00:00 2001 From: tangsiyuan Date: Tue, 30 Aug 2016 14:44:23 +0800 Subject: [PATCH 1/2] add login sample --- app/src/main/AndroidManifest.xml | 3 +- .../baseandroidproject/Base/BaseActivity.java | 8 +- .../baseandroidproject/Base/BaseCache.java | 19 --- .../Base/BasePresenter.java | 4 +- .../tsy/baseandroidproject/Base/BaseView.java | 8 ++ .../com/tsy/baseandroidproject/RootAct.java | 127 ------------------ .../feature/login/bean/UserInfo.java | 9 ++ .../feature/login/contract/LoginContract.java | 42 ++++++ .../login/interactor/LoginInteractor.java | 34 +++++ .../login/presenter/LoginPresenter.java | 51 +++++++ .../feature/login/view/LoginActivity.java | 61 +++++++++ app/src/main/res/layout/activity_login.xml | 119 ++++++++++++++++ app/src/main/res/layout/activity_root.xml | 16 --- app/src/main/res/layout/activity_sample.xml | 21 --- app/src/main/res/values/strings.xml | 14 ++ 15 files changed, 342 insertions(+), 194 deletions(-) delete mode 100644 app/src/main/java/com/tsy/baseandroidproject/Base/BaseCache.java create mode 100644 app/src/main/java/com/tsy/baseandroidproject/Base/BaseView.java delete mode 100644 app/src/main/java/com/tsy/baseandroidproject/RootAct.java create mode 100644 app/src/main/java/com/tsy/baseandroidproject/feature/login/bean/UserInfo.java create mode 100644 app/src/main/java/com/tsy/baseandroidproject/feature/login/contract/LoginContract.java create mode 100644 app/src/main/java/com/tsy/baseandroidproject/feature/login/interactor/LoginInteractor.java create mode 100644 app/src/main/java/com/tsy/baseandroidproject/feature/login/presenter/LoginPresenter.java create mode 100644 app/src/main/java/com/tsy/baseandroidproject/feature/login/view/LoginActivity.java create mode 100644 app/src/main/res/layout/activity_login.xml delete mode 100644 app/src/main/res/layout/activity_root.xml delete mode 100644 app/src/main/res/layout/activity_sample.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b21fdfd..263b1f6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,14 +15,13 @@ android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> - + - \ No newline at end of file diff --git a/app/src/main/java/com/tsy/baseandroidproject/Base/BaseActivity.java b/app/src/main/java/com/tsy/baseandroidproject/Base/BaseActivity.java index 80af36b..f84035d 100644 --- a/app/src/main/java/com/tsy/baseandroidproject/Base/BaseActivity.java +++ b/app/src/main/java/com/tsy/baseandroidproject/Base/BaseActivity.java @@ -2,16 +2,10 @@ import android.app.Activity; -import com.tsy.sdk.myokhttp.MyOkHttp; - /** * BaseActivity * Created by tsy on 16/7/22. */ public class BaseActivity extends Activity { - @Override - protected void onDestroy() { - MyOkHttp.get().cancel(this); - super.onDestroy(); - } + } diff --git a/app/src/main/java/com/tsy/baseandroidproject/Base/BaseCache.java b/app/src/main/java/com/tsy/baseandroidproject/Base/BaseCache.java deleted file mode 100644 index dd5dcc5..0000000 --- a/app/src/main/java/com/tsy/baseandroidproject/Base/BaseCache.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.tsy.baseandroidproject.Base; - -import android.content.Context; - -import com.tsy.sdk.acache.ACache; - - -/** - * BaseCache - * Created by tsy on 16/7/25. - */ -public class BaseCache { - - protected ACache mCache; - - public BaseCache(Context context) { - mCache = ACache.get(context); - } -} diff --git a/app/src/main/java/com/tsy/baseandroidproject/Base/BasePresenter.java b/app/src/main/java/com/tsy/baseandroidproject/Base/BasePresenter.java index ca43dbc..1c5d78f 100644 --- a/app/src/main/java/com/tsy/baseandroidproject/Base/BasePresenter.java +++ b/app/src/main/java/com/tsy/baseandroidproject/Base/BasePresenter.java @@ -4,6 +4,6 @@ /** * Created by tsy on 16/7/26. */ -public class BasePresenter { - +public interface BasePresenter { + void start(); } diff --git a/app/src/main/java/com/tsy/baseandroidproject/Base/BaseView.java b/app/src/main/java/com/tsy/baseandroidproject/Base/BaseView.java new file mode 100644 index 0000000..3f4104f --- /dev/null +++ b/app/src/main/java/com/tsy/baseandroidproject/Base/BaseView.java @@ -0,0 +1,8 @@ +package com.tsy.baseandroidproject.Base; + +/** + * Created by tsy on 16/8/30. + */ +public interface BaseView { + void showToast(String msg); +} diff --git a/app/src/main/java/com/tsy/baseandroidproject/RootAct.java b/app/src/main/java/com/tsy/baseandroidproject/RootAct.java deleted file mode 100644 index b89fe2b..0000000 --- a/app/src/main/java/com/tsy/baseandroidproject/RootAct.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.tsy.baseandroidproject; - -import android.os.Bundle; -import android.os.Environment; - -import com.tsy.baseandroidproject.Base.BaseActivity; -import com.tsy.sdk.myokhttp.MyOkHttp; -import com.tsy.sdk.myokhttp.response.DownloadResponseHandler; -import com.tsy.sdk.myokhttp.response.GsonResponseHandler; -import com.tsy.sdk.myokhttp.response.JsonResponseHandler; -import com.tsy.sdk.myokhttp.response.RawResponseHandler; -import com.tsy.sdk.myutil.LogUtils; - -import org.json.JSONObject; - -import java.io.File; -import java.util.HashMap; -import java.util.Map; - -/** - * 启动Activity - */ -public class RootAct extends BaseActivity { - - private String TAG = "RootAct"; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_root); - -// doPost(); - doGet(); -// doUpload(); -// doDownload(); - } - - //post请求 - private void doPost() { - Map params = new HashMap(); - params.put("name", "tsy"); - - MyOkHttp.get().post(this, "http://192.168.3.1/test_okhttp.php", params, new JsonResponseHandler() { - @Override - public void onSuccess(int statusCode, JSONObject response) { - LogUtils.v(TAG, statusCode + " " + response); - } - - @Override - public void onFailure(int statusCode, String error_msg) { - LogUtils.v(TAG, statusCode + " " + error_msg); - } - }); - } - - //get请求 - private void doGet() { - Map params = new HashMap(); - params.put("name", "tsy"); - - MyOkHttp.get().get(this, "http://192.168.3.1/test_okhttp.php", params, new RawResponseHandler() { - @Override - public void onSuccess(int statusCode, String response) { - LogUtils.v(TAG, statusCode + " " + response); - } - - @Override - public void onFailure(int statusCode, String error_msg) { - LogUtils.v(TAG, statusCode + " " + error_msg); - } - }); - } - - //上传文件 - private void doUpload() { - Map params = new HashMap(); - params.put("name", "tsy"); - - Map files = new HashMap(); - File file = new File(Environment.getExternalStorageDirectory() + "/com.ci123.service.splashandroid/splash/1.png"); - files.put("avatar", file); - - MyOkHttp.get().upload(this, "http://192.168.3.1/test_post.php", params, files, new GsonResponseHandler() { - @Override - public void onFailure(int statusCode, String error_msg) { - LogUtils.v(TAG, statusCode + " " + error_msg); - } - - @Override - public void onSuccess(int statusCode, BB response) { - LogUtils.v(TAG, statusCode + " " + response.ret); - } - - @Override - public void onProgress(long currentBytes, long totalBytes) { - LogUtils.v(TAG, currentBytes + "/" + totalBytes); - } - }); - } - - //下载文件 - private void doDownload() { - MyOkHttp.get().download(this, "http://192.168.3.1/output_tmp.jpg", - Environment.getExternalStorageDirectory() + "/com.ci123.service.splashandroid/", "1.jpg", - new DownloadResponseHandler() { - @Override - public void onFinish(File download_file) { - LogUtils.v(TAG, "onFinish:" + download_file.getPath()); - } - - @Override - public void onProgress(long currentBytes, long totalBytes) { - LogUtils.v(TAG, currentBytes + "/" + totalBytes); - } - - @Override - public void onFailure(String error_msg) { - LogUtils.v(TAG, error_msg); - } - }); - } - - public class BB { - public int ret; - - } -} diff --git a/app/src/main/java/com/tsy/baseandroidproject/feature/login/bean/UserInfo.java b/app/src/main/java/com/tsy/baseandroidproject/feature/login/bean/UserInfo.java new file mode 100644 index 0000000..a998ffa --- /dev/null +++ b/app/src/main/java/com/tsy/baseandroidproject/feature/login/bean/UserInfo.java @@ -0,0 +1,9 @@ +package com.tsy.baseandroidproject.feature.login.bean; + +/** + * Created by tsy on 16/8/30. + */ +public class UserInfo { + public String uid; + public String userName; +} diff --git a/app/src/main/java/com/tsy/baseandroidproject/feature/login/contract/LoginContract.java b/app/src/main/java/com/tsy/baseandroidproject/feature/login/contract/LoginContract.java new file mode 100644 index 0000000..45dc16c --- /dev/null +++ b/app/src/main/java/com/tsy/baseandroidproject/feature/login/contract/LoginContract.java @@ -0,0 +1,42 @@ +package com.tsy.baseandroidproject.feature.login.contract; + +import com.tsy.baseandroidproject.Base.BasePresenter; +import com.tsy.baseandroidproject.Base.BaseView; +import com.tsy.baseandroidproject.feature.login.bean.UserInfo; + +/** + * Login接口层 + * Created by tsy on 16/8/30. + */ +public interface LoginContract { + + interface View extends BaseView { + /** + * 跳转Home + */ + void goHome(); + } + + interface Presenter extends BasePresenter { + /** + * login + * @param phone + * @param password + */ + void onLogin(String phone, String password); + } + + interface Interactor { + /** + * do login + * @param phone + * @param password + * @param callback + */ + void doLogin(String phone, String password, LoginCallback callback); + interface LoginCallback { + void onSuccess(UserInfo user_info); + void onFailure(String msg); + } + } +} diff --git a/app/src/main/java/com/tsy/baseandroidproject/feature/login/interactor/LoginInteractor.java b/app/src/main/java/com/tsy/baseandroidproject/feature/login/interactor/LoginInteractor.java new file mode 100644 index 0000000..fc40273 --- /dev/null +++ b/app/src/main/java/com/tsy/baseandroidproject/feature/login/interactor/LoginInteractor.java @@ -0,0 +1,34 @@ +package com.tsy.baseandroidproject.feature.login.interactor; + +import android.os.Handler; + +import com.tsy.baseandroidproject.feature.login.bean.UserInfo; +import com.tsy.baseandroidproject.feature.login.contract.LoginContract; + +/** + * Login Interactor层 + * Created by tsy on 16/8/30. + */ +public class LoginInteractor implements LoginContract.Interactor { + + public LoginInteractor() { + + } + + @Override + public void doLogin(String phone, String password, final LoginCallback callback) { + //模拟异步网络请求登录 + + Handler handler = new Handler(); + + handler.postDelayed(new Runnable() { + @Override + public void run() { + UserInfo userInfo = new UserInfo(); + userInfo.uid = "1212121"; + userInfo.userName = "tsy12321"; + callback.onSuccess(userInfo); + } + }, 2000); + } +} diff --git a/app/src/main/java/com/tsy/baseandroidproject/feature/login/presenter/LoginPresenter.java b/app/src/main/java/com/tsy/baseandroidproject/feature/login/presenter/LoginPresenter.java new file mode 100644 index 0000000..cd31736 --- /dev/null +++ b/app/src/main/java/com/tsy/baseandroidproject/feature/login/presenter/LoginPresenter.java @@ -0,0 +1,51 @@ +package com.tsy.baseandroidproject.feature.login.presenter; + +import com.tsy.baseandroidproject.feature.login.bean.UserInfo; +import com.tsy.baseandroidproject.feature.login.contract.LoginContract; +import com.tsy.baseandroidproject.feature.login.interactor.LoginInteractor; +import com.tsy.sdk.myutil.StringUtils; + +/** + * Login presenter层 + * Created by tsy on 16/8/30. + */ +public class LoginPresenter implements LoginContract.Presenter { + + private LoginContract.View mView; + private LoginContract.Interactor mInteractor; + + public LoginPresenter(LoginContract.View view) { + mView = view; + mInteractor = new LoginInteractor(); + } + + @Override + public void start() { + + } + + @Override + public void onLogin(String phone, String password) { + if(StringUtils.isEmpty(phone)) { + mView.showToast("Empty phone"); + return; + } + + if(StringUtils.isEmpty(password)) { + mView.showToast("Empty password"); + return; + } + + mInteractor.doLogin(phone, password, new LoginContract.Interactor.LoginCallback() { + @Override + public void onSuccess(UserInfo user_info) { + mView.goHome(); + } + + @Override + public void onFailure(String msg) { + mView.showToast(msg); + } + }); + } +} diff --git a/app/src/main/java/com/tsy/baseandroidproject/feature/login/view/LoginActivity.java b/app/src/main/java/com/tsy/baseandroidproject/feature/login/view/LoginActivity.java new file mode 100644 index 0000000..453d161 --- /dev/null +++ b/app/src/main/java/com/tsy/baseandroidproject/feature/login/view/LoginActivity.java @@ -0,0 +1,61 @@ +package com.tsy.baseandroidproject.feature.login.view; + +import android.os.Bundle; +import android.widget.EditText; + +import com.tsy.baseandroidproject.Base.BaseActivity; +import com.tsy.baseandroidproject.GlobalApp; +import com.tsy.baseandroidproject.R; +import com.tsy.baseandroidproject.feature.login.contract.LoginContract; +import com.tsy.baseandroidproject.feature.login.presenter.LoginPresenter; +import com.tsy.sdk.myutil.ToastUtils; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; + +public class LoginActivity extends BaseActivity implements LoginContract.View { + + @BindView(R.id.editPhone) + EditText editPhone; + + @BindView(R.id.editPassword) + EditText editPassword; + + private LoginContract.Presenter mPresenter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_login); + ButterKnife.bind(this); + + mPresenter = new LoginPresenter(this); + } + + @OnClick(R.id.btnLogin) + public void onLogin() { + mPresenter.onLogin(editPhone.getText().toString(), editPassword.getText().toString()); + } + + @OnClick(R.id.txtRegister) + public void goRegister() { + ToastUtils.showShort(GlobalApp.getInstance().getContext(), "goRegister"); + } + + @OnClick(R.id.txtForgetPwd) + public void goForgetPwd() { + ToastUtils.showShort(GlobalApp.getInstance().getContext(), "goForgetPwd"); + } + + @Override + public void showToast(String msg) { + ToastUtils.showShort(GlobalApp.getInstance().getContext(), msg); + } + + @Override + public void goHome() { + //跳转Home页面 + ToastUtils.showShort(GlobalApp.getInstance().getContext(), "登录成功, 跳转Home页面"); + } +} diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml new file mode 100644 index 0000000..14e9814 --- /dev/null +++ b/app/src/main/res/layout/activity_login.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +