diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b21fdfd..d14250d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,14 +15,14 @@ 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/Home/contract/HomeContract.java b/app/src/main/java/com/tsy/baseandroidproject/feature/Home/contract/HomeContract.java new file mode 100644 index 0000000..cdd4598 --- /dev/null +++ b/app/src/main/java/com/tsy/baseandroidproject/feature/Home/contract/HomeContract.java @@ -0,0 +1,22 @@ +package com.tsy.baseandroidproject.feature.Home.contract; + +import com.tsy.baseandroidproject.Base.BasePresenter; +import com.tsy.baseandroidproject.Base.BaseView; + +/** + * Created by tsy on 16/8/30. + */ +public interface HomeContract { + + interface View extends BaseView { + + } + + interface Presenter extends BasePresenter { + void onPost(); + } + + interface Interactor { + + } +} diff --git a/app/src/main/java/com/tsy/baseandroidproject/feature/Home/interactor/HomeInteractor.java b/app/src/main/java/com/tsy/baseandroidproject/feature/Home/interactor/HomeInteractor.java new file mode 100644 index 0000000..538b061 --- /dev/null +++ b/app/src/main/java/com/tsy/baseandroidproject/feature/Home/interactor/HomeInteractor.java @@ -0,0 +1,9 @@ +package com.tsy.baseandroidproject.feature.Home.interactor; + +import com.tsy.baseandroidproject.feature.Home.contract.HomeContract; + +/** + * Created by tsy on 16/8/30. + */ +public class HomeInteractor implements HomeContract.Interactor { +} diff --git a/app/src/main/java/com/tsy/baseandroidproject/feature/Home/presenter/HomePresenter.java b/app/src/main/java/com/tsy/baseandroidproject/feature/Home/presenter/HomePresenter.java new file mode 100644 index 0000000..e3c8d09 --- /dev/null +++ b/app/src/main/java/com/tsy/baseandroidproject/feature/Home/presenter/HomePresenter.java @@ -0,0 +1,40 @@ +package com.tsy.baseandroidproject.feature.Home.presenter; + +import com.tsy.baseandroidproject.feature.Home.contract.HomeContract; +import com.tsy.baseandroidproject.feature.Home.interactor.HomeInteractor; +import com.tsy.baseandroidproject.feature.login.contract.LoginContract; +import com.tsy.baseandroidproject.feature.login.interactor.LoginInteractor; + +/** + * Created by tsy on 16/8/30. + */ +public class HomePresenter implements HomeContract.Presenter { + + private HomeContract.View mView; + private HomeContract.Interactor mInteractor; + private LoginContract.Interactor mLoginInteractor; + + public HomePresenter(HomeContract.View view) { + mView = view; + mInteractor = new HomeInteractor(); + mLoginInteractor = new LoginInteractor(); + } + + @Override + public void start() { + + } + + @Override + public void onPost() { + //判断用户有没有登录 + if(!mLoginInteractor.isLogin()) { + // 跳转登录 + // TODO: 16/8/30 + return; + } + + //跳转发帖页面 + // TODO: 16/8/30 + } +} diff --git a/app/src/main/java/com/tsy/baseandroidproject/feature/Home/view/HomeActivity.java b/app/src/main/java/com/tsy/baseandroidproject/feature/Home/view/HomeActivity.java new file mode 100644 index 0000000..6135836 --- /dev/null +++ b/app/src/main/java/com/tsy/baseandroidproject/feature/Home/view/HomeActivity.java @@ -0,0 +1,35 @@ +package com.tsy.baseandroidproject.feature.Home.view; + +import android.os.Bundle; + +import com.tsy.baseandroidproject.Base.BaseActivity; +import com.tsy.baseandroidproject.R; +import com.tsy.baseandroidproject.feature.Home.contract.HomeContract; +import com.tsy.baseandroidproject.feature.Home.presenter.HomePresenter; + +import butterknife.ButterKnife; +import butterknife.OnClick; + +public class HomeActivity extends BaseActivity implements HomeContract.View { + + private HomeContract.Presenter mPresnter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_home); + ButterKnife.bind(this); + + mPresnter = new HomePresenter(this); + } + + @OnClick(R.id.btnPost) + public void onPost() { + mPresnter.onPost(); + } + + @Override + public void showToast(String msg) { + + } +} 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..257c3da --- /dev/null +++ b/app/src/main/java/com/tsy/baseandroidproject/feature/login/bean/UserInfo.java @@ -0,0 +1,15 @@ +package com.tsy.baseandroidproject.feature.login.bean; + +import java.io.Serializable; + +/** + * Created by tsy on 16/8/30. + */ +public class UserInfo implements Serializable { + + private static final long serialVersionUID = 1L; // 定义序列化ID + + public String uid; + public String userName; + public String token; +} 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..5f9b497 --- /dev/null +++ b/app/src/main/java/com/tsy/baseandroidproject/feature/login/contract/LoginContract.java @@ -0,0 +1,54 @@ +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); + } + + /** + * 是否登录 + * @return + */ + boolean isLogin(); + + /** + * 获取当前登录用户 + * @return + */ + UserInfo getLoginUser(); + } +} 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..444831d --- /dev/null +++ b/app/src/main/java/com/tsy/baseandroidproject/feature/login/interactor/LoginInteractor.java @@ -0,0 +1,64 @@ +package com.tsy.baseandroidproject.feature.login.interactor; + +import android.os.Handler; + +import com.tsy.baseandroidproject.GlobalApp; +import com.tsy.baseandroidproject.feature.login.bean.UserInfo; +import com.tsy.baseandroidproject.feature.login.contract.LoginContract; +import com.tsy.sdk.acache.ACache; +import com.tsy.sdk.myokhttp.MyOkHttp; +import com.tsy.sdk.myutil.StringUtils; + +/** + * Login Interactor层 + * Created by tsy on 16/8/30. + */ +public class LoginInteractor implements LoginContract.Interactor { + + private MyOkHttp mApi; + private ACache mCache; + + //缓存key + private final String CACHE_KEY_USERINFO = "CACHE_KEY_USERINFO"; + + public LoginInteractor() { + mApi = MyOkHttp.get(); + mCache = ACache.get(GlobalApp.getInstance().getContext()); + } + + @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"; + userInfo.token = "wqw13w12312wsqw12"; + + //存入缓存 + mCache.put(CACHE_KEY_USERINFO, userInfo); + + callback.onSuccess(userInfo); + } + }, 2000); + } + + @Override + public boolean isLogin() { + UserInfo userInfo = (UserInfo) mCache.getAsObject(CACHE_KEY_USERINFO); + if(!StringUtils.isEmpty(userInfo.uid) && !StringUtils.isEmpty(userInfo.token)) { + return true; + } + return false; + } + + @Override + public UserInfo getLoginUser() { + return (UserInfo) mCache.getAsObject(CACHE_KEY_USERINFO); + } +} 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..05e435b --- /dev/null +++ b/app/src/main/java/com/tsy/baseandroidproject/feature/login/view/LoginActivity.java @@ -0,0 +1,67 @@ +package com.tsy.baseandroidproject.feature.login.view; + +import android.content.Intent; +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.Home.view.HomeActivity; +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页面"); + + Intent intent = new Intent(this, HomeActivity.class); + startActivity(intent); + finish(); + } +} diff --git a/app/src/main/res/layout/activity_root.xml b/app/src/main/res/layout/activity_home.xml similarity index 50% rename from app/src/main/res/layout/activity_root.xml rename to app/src/main/res/layout/activity_home.xml index 5b0f5f1..6f98d52 100644 --- a/app/src/main/res/layout/activity_root.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -1,5 +1,5 @@ - + android:orientation="vertical" + tools:context="com.tsy.baseandroidproject.feature.Home.view.HomeActivity"> - - +