├── app ├── .gitignore ├── src │ └── main │ │ ├── res │ │ ├── mipmap-xxhdpi │ │ │ ├── splash.png │ │ │ ├── ic_launcher.png │ │ │ ├── arrow_right_black.png │ │ │ ├── arrow_right_white.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── tab_fist_no.png │ │ │ ├── tab_fist_yes.png │ │ │ ├── tab_fourth_no.png │ │ │ ├── tab_second_no.png │ │ │ ├── tab_third_no.png │ │ │ ├── tab_third_yes.png │ │ │ ├── tab_fourth_yes.png │ │ │ ├── tab_second_yes.png │ │ │ ├── title_back_gray.png │ │ │ ├── title_back_white.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── drawable │ │ │ ├── shape_text_cursor_drawable.xml │ │ │ ├── shape_square_dark_blue.xml │ │ │ ├── shape_circle_gray.xml │ │ │ ├── shape_circle_dark_blue.xml │ │ │ ├── bg_round_white.xml │ │ │ ├── shape_toast_bg.xml │ │ │ ├── selector_main_bottom_navigation_icon_first.xml │ │ │ ├── selector_main_bottom_navigation_icon_fourth.xml │ │ │ ├── selector_main_bottom_navigation_icon_secoud.xml │ │ │ ├── selector_main_bottom_navigation_icon_third.xml │ │ │ ├── shape_border_btn_blue_circle.xml │ │ │ ├── shape_border_btn_gray_rectangle.xml │ │ │ ├── shape_border_btn_blue_rectangle.xml │ │ │ ├── shape_btn_blue_circle.xml │ │ │ └── ic_launcher_background.xml │ │ ├── xml │ │ │ └── network_security_config.xml │ │ ├── values │ │ │ ├── dimens.xml │ │ │ ├── ids.xml │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ ├── attr.xml │ │ │ └── styles.xml │ │ ├── anim │ │ │ ├── left_push_out.xml │ │ │ └── right_push_in.xml │ │ ├── values-zh │ │ │ └── strings.xml │ │ ├── layout │ │ │ ├── fragment_fourth.xml │ │ │ ├── fragment_second.xml │ │ │ ├── fragment_third.xml │ │ │ ├── toast_view.xml │ │ │ ├── fragment_first.xml │ │ │ ├── activity_splash.xml │ │ │ ├── view_edit_input.xml │ │ │ ├── layout_company_person.xml │ │ │ ├── activity_main.xml │ │ │ ├── view_comm_title_bar.xml │ │ │ ├── dialog_common_round.xml │ │ │ ├── activity_login.xml │ │ │ └── activity_settings.xml │ │ └── values-en │ │ │ └── strings.xml │ │ ├── java │ │ └── com │ │ │ └── lxb │ │ │ └── freeAndroid │ │ │ ├── frame │ │ │ ├── mvp │ │ │ │ ├── IModel.java │ │ │ │ ├── IPresenter.java │ │ │ │ ├── IView.java │ │ │ │ ├── BasePresenter.java │ │ │ │ └── BaseModel.java │ │ │ ├── base │ │ │ │ ├── Constants.java │ │ │ │ ├── OnFragmentInteractionListener.java │ │ │ │ ├── BaseViewHolder.java │ │ │ │ ├── AppConfig.java │ │ │ │ ├── BaseResponseBean.java │ │ │ │ ├── BasesActivity.java │ │ │ │ ├── OrdinaryBaseActivity.java │ │ │ │ ├── BaseFragment.java │ │ │ │ └── AppApplication.java │ │ │ └── http │ │ │ │ ├── ApiUrl.java │ │ │ │ ├── interceptor │ │ │ │ ├── TestLogInterceptor.java │ │ │ │ ├── DefaultInterceptor.java │ │ │ │ └── HttpLogInterceptor.java │ │ │ │ ├── Service.java │ │ │ │ ├── gsonConverterFactory │ │ │ │ ├── GsonRequestBodyConverter.java │ │ │ │ ├── CustomGsonConverterFactory.java │ │ │ │ └── GsonResponseBodyConverter.java │ │ │ │ ├── RetrofitManager.java │ │ │ │ └── ResponseObserver.java │ │ │ └── project │ │ │ ├── mainDemo │ │ │ ├── MainBean.java │ │ │ ├── fragment │ │ │ │ ├── thirdFragment │ │ │ │ │ ├── ThirdPresenter.java │ │ │ │ │ ├── ThirdContract.java │ │ │ │ │ ├── ThirdModelImpl.java │ │ │ │ │ └── ThirdFragment.java │ │ │ │ ├── fourthFragment │ │ │ │ │ ├── FourthPresenter.java │ │ │ │ │ ├── FourthContract.java │ │ │ │ │ ├── FourthModelImpl.java │ │ │ │ │ └── FourthFragment.java │ │ │ │ ├── secondFragment │ │ │ │ │ ├── SecondPresenter.java │ │ │ │ │ ├── SecondContract.java │ │ │ │ │ ├── SecondModelImpl.java │ │ │ │ │ └── SecondFragment.java │ │ │ │ └── firstFragment │ │ │ │ │ ├── FirstContract.java │ │ │ │ │ ├── FirstModelImpl.java │ │ │ │ │ ├── FirstPresenter.java │ │ │ │ │ └── FirstFragment.java │ │ │ ├── presenter │ │ │ │ └── MainPresenter.java │ │ │ ├── MainContract.java │ │ │ ├── MainModelImpl.java │ │ │ └── SplashActivity.java │ │ │ ├── modulesDemo │ │ │ └── mineModule │ │ │ │ ├── login │ │ │ │ ├── LoginBean.java │ │ │ │ ├── LoginContract.java │ │ │ │ ├── LoginModelImpl.java │ │ │ │ ├── LoginPresenter.java │ │ │ │ └── LoginActivity.java │ │ │ │ └── SettingsActivity.java │ │ │ ├── utils │ │ │ ├── GlideUtils │ │ │ │ ├── GlideCatchConfig.java │ │ │ │ ├── GlideCacheModule.java │ │ │ │ └── GlideCatchUtil.java │ │ │ ├── StringFilterUtils.java │ │ │ ├── ToastUtils │ │ │ │ ├── ToastUtil.java │ │ │ │ └── ToastView.java │ │ │ ├── SizeUtils.java │ │ │ ├── FileIOUtils.java │ │ │ ├── GsonUtils.java │ │ │ ├── AppUtils.java │ │ │ ├── FeatureUtils.java │ │ │ ├── SoftInputUtils.java │ │ │ ├── EditTextUtils.java │ │ │ ├── GPSUtils.java │ │ │ └── LanguageUtils.java │ │ │ └── views │ │ │ └── EditInputView.java │ │ └── AndroidManifest.xml ├── build.gradle └── proguard-rules.pro ├── settings.gradle ├── 附件 ├── 目录.jpg ├── splash.png └── titleLogo.jpg ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitignore ├── 项目目录结构说明.txt ├── gradle.properties ├── README.md └── gradlew.bat /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /附件/目录.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/附件/目录.jpg -------------------------------------------------------------------------------- /附件/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/附件/splash.png -------------------------------------------------------------------------------- /附件/titleLogo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/附件/titleLogo.jpg -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xxhdpi/splash.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_fist_no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xhdpi/tab_fist_no.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_fist_yes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xhdpi/tab_fist_yes.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_fourth_no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xhdpi/tab_fourth_no.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_second_no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xhdpi/tab_second_no.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_third_no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xhdpi/tab_third_no.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_third_yes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xhdpi/tab_third_yes.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_fourth_yes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xhdpi/tab_fourth_yes.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_second_yes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xhdpi/tab_second_yes.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/title_back_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xhdpi/title_back_gray.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/title_back_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xhdpi/title_back_white.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/arrow_right_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xxhdpi/arrow_right_black.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/arrow_right_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xxhdpi/arrow_right_white.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lixiangbin/FreeAndroid/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_text_cursor_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_square_dark_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /local.properties.rej 5 | /.idea 6 | /.idea 7 | /.idea 8 | /.idea 9 | /.idea 10 | /.idea 11 | .DS_Store 12 | /build 13 | app/build/ 14 | /captures 15 | .externalNativeBuild 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_gray.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_dark_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_round_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/anim/left_push_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/anim/right_push_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/frame/mvp/IModel.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.frame.mvp; 2 | 3 | /** 4 | * 业务名: Model 顶层接口 5 | * 功能说明: 6 | * 编写日期: xxxx/8/25 0025. 7 | * 作者: 李相斌 8 | *

9 | * 历史记录 10 | * 1、修改日期: 11 | * 修改人: 12 | * 修改内容: 13 | */ 14 | public interface IModel { 15 | 16 | //解除相关绑定或rx异步任务 17 | void onDestroy(); 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/MainBean.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo; 2 | 3 | /** 4 | * 业务名:main实体类 5 | * 功能说明: 6 | * 编写日期: 2020-05-08. 7 | * 作者: 李相斌 8 | *

9 | * 历史记录 10 | * 1、修改日期: 11 | * 修改人: 12 | * 修改内容: 13 | */ 14 | public class MainBean { 15 | public int id; 16 | public String num; 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_toast_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/frame/mvp/IPresenter.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.frame.mvp; 2 | 3 | /** 4 | * 业务名: Presenter 顶层接口 5 | * 功能说明: 6 | * 编写日期: xxxx-08-23. 7 | * 作者: 李相斌 8 | *

9 | * 历史记录 10 | * 1、修改日期: 11 | * 修改人: 12 | * 修改内容: 13 | */ 14 | public interface IPresenter { 15 | //绑定 16 | void bind(); 17 | //解除绑定 18 | void onDestroy(); 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_main_bottom_navigation_icon_first.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/modulesDemo/mineModule/login/LoginBean.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.modulesDemo.mineModule.login; 2 | 3 | /** 4 | * 业务名: 登录业务bean示例 5 | * 功能说明: 6 | * 编写日期: xxxx-09-23. 7 | * 作者: 李相斌 8 | *

9 | * 历史记录 10 | * 1、修改日期: 11 | * 修改人: 12 | * 修改内容: 13 | */ 14 | public class LoginBean { 15 | public int uid; 16 | public String token; 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_main_bottom_navigation_icon_fourth.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_main_bottom_navigation_icon_secoud.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_main_bottom_navigation_icon_third.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_border_btn_blue_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/frame/base/Constants.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.frame.base; 2 | 3 | /** 4 | * 业务名:公共常量 5 | * 功能说明: 6 | * 编写日期: xxxx-08-27. 7 | * 作者: 李相斌 8 | *

9 | * 历史记录 10 | * 1、修改日期: 11 | * 修改人: 12 | * 修改内容: 13 | */ 14 | public final class Constants { 15 | 16 | // 多语言 17 | public final static String LANGUAGE = "LANGUAGE"; 18 | public final static String COUNTRY = "COUNTRY"; 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/frame/http/ApiUrl.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.frame.http; 2 | 3 | /** 4 | * 业务名: API 接口地址 5 | * 功能说明: 6 | * 编写日期: xxxx-08-26. 7 | * 作者: 李相斌 8 | *

9 | * 历史记录 10 | * 1、修改日期: 11 | * 修改人: 12 | * 修改内容: 13 | */ 14 | public class ApiUrl { 15 | public static final String BASE_URL = "http://192.168.10.92:8080/demo_myweb/"; 16 | public static final String API_TEST = "RetrofigNullJsonTest"; 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/frame/base/OnFragmentInteractionListener.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.frame.base; 2 | 3 | 4 | import android.os.Bundle; 5 | 6 | /** 7 | * 业务名:交互监听 8 | * 功能说明:Activity与Fragment数据交互接口 9 | * 编写日期: xxxx-09-02. 10 | * 作者: 李相斌 11 | *

12 | * 历史记录 13 | * 1、修改日期: 14 | * 修改人: 15 | * 修改内容: 16 | */ 17 | public interface OnFragmentInteractionListener { 18 | void onFragmentInteraction(Bundle bundle); 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/frame/base/BaseViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.frame.base; 2 | 3 | import android.view.View; 4 | 5 | import butterknife.ButterKnife; 6 | 7 | /** 8 | * 业务名:基础ViewHolder封装 9 | * 功能说明: 10 | * 编写日期: xxxx-08-28. 11 | * 作者: 李相斌 12 | *

13 | * 历史记录 14 | * 1、修改日期: 15 | * 修改人: 16 | * 修改内容: 17 | */ 18 | public class BaseViewHolder { 19 | public BaseViewHolder(View item) { 20 | ButterKnife.bind(this, item); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/frame/base/AppConfig.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.frame.base; 2 | 3 | /** 4 | * 业务名: APP 配置信息 5 | * 功能说明: 6 | * 编写日期: xxxx-08-27. 7 | * 作者: 李相斌 8 | *

9 | * 历史记录 10 | * 1、修改日期: 11 | * 修改人: 12 | * 修改内容: 13 | */ 14 | public final class AppConfig { 15 | //调试模式 16 | public static final boolean isDebug = true; 17 | //版本 18 | public final static String VER = "1.0"; 19 | //app缓存目录 20 | public static final String CASH_DOWNLOAD = "caeForum/download"; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/frame/mvp/IView.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.frame.mvp; 2 | 3 | import android.content.Context; 4 | 5 | 6 | /** 7 | * 业务名: View 顶层接口 8 | * 功能说明: 9 | * 编写日期: xxxx/8/25 0025. 10 | * 作者: 李相斌 11 | *

12 | * 历史记录 13 | * 1、修改日期: 14 | * 修改人: 15 | * 修改内容: 16 | */ 17 | public interface IView { 18 | 19 | /** 20 | * 获取context 21 | * @return Context 22 | */ 23 | Context getContext(); 24 | 25 | /** 26 | * 信息提示 27 | */ 28 | void showMsg(String msg); 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_border_btn_gray_rectangle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_border_btn_blue_rectangle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/frame/http/interceptor/TestLogInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.frame.http.interceptor; 2 | 3 | import android.util.Log; 4 | 5 | import okhttp3.logging.HttpLoggingInterceptor; 6 | 7 | /** 8 | * 业务名:测试Logger框架 9 | * 功能说明: 10 | * 编写日期: xxxx-08-28. 11 | * 作者: 李相斌 12 | *

13 | * 历史记录 14 | * 1、修改日期: 15 | * 修改人: 16 | * 修改内容: 17 | */ 18 | public class TestLogInterceptor implements HttpLoggingInterceptor.Logger { 19 | @Override 20 | public void log(String message) { 21 | Log.d("HttpLogInfo-Logger", message); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_btn_blue_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/utils/GlideUtils/GlideCatchConfig.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.utils.GlideUtils; 2 | 3 | 4 | /** 5 | * 业务名: Glide缓存配置文件 6 | * 功能说明: 7 | * 编写日期: xxxx-09-11 8 | * 作者: 李相斌 9 | *

10 | * 历史记录 11 | * 1、修改日期: 12 | * 修改人: 13 | * 修改内容: 14 | */ 15 | 16 | public class GlideCatchConfig { 17 | 18 | // 图片缓存最大容量,150M,根据自己的需求进行修改 19 | public static final int GLIDE_CATCH_SIZE = 1024 * 1024 * 150; 20 | //内存缓存大小 20MB 21 | public static final int GLIDE__MEMORY_CATCH_SIZE = 1024 * 1024 * 20; 22 | // 图片缓存子目录 23 | public static final String GLIDE_CATCH_DIR = "image_catch"; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 极速框架 3 | 4 | 返回 5 | 6 | 首页 7 | 会员 8 | 订单 9 | 我的 10 | 11 | 12 | Free开源项目系统设置 13 | App语言: 14 | 设置 15 | 测试接口 16 | 登录示例 17 | 自动 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 极速框架 3 | 4 | 返回 5 | 6 | 首页 7 | 会员 8 | 订单 9 | 我的 10 | 11 | 12 | Free开源项目系统设置 13 | App语言: 14 | 设置 15 | 测试接口 16 | 登录示例 17 | 自动 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/fragment/thirdFragment/ThirdPresenter.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo.fragment.thirdFragment; 2 | 3 | 4 | import com.lxb.freeAndroid.frame.mvp.BasePresenter; 5 | 6 | /** 7 | * 业务名: 8 | * 功能说明: 9 | * 编写日期: xxxx-09-02. 10 | * 作者: 李相斌 11 | *

12 | * 历史记录 13 | * 1、修改日期: 14 | * 修改人: 15 | * 修改内容: 16 | */ 17 | public class ThirdPresenter extends BasePresenter { 18 | public ThirdPresenter(ThirdContract.CaeView view) { 19 | super(view); 20 | } 21 | 22 | @Override 23 | protected ThirdContract.CaeModel getModelImpl() { 24 | return new ThirdModelImpl(); 25 | } 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/fragment/fourthFragment/FourthPresenter.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo.fragment.fourthFragment; 2 | 3 | import com.lxb.freeAndroid.frame.mvp.BasePresenter; 4 | 5 | /** 6 | * 业务名: 7 | * 功能说明: 8 | * 编写日期: xxxx-09-02. 9 | * 作者: 李相斌 10 | *

11 | * 历史记录 12 | * 1、修改日期: 13 | * 修改人: 14 | * 修改内容: 15 | */ 16 | public class FourthPresenter extends BasePresenter { 17 | public FourthPresenter(FourthContract.CaeView view) { 18 | super(view); 19 | } 20 | 21 | @Override 22 | protected FourthContract.CaeModel getModelImpl() { 23 | return new FourthModelImpl(); 24 | } 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/fragment/secondFragment/SecondPresenter.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo.fragment.secondFragment; 2 | 3 | import com.lxb.freeAndroid.frame.mvp.BasePresenter; 4 | 5 | /** 6 | * 业务名: 7 | * 功能说明: 8 | * 编写日期: xxxx-09-02. 9 | * 作者: 李相斌 10 | *

11 | * 历史记录 12 | * 1、修改日期: 13 | * 修改人: 14 | * 修改内容: 15 | */ 16 | public class SecondPresenter extends BasePresenter { 17 | public SecondPresenter(SecondContract.CaeView view) { 18 | super(view); 19 | } 20 | 21 | @Override 22 | protected SecondContract.CaeModel getModelImpl() { 23 | return new SecondModelImpl(); 24 | } 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/frame/http/Service.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.frame.http; 2 | 3 | 4 | import com.lxb.freeAndroid.frame.base.BaseResponseBean; 5 | 6 | import java.util.Map; 7 | 8 | import io.reactivex.rxjava3.core.Observable; 9 | import retrofit2.http.FieldMap; 10 | import retrofit2.http.FormUrlEncoded; 11 | import retrofit2.http.POST; 12 | import retrofit2.http.Url; 13 | 14 | /** 15 | * 业务名: 公共Service接口 16 | * 功能说明: 17 | * 编写日期: xxxx-08-26. 18 | * 作者: 李相斌 19 | *

20 | * 历史记录 21 | * 1、修改日期: 22 | * 修改人: 23 | * 修改内容: 24 | */ 25 | public interface Service { 26 | @FormUrlEncoded 27 | @POST 28 | Observable executePost(@Url String url, @FieldMap Map map); 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/presenter/MainPresenter.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo.presenter; 2 | 3 | import com.lxb.freeAndroid.frame.mvp.BasePresenter; 4 | import com.lxb.freeAndroid.project.mainDemo.MainContract; 5 | import com.lxb.freeAndroid.project.mainDemo.MainModelImpl; 6 | 7 | /** 8 | * 作者:李相斌 9 | * 创建时期:xxxx-08-29 10 | * 方法说明: 11 | */ 12 | public class MainPresenter extends BasePresenter { 13 | 14 | public MainPresenter(MainContract.MainView view) { 15 | super(view); 16 | } 17 | 18 | @Override 19 | protected MainContract.MainModel getModelImpl() { 20 | return new MainModelImpl(); 21 | } 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_fourth.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/values-en/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | FreeAndroid 3 | 4 | Back 5 | 6 | Index 7 | Member 8 | Order 9 | Mine 10 | 11 | 12 | SystemSettings 13 | AppLanguage: 14 | Setting 15 | TestApi 16 | LoginDemo 17 | Auto 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/modulesDemo/mineModule/login/LoginContract.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.modulesDemo.mineModule.login; 2 | 3 | import com.lxb.freeAndroid.frame.http.ResponseObserver; 4 | import com.lxb.freeAndroid.frame.mvp.IModel; 5 | import com.lxb.freeAndroid.frame.mvp.IView; 6 | 7 | import java.util.HashMap; 8 | 9 | /** 10 | * 业务名:登陆 11 | * 功能说明: 12 | * 编写日期: xxxx-09-05. 13 | * 作者: 李相斌 14 | *

15 | * 历史记录 16 | * 1、修改日期: 17 | * 修改人: 18 | * 修改内容: 19 | */ 20 | public class LoginContract { 21 | 22 | 23 | interface LoginView extends IView { 24 | 25 | } 26 | 27 | interface LoginModel extends IModel { 28 | void requestLogin(HashMap paramMap, ResponseObserver responseObserver); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /项目目录结构说明.txt: -------------------------------------------------------------------------------- 1 | 2 | 【·项目框架目录结构说明·】 3 | │ 4 | ├─frame------------------------------【框架层目录】 5 | │ ├─base-------------------------------基础封装层 6 | │ ├─http ------------------------------网络框架层 7 | │ │ └─interceptor--------------------拦截器 8 | │ └─mvp--------------------------------设计模式层 9 | │ 10 | └─project----------------------------【主工程目录】 11 | ├─mainDemo-------------------------主页UI示例Demo 12 | │ └─fragment-----------------------Fragment 13 | ├─modulesDemo----------------------模块UI示例Demo 14 | │ ├─mineModule---------------------我的模块 15 | │ ├─——Module---------------------XX模块 16 | │ ├─——Module---------------------XX模块 17 | │ └─——Module---------------------XX模块 18 | ├─utils----------------------------工具类包 19 | └─views----------------------------自定义View包 20 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #3F8DE4 5 | #D81B60 6 | #FFFFFF 7 | #E4E4E4 8 | #000000 9 | #C5CACE 10 | #00FFFFFF 11 | 12 | 13 | #2E79CC 14 | #1C60AC 15 | #000000 16 | #CCCCCC 17 | #CCCCCC 18 | #4A4A4A 19 | #818181 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/modulesDemo/mineModule/login/LoginModelImpl.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.modulesDemo.mineModule.login; 2 | 3 | import com.lxb.freeAndroid.frame.http.ApiUrl; 4 | import com.lxb.freeAndroid.frame.http.ResponseObserver; 5 | import com.lxb.freeAndroid.frame.mvp.BaseModel; 6 | 7 | import java.util.HashMap; 8 | 9 | /** 10 | * 业务名:登录 11 | * 功能说明: 12 | * 编写日期: xxxx-09-05. 13 | * 作者: 李相斌 14 | *

15 | * 历史记录 16 | * 1、修改日期: 17 | * 修改人: 18 | * 修改内容: 19 | */ 20 | public class LoginModelImpl extends BaseModel implements LoginContract.LoginModel { 21 | @Override 22 | public void requestLogin(HashMap paramMap, ResponseObserver responseObserver) { 23 | requestNetworkDefault(paramMap, responseObserver, ApiUrl.API_TEST); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/fragment/firstFragment/FirstContract.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo.fragment.firstFragment; 2 | 3 | import com.lxb.freeAndroid.frame.base.BaseResponseBean; 4 | import com.lxb.freeAndroid.frame.http.ResponseObserver; 5 | import com.lxb.freeAndroid.frame.mvp.IModel; 6 | import com.lxb.freeAndroid.frame.mvp.IView; 7 | 8 | import java.util.HashMap; 9 | 10 | /** 11 | * 业务名: 12 | * 功能说明: 13 | * 编写日期: xxxx-09-02. 14 | * 作者: 李相斌 15 | *

16 | * 历史记录 17 | * 1、修改日期: 18 | * 修改人: 19 | * 修改内容: 20 | */ 21 | public class FirstContract { 22 | interface CaeView extends IView{ 23 | 24 | } 25 | 26 | interface CaeModel extends IModel{ 27 | void requestData(HashMap paramMap, ResponseObserver responseObserver); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/fragment/thirdFragment/ThirdContract.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo.fragment.thirdFragment; 2 | 3 | import com.lxb.freeAndroid.frame.base.BaseResponseBean; 4 | import com.lxb.freeAndroid.frame.http.ResponseObserver; 5 | import com.lxb.freeAndroid.frame.mvp.IModel; 6 | import com.lxb.freeAndroid.frame.mvp.IView; 7 | 8 | import java.util.HashMap; 9 | 10 | /** 11 | * 业务名: 12 | * 功能说明: 13 | * 编写日期: xxxx-09-02. 14 | * 作者: 李相斌 15 | *

16 | * 历史记录 17 | * 1、修改日期: 18 | * 修改人: 19 | * 修改内容: 20 | */ 21 | public class ThirdContract { 22 | interface CaeView extends IView{ 23 | 24 | } 25 | 26 | interface CaeModel extends IModel{ 27 | void requestData(HashMap paramMap, ResponseObserver responseObserver); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/fragment/fourthFragment/FourthContract.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo.fragment.fourthFragment; 2 | 3 | import com.lxb.freeAndroid.frame.base.BaseResponseBean; 4 | import com.lxb.freeAndroid.frame.http.ResponseObserver; 5 | import com.lxb.freeAndroid.frame.mvp.IModel; 6 | import com.lxb.freeAndroid.frame.mvp.IView; 7 | 8 | import java.util.HashMap; 9 | 10 | /** 11 | * 业务名: 12 | * 功能说明: 13 | * 编写日期: xxxx-09-02. 14 | * 作者: 李相斌 15 | *

16 | * 历史记录 17 | * 1、修改日期: 18 | * 修改人: 19 | * 修改内容: 20 | */ 21 | public class FourthContract { 22 | interface CaeView extends IView{ 23 | 24 | } 25 | 26 | interface CaeModel extends IModel{ 27 | void requestData(HashMap paramMap, ResponseObserver responseObserver); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/fragment/secondFragment/SecondContract.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo.fragment.secondFragment; 2 | 3 | import com.lxb.freeAndroid.frame.base.BaseResponseBean; 4 | import com.lxb.freeAndroid.frame.http.ResponseObserver; 5 | import com.lxb.freeAndroid.frame.mvp.IModel; 6 | import com.lxb.freeAndroid.frame.mvp.IView; 7 | 8 | import java.util.HashMap; 9 | 10 | /** 11 | * 业务名: 12 | * 功能说明: 13 | * 编写日期: xxxx-09-02. 14 | * 作者: 李相斌 15 | *

16 | * 历史记录 17 | * 1、修改日期: 18 | * 修改人: 19 | * 修改内容: 20 | */ 21 | public class SecondContract { 22 | interface CaeView extends IView{ 23 | 24 | } 25 | 26 | interface CaeModel extends IModel{ 27 | void requestData(HashMap paramMap, ResponseObserver responseObserver); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx1536m 10 | android.useAndroidX=true 11 | android.enableJetifier=true 12 | # When configured, Gradle will run in incubating parallel mode. 13 | # This option should only be used with decoupled projects. More details, visit 14 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 15 | # org.gradle.parallel=true 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_second.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/fragment/thirdFragment/ThirdModelImpl.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo.fragment.thirdFragment; 2 | 3 | import com.lxb.freeAndroid.frame.base.BaseResponseBean; 4 | import com.lxb.freeAndroid.frame.http.ApiUrl; 5 | import com.lxb.freeAndroid.frame.http.ResponseObserver; 6 | import com.lxb.freeAndroid.frame.mvp.BaseModel; 7 | 8 | import java.util.HashMap; 9 | 10 | /** 11 | * 业务名: 12 | * 功能说明: 13 | * 编写日期: xxxx-09-02. 14 | * 作者: 李相斌 15 | *

16 | * 历史记录 17 | * 1、修改日期: 18 | * 修改人: 19 | * 修改内容: 20 | */ 21 | public class ThirdModelImpl extends BaseModel implements ThirdContract.CaeModel { 22 | @Override 23 | public void requestData(HashMap paramMap, ResponseObserver responseObserver) { 24 | requestNetworkDefault(paramMap,responseObserver,ApiUrl.API_TEST); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/fragment/firstFragment/FirstModelImpl.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo.fragment.firstFragment; 2 | 3 | import com.lxb.freeAndroid.frame.base.BaseResponseBean; 4 | import com.lxb.freeAndroid.frame.http.ApiUrl; 5 | import com.lxb.freeAndroid.frame.http.ResponseObserver; 6 | import com.lxb.freeAndroid.frame.mvp.BaseModel; 7 | 8 | import java.util.HashMap; 9 | 10 | /** 11 | * 业务名: 12 | * 功能说明: 13 | * 编写日期: xxxx-09-02. 14 | * 作者: 李相斌 15 | *

16 | * 历史记录 17 | * 1、修改日期: 18 | * 修改人: 19 | * 修改内容: 20 | */ 21 | public class FirstModelImpl extends BaseModel implements FirstContract.CaeModel { 22 | @Override 23 | public void requestData(HashMap paramMap, ResponseObserver responseObserver) { 24 | requestNetworkDefault(paramMap, responseObserver, ApiUrl.API_TEST); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/fragment/fourthFragment/FourthModelImpl.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo.fragment.fourthFragment; 2 | 3 | import com.lxb.freeAndroid.frame.base.BaseResponseBean; 4 | import com.lxb.freeAndroid.frame.http.ApiUrl; 5 | import com.lxb.freeAndroid.frame.http.ResponseObserver; 6 | import com.lxb.freeAndroid.frame.mvp.BaseModel; 7 | 8 | import java.util.HashMap; 9 | 10 | /** 11 | * 业务名: 12 | * 功能说明: 13 | * 编写日期: xxxx-09-02. 14 | * 作者: 李相斌 15 | *

16 | * 历史记录 17 | * 1、修改日期: 18 | * 修改人: 19 | * 修改内容: 20 | */ 21 | public class FourthModelImpl extends BaseModel implements FourthContract.CaeModel { 22 | @Override 23 | public void requestData(HashMap paramMap, ResponseObserver responseObserver) { 24 | requestNetworkDefault(paramMap,responseObserver,ApiUrl.API_TEST); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/fragment/secondFragment/SecondModelImpl.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo.fragment.secondFragment; 2 | 3 | import com.lxb.freeAndroid.frame.base.BaseResponseBean; 4 | import com.lxb.freeAndroid.frame.http.ApiUrl; 5 | import com.lxb.freeAndroid.frame.http.ResponseObserver; 6 | import com.lxb.freeAndroid.frame.mvp.BaseModel; 7 | 8 | import java.util.HashMap; 9 | 10 | /** 11 | * 业务名: 12 | * 功能说明: 13 | * 编写日期: xxxx-09-02. 14 | * 作者: 李相斌 15 | *

16 | * 历史记录 17 | * 1、修改日期: 18 | * 修改人: 19 | * 修改内容: 20 | */ 21 | public class SecondModelImpl extends BaseModel implements SecondContract.CaeModel { 22 | @Override 23 | public void requestData(HashMap paramMap, ResponseObserver responseObserver) { 24 | requestNetworkDefault(paramMap,responseObserver,ApiUrl.API_TEST); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/frame/base/BaseResponseBean.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.frame.base; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * 业务名: 基础解析实体类 7 | * 功能说明: 8 | * 编写日期: xxxx-08-26 9 | * 作者: 李相斌 10 | *

11 | * 历史记录 12 | * 1、修改日期: 13 | * 修改人: 14 | * 修改内容: 15 | */ 16 | 17 | public class BaseResponseBean implements Serializable { 18 | //服务器返回码 19 | public String returnCode; 20 | //是否成功 21 | public int succeed; 22 | //服务器提示信息 23 | public String returnMsg; 24 | //服务器返回数据 25 | public T result; 26 | 27 | @Override 28 | public String toString() { 29 | return "BaseResponseBean{" + 30 | "returnCode='" + returnCode + '\'' + 31 | ", succeed=" + succeed + 32 | ", returnMsg='" + returnMsg + '\'' + 33 | ", result=" + result + 34 | '}'; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/utils/StringFilterUtils.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.utils; 2 | 3 | import java.util.regex.Matcher; 4 | import java.util.regex.Pattern; 5 | 6 | /** 7 | * 业务名:字符串过滤工具类 8 | * 功能说明: 9 | * 编写日期: xxxx-09-09. 10 | * 作者: 李相斌 11 | *

12 | * 历史记录 13 | * 1、修改日期: 14 | * 修改人: 15 | * 修改内容: 16 | */ 17 | public class StringFilterUtils { 18 | 19 | //表情符过滤 20 | public static String specileCharFilter(String str) { 21 | // 只允许字母、数字和汉字 ()()—— 22 | String regEx = "[^a-zA-Z0-9\u4E00-\u9FA5,.,@。\\s\\[\\]()()【】*_\\-——…·]"; 23 | // String regEx = "[^a-zA-Z0-9\u4E00-\u9FA5\\p{P}\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}]"; 24 | // String regEx = "[^a-zA-Z0-9\u4E00-\u9FA5+\\p{P}\\p{Z}\\p{M}\\p{N}]"; 25 | Pattern p = Pattern.compile(regEx); 26 | Matcher m = p.matcher(str); 27 | return m.replaceAll("").trim(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/MainContract.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo; 2 | 3 | import com.lxb.freeAndroid.frame.http.ResponseObserver; 4 | import com.lxb.freeAndroid.frame.mvp.IModel; 5 | import com.lxb.freeAndroid.frame.mvp.IView; 6 | 7 | import java.util.HashMap; 8 | 9 | /** 10 | * 业务名:契约 Contract --主页 11 | * 功能说明:契约 12 | * 编写日期: xxxx/3/26 0026. 13 | * 作者: 李相斌 14 | *

15 | * 历史记录 16 | * 1、修改日期: 17 | * 修改人: 18 | * 修改内容: 19 | */ 20 | public class MainContract { 21 | 22 | 23 | public interface MainView extends IView { 24 | 25 | } 26 | 27 | public interface MainModel extends IModel { 28 | //登录请求 29 | void test(HashMap paramMap, ResponseObserver responseObserver); 30 | 31 | //退出请求 32 | void quit(HashMap paramMap, ResponseObserver responseObserver); 33 | } 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_third.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/utils/ToastUtils/ToastUtil.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.utils.ToastUtils; 2 | 3 | import android.content.Context; 4 | import android.text.TextUtils; 5 | import android.view.Gravity; 6 | 7 | /** 8 | * 业务名:ToastUtils 9 | * 功能说明:自定义Toast 10 | * 编写日期: xxxx-08-29. 11 | * 作者: 12 | *

13 | * 历史记录 14 | * 1、修改日期: 15 | * 修改人: 16 | * 修改内容: 17 | */ 18 | public class ToastUtil { 19 | 20 | public static void toastShow(Context context, String text) { 21 | if(!TextUtils.isEmpty(text)) { 22 | ToastView toast = new ToastView(context, text); 23 | toast.setGravity(Gravity.CENTER, 0, 0); 24 | toast.show(); 25 | } 26 | } 27 | 28 | 29 | public static void toastShow(Context context, int text) { 30 | ToastView toast = new ToastView(context, text); 31 | toast.setGravity(Gravity.CENTER, 0, 0); 32 | toast.show(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/res/layout/toast_view.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 13 | 14 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/mainDemo/MainModelImpl.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.mainDemo; 2 | 3 | 4 | import com.lxb.freeAndroid.frame.http.ApiUrl; 5 | import com.lxb.freeAndroid.frame.http.ResponseObserver; 6 | import com.lxb.freeAndroid.frame.mvp.BaseModel; 7 | 8 | import java.util.HashMap; 9 | 10 | /** 11 | * 业务名:MainModel的实现类 12 | * 功能说明: 13 | * 编写日期: xxxx/8/26 0026. 14 | * 作者: 李相斌 15 | *

16 | * 历史记录 17 | * 1、修改日期: 18 | * 修改人: 19 | * 修改内容: 20 | */ 21 | public class MainModelImpl extends BaseModel implements MainContract.MainModel { 22 | 23 | 24 | @Override 25 | public void test(HashMap paramMap, ResponseObserver responseObserver) { 26 | requestNetworkDefault(paramMap, responseObserver, ApiUrl.API_TEST); 27 | } 28 | 29 | @Override 30 | public void quit(HashMap paramMap, ResponseObserver responseObserver) { 31 | requestNetworkDefault(paramMap, responseObserver, ApiUrl.API_TEST); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/project/utils/SizeUtils.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.project.utils; 2 | 3 | import android.content.Context; 4 | 5 | /** 6 | * 业务名: 尺寸转换工具类 7 | * 功能说明: 8 | * 编写日期: 9 | * 作者: 李相斌 10 | *

11 | * 历史记录 12 | * 1、修改日期: 13 | * 修改人: 14 | * 修改内容: 15 | */ 16 | 17 | public class SizeUtils { 18 | 19 | public static int dp2px(Context context, float dpValue) { 20 | if (dpValue <= 0) return 0; 21 | float scale = context.getResources().getDisplayMetrics().density; 22 | return (int) (dpValue * scale + 0.5f); 23 | } 24 | 25 | public static float sp2px(Context context, float spValue) { 26 | if (spValue <= 0) return 0; 27 | float fontScale = context.getResources().getDisplayMetrics().scaledDensity; 28 | return (int) (spValue * fontScale + 0.5); 29 | } 30 | 31 | public static int px2sp(Context context, float pxValue) { 32 | float fontScale = context.getResources().getDisplayMetrics().scaledDensity; 33 | return (int) (pxValue / fontScale + 0.5f); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/frame/base/BasesActivity.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.frame.base; 2 | 3 | import com.lxb.freeAndroid.frame.mvp.BasePresenter; 4 | 5 | /** 6 | * 业务名: BasesActivity 7 | * 功能说明: MVP Activity基类 8 | * 编写日期: xxxx-08-23 9 | * 作者: 李相斌 10 | *

11 | * 历史记录 12 | * 1、修改日期: 13 | * 修改人: 14 | * 修改内容: 15 | */ 16 | 17 | public abstract class BasesActivity

extends OrdinaryBaseActivity { 18 | 19 | //Presenter实例 20 | protected P presenter; 21 | 22 | @Override 23 | void mvpPresenterInit() { 24 | super.mvpPresenterInit(); 25 | //实例化Presenter 26 | presenter = initPresenter(); 27 | //绑定presenter 28 | if (presenter != null) { 29 | presenter.bind(); 30 | } 31 | } 32 | 33 | /** 34 | * 作者:李相斌 35 | * 创建时期:xxxx-08-23 36 | * 方法说明:初始化Presenter 37 | */ 38 | protected abstract P initPresenter(); 39 | 40 | 41 | @Override 42 | protected void onDestroy() { 43 | super.onDestroy(); 44 | //解除presenter绑定 45 | if (presenter != null) { 46 | presenter.onDestroy(); 47 | presenter = null; 48 | } 49 | System.gc(); 50 | } 51 | 52 | 53 | } 54 | -------------------------------------------------------------------------------- /app/src/main/java/com/lxb/freeAndroid/frame/mvp/BasePresenter.java: -------------------------------------------------------------------------------- 1 | package com.lxb.freeAndroid.frame.mvp; 2 | 3 | import java.util.HashMap; 4 | import java.util.LinkedHashMap; 5 | 6 | /** 7 | * 业务名:BasePresenter 8 | * 功能说明:Presenter基类 9 | * 编写日期: xxxx/8/25 0025. 10 | * 作者: 李相斌 11 | *

12 | * 历史记录 13 | * 1、修改日期: 14 | * 修改人: 15 | * 修改内容: 16 | */ 17 | public abstract class BasePresenter implements IPresenter { 18 | protected M model; 19 | protected V view; 20 | protected LinkedHashMap paramsMap = new LinkedHashMap<>(); 21 | 22 | public BasePresenter(V view) { 23 | this.view = view; 24 | } 25 | 26 | /** 27 | * 作者:李相斌 28 | * 创建时期:xxxx-08-25 29 | * 方法说明:使Presenter层持有model(impl)并绑定 30 | */ 31 | protected abstract M getModelImpl(); 32 | 33 | @Override 34 | public void bind() { 35 | model = getModelImpl(); 36 | } 37 | 38 | /** 39 | * 作者:李相斌 40 | * 创建时期:xxxx-08-25 41 | * 方法说明:解除model、view, 与activity生命周期绑定,解除rx订阅 42 | */ 43 | @Override 44 | public void onDestroy() { 45 | if (this.model != null) { 46 | this.model.onDestroy(); 47 | this.model = null; 48 | } 49 | this.view = null; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_first.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 |