diff --git a/.gitignore b/.gitignore
index eef2d45..63fc54f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,5 +39,6 @@ captures/
.idea/vcs.xml
.idea/libraries
+
# Keystore files
*.jks
diff --git a/README.md b/README.md
index 24d3dad..438a057 100644
--- a/README.md
+++ b/README.md
@@ -1,28 +1,55 @@
-### 你知道吗?Github的 “star” 功能就像微信朋友圈中的 **“点赞”** 功能,如果你觉得我的代码对你有帮助,你可以帮我点个赞,随手 “star” 一下。
-
-
+# 应用截图
+
![]() |
+ ![]() |
+ ![]() |
+ ![]() |
+
Activity基类
- * - * @author 2016/12/2 17:33 - * @version V1.0.0 - * @name BaseActivity - */ -public abstract class BaseActivity extends AppCompatActivity { - - /** - * Setup the toolbar. - * - * @param toolbar toolbar - * @param hideTitle 是否隐藏Title - */ - protected void setupToolBar(Toolbar toolbar, boolean hideTitle) { - setSupportActionBar(toolbar); - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setHomeAsUpIndicator(R.drawable.ic_arrow_back); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - if (hideTitle) { - //隐藏Title - actionBar.setDisplayShowTitleEnabled(false); - } - } - } - - - /** - * 封装的findViewByID方法 - */ - @SuppressWarnings("unchecked") - protectedActivity基类
+ * + * @author 2016/12/2 17:33 + * @version V1.0.0 + * @name BaseActivity + */ +@Keep +public abstract class BaseActivity extends AppCompatActivity { + + + /** + * 封装的findViewByID方法 + */ + @SuppressWarnings("unchecked") + protectedFragment的基类
+ * + * @author 张华洋 + * @name BaseFragment + */ +@Keep +public abstract class BaseFragment extends Fragment { + + protected BaseActivity mActivity; + + @Override + public void onAttach(Context context) { + super.onAttach(context); + this.mActivity = (BaseActivity) context; + } + + + /** + * 获取宿主Activity + * + * @return BaseActivity + */ + protected BaseActivity getHoldingActivity() { + return mActivity; + } + + + /** + * 添加fragment + * + * @param fragment + * @param frameId + */ + protected void addFragment(BaseFragment fragment, @IdRes int frameId) { + Utils.checkNotNull(fragment); + getHoldingActivity().addFragment(fragment, frameId); + + } + + + /** + * 替换fragment + * + * @param fragment + * @param frameId + */ + protected void replaceFragment(BaseFragment fragment, @IdRes int frameId) { + Utils.checkNotNull(fragment); + getHoldingActivity().replaceFragment(fragment, frameId); + } + + + /** + * 隐藏fragment + * + * @param fragment + */ + protected void hideFragment(BaseFragment fragment) { + Utils.checkNotNull(fragment); + getHoldingActivity().hideFragment(fragment); + } + + + /** + * 显示fragment + * + * @param fragment + */ + protected void showFragment(BaseFragment fragment) { + Utils.checkNotNull(fragment); + getHoldingActivity().showFragment(fragment); + } + + + /** + * 移除Fragment + * + * @param fragment + */ + protected void removeFragment(BaseFragment fragment) { + Utils.checkNotNull(fragment); + getHoldingActivity().removeFragment(fragment); + + } + + + /** + * 弹出栈顶部的Fragment + */ + protected void popFragment() { + getHoldingActivity().popFragment(); + } + +} diff --git a/lib_common/src/main/java/com/guiying/module/common/base/BasePresenter.java b/lib_common/src/main/java/com/guiying/module/common/base/BasePresenter.java new file mode 100644 index 0000000..be56ad9 --- /dev/null +++ b/lib_common/src/main/java/com/guiying/module/common/base/BasePresenter.java @@ -0,0 +1,16 @@ +package com.guiying.module.common.base; + +import android.support.annotation.Keep; + +/** + *Presenter的基类
+ * + * @author 张华洋 + * @name BasePresenter + */ +@Keep +public interface BasePresenter { + + void start(); + +} diff --git a/lib_common/src/main/java/com/guiying/module/common/base/BaseView.java b/lib_common/src/main/java/com/guiying/module/common/base/BaseView.java new file mode 100644 index 0000000..e1b0b21 --- /dev/null +++ b/lib_common/src/main/java/com/guiying/module/common/base/BaseView.java @@ -0,0 +1,17 @@ +package com.guiying.module.common.base; + + +import android.support.annotation.Keep; + +/** + *View接口的基类
+ * + * @author 张华洋 + * @name BaseView + */ +@Keep +public interface BaseView类说明
+ * + * @author 张华洋 2017/9/20 22:23 + * @version V2.8.3 + * @name ApplicationDelegate + */ +@Keep +public interface IApplicationDelegate { + + void onCreate(); + + void onTerminate(); + + void onLowMemory(); + + void onTrimMemory(int level); + +} diff --git a/lib_common/src/main/java/com/guiying/module/common/base/IViewDelegate.java b/lib_common/src/main/java/com/guiying/module/common/base/IViewDelegate.java new file mode 100644 index 0000000..3c35b8e --- /dev/null +++ b/lib_common/src/main/java/com/guiying/module/common/base/IViewDelegate.java @@ -0,0 +1,21 @@ +package com.guiying.module.common.base; + + +import android.support.annotation.Keep; +import android.view.View; + +/** + *类说明
+ * + * @author 张华洋 2018/1/4 22:10 + * @version V2.8.3 + * @name IFragmentDelegate + */ +@Keep +public interface IViewDelegate { + + BaseFragment getFragment(String name); + + View getView(String name); + +} diff --git a/lib_common/src/main/java/com/guiying/common/http/InfoCallback.java b/lib_common/src/main/java/com/guiying/module/common/base/InfoCallback.java similarity index 72% rename from lib_common/src/main/java/com/guiying/common/http/InfoCallback.java rename to lib_common/src/main/java/com/guiying/module/common/base/InfoCallback.java index ec1fda9..8a5cf9b 100644 --- a/lib_common/src/main/java/com/guiying/common/http/InfoCallback.java +++ b/lib_common/src/main/java/com/guiying/module/common/base/InfoCallback.java @@ -1,4 +1,6 @@ -package com.guiying.common.http; +package com.guiying.module.common.base; + +import android.support.annotation.Keep; /** *数据回调接口
@@ -7,6 +9,7 @@ * @version V1.2.0 * @name InfoCallback */ +@Keep public interface InfoCallback图片加载工具类
+ * + * @name ImageUtils + */ +public class ImageUtils { + + /** + * 默认加载 + */ + public static void loadImageView(String path, ImageView mImageView) { + Glide.with(mImageView.getContext()).load(path).into(mImageView); + } + + public static void loadImageWithError(String path, int errorRes, ImageView mImageView) { + Glide.with(mImageView.getContext()) + .load(path) + .crossFade() + .diskCacheStrategy(DiskCacheStrategy.SOURCE) + .error(errorRes) + .into(mImageView); + } + + /** + * 设置加载中以及加载失败图片 + */ + public static void loadImageWithLoading(String path, ImageView mImageView, int lodingImage, int errorRes) { + Glide.with(mImageView.getContext()).load(path).placeholder(lodingImage). + error(errorRes).into(mImageView); + } + + /** + * 设置加载动画 + * api也提供了几个常用的动画:比如crossFade() + */ + public static void loadImageViewAnim(String path, int anim, ImageView mImageView) { + Glide.with(mImageView.getContext()).load(path).animate(anim).into(mImageView); + } + + + /** + * 加载为bitmap + * + * @param path 图片地址 + * @param listener 回调 + */ + public static void loadBitMap(String path, final onLoadBitmap listener) { + Glide.with(Utils.getContext()).load(path).asBitmap().into(new SimpleTarget在Retrofit中接口会导致泛型擦除,所以这里回调使用Class
diff --git a/lib_common/src/main/java/com/guiying/common/utils/CloseUtils.java b/lib_common/src/main/java/com/guiying/module/common/utils/CloseUtils.java similarity index 96% rename from lib_common/src/main/java/com/guiying/common/utils/CloseUtils.java rename to lib_common/src/main/java/com/guiying/module/common/utils/CloseUtils.java index dae8eca..336cde0 100644 --- a/lib_common/src/main/java/com/guiying/common/utils/CloseUtils.java +++ b/lib_common/src/main/java/com/guiying/module/common/utils/CloseUtils.java @@ -1,4 +1,4 @@ -package com.guiying.common.utils; +package com.guiying.module.common.utils; import java.io.Closeable; import java.io.IOException; diff --git a/lib_common/src/main/java/com/guiying/common/utils/NetworkUtils.java b/lib_common/src/main/java/com/guiying/module/common/utils/NetworkUtils.java similarity index 99% rename from lib_common/src/main/java/com/guiying/common/utils/NetworkUtils.java rename to lib_common/src/main/java/com/guiying/module/common/utils/NetworkUtils.java index 06c8800..e788077 100644 --- a/lib_common/src/main/java/com/guiying/common/utils/NetworkUtils.java +++ b/lib_common/src/main/java/com/guiying/module/common/utils/NetworkUtils.java @@ -1,4 +1,4 @@ -package com.guiying.common.utils; +package com.guiying.module.common.utils; import android.content.Context; import android.content.Intent; diff --git a/lib_common/src/main/java/com/guiying/module/common/utils/ScreenLockUtil.java b/lib_common/src/main/java/com/guiying/module/common/utils/ScreenLockUtil.java new file mode 100644 index 0000000..d85c106 --- /dev/null +++ b/lib_common/src/main/java/com/guiying/module/common/utils/ScreenLockUtil.java @@ -0,0 +1,84 @@ +package com.guiying.module.common.utils; + +import android.app.Activity; +import android.app.KeyguardManager; +import android.app.KeyguardManager.KeyguardLock; +import android.content.Context; +import android.os.PowerManager; +import android.os.PowerManager.WakeLock; +import android.util.Log; + +import java.util.HashMap; + +/** + * 用于保持屏幕高亮的工具 + */ +public class ScreenLockUtil { + private static final String TAG = "ScreenLockUtil"; + + private ScreenLockUtil() { + throw new UnsupportedOperationException("cannot be instantiated"); + } + + static private HashMap解决图片缩放崩溃的问题
+ * @name HackyViewPager + * @author 张华洋 2017/9/27 10:10 + * @version V1.1 + */ +public class HackyViewPager extends ViewPager { + + public HackyViewPager(Context context) { + super(context); + } + + public HackyViewPager(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + try { + return super.onInterceptTouchEvent(ev); + } catch (IllegalArgumentException | ArrayIndexOutOfBoundsException e) { + e.printStackTrace(); + } + return false; + } +} diff --git a/lib_common/src/main/java/com/guiying/module/common/widget/NoScrollViewPager.java b/lib_common/src/main/java/com/guiying/module/common/widget/NoScrollViewPager.java new file mode 100644 index 0000000..be8f2b9 --- /dev/null +++ b/lib_common/src/main/java/com/guiying/module/common/widget/NoScrollViewPager.java @@ -0,0 +1,41 @@ +package com.guiying.module.common.widget; + +import android.content.Context; +import android.support.v4.view.ViewPager; +import android.util.AttributeSet; +import android.view.MotionEvent; + +/** + *可以禁止滑动翻页的ViewPager
+ * + * @author 张华洋 2017/9/27 10:10 + * @version V1.1 + * @name NoScrollViewPager + */ +public class NoScrollViewPager extends ViewPager { + + private boolean isPagingEnabled = true; + + public NoScrollViewPager(Context context) { + super(context); + } + + public NoScrollViewPager(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + return this.isPagingEnabled && super.onTouchEvent(event); + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent event) { + return this.isPagingEnabled && super.onInterceptTouchEvent(event); + } + + public void setPagerEnabled(boolean b) { + this.isPagingEnabled = b; + } + +} diff --git a/module_app/build.gradle b/module_app/build.gradle index d3fd2bf..2776c5c 100644 --- a/module_app/build.gradle +++ b/module_app/build.gradle @@ -1,5 +1,13 @@ apply plugin: 'com.android.application' +// Create a variable called keystorePropertiesFile, and initialize it to your +// keystore.properties file, in the rootProject folder. +def keystorePropertiesFile = rootProject.file("keystore.properties") +// Initialize a new Properties() object called keystoreProperties. +def keystoreProperties = new Properties() +// Load your keystore.properties file into the keystoreProperties object. +keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) + static def buildTime() { return new Date().format("yyyyMMdd"); } @@ -7,26 +15,31 @@ static def buildTime() { android { signingConfigs { release { - keyAlias 'guiying712' - keyPassword 'guiying712' - storeFile file('/mykey.jks') - storePassword 'guiying712' + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile file(keystoreProperties['storeFile']) + storePassword keystoreProperties['storePassword'] } } - compileSdkVersion rootProject.ext.compileSdkVersion - buildToolsVersion rootProject.ext.buildToolsVersion + compileSdkVersion build_versions.target_sdk defaultConfig { - applicationId "com.guiying.androidmodulepattern" - minSdkVersion rootProject.ext.minSdkVersion - targetSdkVersion rootProject.ext.targetSdkVersion - versionCode rootProject.ext.versionCode - versionName rootProject.ext.versionName - multiDexEnabled false + applicationId "com.guiying.module" + minSdkVersion build_versions.min_sdk + targetSdkVersion build_versions.target_sdk + versionCode 1 + versionName "1.0" + multiDexEnabled true //打包时间 resValue "string", "build_time", buildTime() } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + buildTypes { release { //更改AndroidManifest.xml中预先定义好占位符信息 @@ -60,13 +73,12 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - annotationProcessor "com.github.mzule.activityrouter:compiler:$rootProject.annotationProcessor" - if (isModule.toBoolean()) { - compile project(':lib_common') - } else { - compile project(':module_main') - compile project(':module_girls') - compile project(':module_news') + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation deps.support.multidex + implementation project(':lib_common') + if (!isModule.toBoolean()) { + implementation project(':module_main') + implementation project(':module_girls') + implementation project(':module_news') } } diff --git a/module_app/src/main/AndroidManifest.xml b/module_app/src/main/AndroidManifest.xml index 1fe6dcd..315d6cb 100644 --- a/module_app/src/main/AndroidManifest.xml +++ b/module_app/src/main/AndroidManifest.xml @@ -1,28 +1,15 @@这里仅需做一些初始化的工作
* * @author 张华洋 2017/2/15 20:14 * @version V1.2.0 @@ -36,25 +38,31 @@ resToastText = R.string.crash_toast_text, resDialogText = R.string.crash_dialog_text, resDialogTitle = R.string.crash_dialog_title) -@Modules({"main", "girls", "news"}) public class MyApplication extends BaseApplication { @Override public void onCreate() { super.onCreate(); + if (Utils.isAppDebug()) { + //开启InstantRun之后,一定要在ARouter.init之前调用openDebug + ARouter.openDebug(); + ARouter.openLog(); + } + ARouter.init(this); //崩溃日志记录初始化 ACRA.init(this); ACRA.getErrorReporter().removeAllReportSenders(); ACRA.getErrorReporter().setReportSender(new CrashReportSender()); } -// @Override -// protected void attachBaseContext(Context base) { -// super.attachBaseContext(base); -// // dex突破65535的限制 -// MultiDex.install(this); -// } + + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + // dex突破65535的限制 + MultiDex.install(this); + } /** diff --git a/module_girls/build.gradle b/module_girls/build.gradle index fbf8446..a1838bd 100644 --- a/module_girls/build.gradle +++ b/module_girls/build.gradle @@ -5,16 +5,24 @@ if (isModule.toBoolean()) { } android { - compileSdkVersion rootProject.ext.compileSdkVersion - buildToolsVersion rootProject.ext.buildToolsVersion - + compileSdkVersion build_versions.target_sdk defaultConfig { - minSdkVersion rootProject.ext.minSdkVersion - targetSdkVersion rootProject.ext.targetSdkVersion - versionCode rootProject.ext.versionCode - versionName rootProject.ext.versionName + minSdkVersion build_versions.min_sdk + targetSdkVersion build_versions.target_sdk + versionCode 1 + versionName "1.0" + + javaCompileOptions { + annotationProcessorOptions { + arguments = [ moduleName : project.getName() ] + } + } } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } sourceSets { main { @@ -29,15 +37,17 @@ android { } } } - //设置了resourcePrefix值后,所有的资源名必须以指定的字符串做前缀,否则会报错。 - //但是resourcePrefix这个值只能限定xml里面的资源,并不能限定图片资源,所有图片资源仍然需要手动去修改资源名。 - //resourcePrefix "girls_" - + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - annotationProcessor "com.github.mzule.activityrouter:compiler:$rootProject.annotationProcessor" - compile project(':lib_common') + implementation fileTree(dir: 'libs', include: ['*.jar']) + annotationProcessor deps.arouter_compiler + implementation project(':lib_common') } diff --git a/module_girls/src/main/AndroidManifest.xml b/module_girls/src/main/AndroidManifest.xml index 047ff58..48584ac 100644 --- a/module_girls/src/main/AndroidManifest.xml +++ b/module_girls/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@类说明
+ * + * @author 张华洋 2017/9/20 22:29 + * @version V2.8.3 + * @name MyDelegate + */ +@Keep +public class MyDelegate implements IApplicationDelegate { + + @Override + public void onCreate() { + //主动添加 + ViewManager.getInstance().addFragment(0, GirlsFragment.newInstance()); + } + + @Override + public void onTerminate() { + + } + + @Override + public void onLowMemory() { + + } + + @Override + public void onTrimMemory(int level) { + + } +} diff --git a/module_girls/src/main/java/com/guiying/module/girls/MyViewDelegate.java b/module_girls/src/main/java/com/guiying/module/girls/MyViewDelegate.java new file mode 100644 index 0000000..3d4294e --- /dev/null +++ b/module_girls/src/main/java/com/guiying/module/girls/MyViewDelegate.java @@ -0,0 +1,28 @@ +package com.guiying.module.girls; + +import android.support.annotation.Keep; +import android.view.View; + +import com.guiying.module.common.base.BaseFragment; +import com.guiying.module.common.base.IViewDelegate; + +/** + *类说明
+ * + * @author 张华洋 2018/1/4 22:16 + * @version V2.8.3 + * @name MyViewDelegate + */ +@Keep +public class MyViewDelegate implements IViewDelegate { + + @Override + public BaseFragment getFragment(String name) { + return GirlsFragment.newInstance(); + } + + @Override + public View getView(String name) { + return null; + } +} diff --git a/module_girls/src/main/java/com/guiying/girls/data/GirlsDataSource.java b/module_girls/src/main/java/com/guiying/module/girls/data/GirlsDataSource.java similarity index 71% rename from module_girls/src/main/java/com/guiying/girls/data/GirlsDataSource.java rename to module_girls/src/main/java/com/guiying/module/girls/data/GirlsDataSource.java index 4e92618..3f2755d 100644 --- a/module_girls/src/main/java/com/guiying/girls/data/GirlsDataSource.java +++ b/module_girls/src/main/java/com/guiying/module/girls/data/GirlsDataSource.java @@ -1,6 +1,6 @@ -package com.guiying.girls.data; +package com.guiying.module.girls.data; -import com.guiying.girls.data.bean.GirlsParser; +import com.guiying.module.girls.data.bean.GirlsParser; public interface GirlsDataSource { diff --git a/module_girls/src/main/java/com/guiying/girls/data/bean/Girls.java b/module_girls/src/main/java/com/guiying/module/girls/data/bean/Girls.java similarity index 98% rename from module_girls/src/main/java/com/guiying/girls/data/bean/Girls.java rename to module_girls/src/main/java/com/guiying/module/girls/data/bean/Girls.java index 162b6b5..26573c9 100644 --- a/module_girls/src/main/java/com/guiying/girls/data/bean/Girls.java +++ b/module_girls/src/main/java/com/guiying/module/girls/data/bean/Girls.java @@ -1,4 +1,4 @@ -package com.guiying.girls.data.bean; +package com.guiying.module.girls.data.bean; import android.os.Parcel; import android.os.Parcelable; diff --git a/module_girls/src/main/java/com/guiying/girls/data/bean/GirlsParser.java b/module_girls/src/main/java/com/guiying/module/girls/data/bean/GirlsParser.java similarity index 96% rename from module_girls/src/main/java/com/guiying/girls/data/bean/GirlsParser.java rename to module_girls/src/main/java/com/guiying/module/girls/data/bean/GirlsParser.java index b18db5c..d9c4d34 100644 --- a/module_girls/src/main/java/com/guiying/girls/data/bean/GirlsParser.java +++ b/module_girls/src/main/java/com/guiying/module/girls/data/bean/GirlsParser.java @@ -1,4 +1,4 @@ -package com.guiying.girls.data.bean; +package com.guiying.module.girls.data.bean; import java.util.List; diff --git a/module_girls/src/main/java/com/guiying/girls/data/source/RemoteGirlsDataSource.java b/module_girls/src/main/java/com/guiying/module/girls/data/source/RemoteGirlsDataSource.java similarity index 72% rename from module_girls/src/main/java/com/guiying/girls/data/source/RemoteGirlsDataSource.java rename to module_girls/src/main/java/com/guiying/module/girls/data/source/RemoteGirlsDataSource.java index ae343f3..457f412 100644 --- a/module_girls/src/main/java/com/guiying/girls/data/source/RemoteGirlsDataSource.java +++ b/module_girls/src/main/java/com/guiying/module/girls/data/source/RemoteGirlsDataSource.java @@ -1,12 +1,12 @@ -package com.guiying.girls.data.source; +package com.guiying.module.girls.data.source; -import com.guiying.common.http.DataType; -import com.guiying.common.http.HttpClient; -import com.guiying.common.http.OnResultListener; -import com.guiying.girls.Constants; -import com.guiying.girls.data.GirlsDataSource; -import com.guiying.girls.data.bean.GirlsParser; +import com.guiying.module.common.http.DataType; +import com.guiying.module.common.http.HttpClient; +import com.guiying.module.common.http.OnResultListener; +import com.guiying.module.girls.Constants; +import com.guiying.module.girls.data.GirlsDataSource; +import com.guiying.module.girls.data.bean.GirlsParser; diff --git a/module_girls/src/main/java/com/guiying/girls/girl/GirlActivity.java b/module_girls/src/main/java/com/guiying/module/girls/girl/GirlActivity.java similarity index 78% rename from module_girls/src/main/java/com/guiying/girls/girl/GirlActivity.java rename to module_girls/src/main/java/com/guiying/module/girls/girl/GirlActivity.java index a36b1e0..bd1dd78 100644 --- a/module_girls/src/main/java/com/guiying/girls/girl/GirlActivity.java +++ b/module_girls/src/main/java/com/guiying/module/girls/girl/GirlActivity.java @@ -1,12 +1,14 @@ -package com.guiying.girls.girl; +package com.guiying.module.girls.girl; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.view.WindowManager; -import com.guiying.common.base.BaseActivity; -import com.guiying.girls.Constants; -import com.guiying.girls.data.bean.Girls; +import com.alibaba.android.arouter.facade.annotation.Route; +import com.guiying.module.common.base.BaseActivity; +import com.guiying.module.common.widget.HackyViewPager; +import com.guiying.module.girls.Constants; +import com.guiying.module.girls.data.bean.Girls; import java.util.List; @@ -17,6 +19,7 @@ * @version V1.1 * @name GirlActivity */ +@Route(path = "/girls/detail") public class GirlActivity extends BaseActivity { @Override @@ -27,7 +30,7 @@ protected void onCreate(Bundle savedInstanceState) { if (getIntent() != null) { List类说明
diff --git a/module_girls/src/main/java/com/guiying/girls/main/GirlsView.java b/module_girls/src/main/java/com/guiying/module/girls/main/GirlsView.java similarity index 94% rename from module_girls/src/main/java/com/guiying/girls/main/GirlsView.java rename to module_girls/src/main/java/com/guiying/module/girls/main/GirlsView.java index 1c23e23..dc83d90 100644 --- a/module_girls/src/main/java/com/guiying/girls/main/GirlsView.java +++ b/module_girls/src/main/java/com/guiying/module/girls/main/GirlsView.java @@ -1,4 +1,4 @@ -package com.guiying.girls.main; +package com.guiying.module.girls.main; import android.content.Context; import android.content.Intent; @@ -11,11 +11,11 @@ import android.view.ViewStub; import android.widget.FrameLayout; -import com.guiying.common.utils.Utils; -import com.guiying.girls.Constants; -import com.guiying.girls.R; -import com.guiying.girls.data.bean.Girls; -import com.guiying.girls.girl.GirlActivity; +import com.guiying.module.common.utils.Utils; +import com.guiying.module.girls.Constants; +import com.guiying.module.girls.R; +import com.guiying.module.girls.data.bean.Girls; +import com.guiying.module.girls.girl.GirlActivity; import com.jude.easyrecyclerview.EasyRecyclerView; import com.jude.easyrecyclerview.adapter.BaseViewHolder; import com.jude.easyrecyclerview.adapter.RecyclerArrayAdapter; diff --git a/module_girls/src/main/java/debug/GirlsApplication.java b/module_girls/src/main/java/debug/GirlsApplication.java index b93eb55..052a4e6 100644 --- a/module_girls/src/main/java/debug/GirlsApplication.java +++ b/module_girls/src/main/java/debug/GirlsApplication.java @@ -1,8 +1,8 @@ package debug; -import com.guiying.common.base.BaseApplication; -import com.guiying.common.http.HttpClient; -import com.guiying.common.http.OnResultListener; +import com.guiying.module.common.base.BaseApplication; +import com.guiying.module.common.http.HttpClient; +import com.guiying.module.common.http.OnResultListener; import com.orhanobut.logger.Logger; /** diff --git a/module_girls/src/main/module/AndroidManifest.xml b/module_girls/src/main/module/AndroidManifest.xml index 4ae8556..f283bb9 100644 --- a/module_girls/src/main/module/AndroidManifest.xml +++ b/module_girls/src/main/module/AndroidManifest.xml @@ -1,6 +1,6 @@声明主要组件
- *- * 这个组件是应用默认启动的组件 - * - * @author 张华洋 2017/4/1 12:39 - * @version V1.2.0 - * @name Main - */ - -@Module("main") -public class Main { -} diff --git a/module_main/src/main/java/com/guiying/main/MainActivity.java b/module_main/src/main/java/com/guiying/main/MainActivity.java deleted file mode 100644 index 3dd1d64..0000000 --- a/module_main/src/main/java/com/guiying/main/MainActivity.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.guiying.main; - -import android.os.Bundle; -import android.support.design.widget.Snackbar; -import android.view.KeyEvent; -import android.view.View; -import android.widget.Button; - -import com.github.mzule.activityrouter.router.Routers; -import com.guiying.common.base.BaseActivity; -import com.guiying.common.base.BaseApplication; - -public class MainActivity extends BaseActivity implements View.OnClickListener { - - private long exitTime = 0; - protected Button newsButton; - protected Button girlsButton; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - newsButton = (Button) findViewById(R.id.news_button); - newsButton.setOnClickListener(MainActivity.this); - girlsButton = (Button) findViewById(R.id.girls_button); - girlsButton.setOnClickListener(MainActivity.this); - } - - @Override - public void onClick(View view) { - if (view.getId() == R.id.news_button) { - Routers.open(MainActivity.this, "module://news"); - } else if (view.getId() == R.id.girls_button) { - Routers.open(MainActivity.this, "module://girls"); - } - } - - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { - //两秒之内按返回键就会退出 - if ((System.currentTimeMillis() - exitTime) > 2000) { - Snackbar.make(girlsButton, getString(R.string.app_exit_hint), Snackbar.LENGTH_LONG).show(); - exitTime = System.currentTimeMillis(); - } else { - BaseApplication.getIns().exitApp(this); - } - return true; - } - return super.onKeyDown(keyCode, event); - } - -} diff --git a/module_main/src/main/java/com/guiying/module/main/BottomNavigationActivity.java b/module_main/src/main/java/com/guiying/module/main/BottomNavigationActivity.java new file mode 100644 index 0000000..51c27cf --- /dev/null +++ b/module_main/src/main/java/com/guiying/module/main/BottomNavigationActivity.java @@ -0,0 +1,86 @@ +package com.guiying.module.main; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.design.widget.BottomNavigationView; +import android.view.MenuItem; + +import com.guiying.module.common.base.BaseActivity; +import com.guiying.module.common.base.BaseFragment; +import com.guiying.module.common.base.ClassUtils; +import com.guiying.module.common.base.IViewDelegate; +import com.guiying.module.common.base.ViewManager; +import com.guiying.module.common.widget.NoScrollViewPager; + +import java.util.List; + +/** + *
+ * + * @author 张华洋 2017/9/27 10:23 + * @version V1.1 + * @name BottomNavigationActivity + */ +public class BottomNavigationActivity extends BaseActivity { + + private NoScrollViewPager mPager; + private List
Fragments适配器
+ * + * @author 张华洋 2017/9/27 10:14 + * @version V1.1 + * @name ResourcePagerAdapter + */ +public class FragmentAdapter extends FragmentStatePagerAdapter { + private List类说明
+ * + * @author 张华洋 2017/7/1 13:13 + * @version V1.2.0 + * @name MainActivity + */ +public class MainActivity extends BaseActivity implements View.OnClickListener { + + private long mExitTime = 0; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + findViewById(R.id.news_button).setOnClickListener(this); + findViewById(R.id.girls_button).setOnClickListener(this); + findViewById(R.id.fragment_button).setOnClickListener(this); + } + + @Override + public void onClick(View view) { + if (view.getId() == R.id.news_button) { + //跳转到NewsCenterActivity + ARouter.getInstance().build("/news/center").navigation(); + } else if (view.getId() == R.id.girls_button) { + //跳转到GirlsActivity + ARouter.getInstance().build("/girls/list").navigation(); + } else if (view.getId() == R.id.fragment_button) { + startActivity(new Intent(this, BottomNavigationActivity.class)); + } + } + + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { + //两秒之内按返回键就会退出 + if ((System.currentTimeMillis() - mExitTime) > 2000) { + ToastUtils.showShortToast(getString(R.string.app_exit_hint)); + mExitTime = System.currentTimeMillis(); + } else { + ViewManager.getInstance().exitApp(this); + } + return true; + } + return super.onKeyDown(keyCode, event); + } + +} diff --git a/module_main/src/main/java/debug/MainApplication.java b/module_main/src/main/java/debug/MainApplication.java index 293f166..24509f5 100644 --- a/module_main/src/main/java/debug/MainApplication.java +++ b/module_main/src/main/java/debug/MainApplication.java @@ -1,8 +1,8 @@ package debug; -import com.guiying.common.base.BaseApplication; -import com.guiying.common.http.HttpClient; -import com.guiying.common.http.OnResultListener; +import com.guiying.module.common.base.BaseApplication; +import com.guiying.module.common.http.HttpClient; +import com.guiying.module.common.http.OnResultListener; import com.orhanobut.logger.Logger; /** diff --git a/module_main/src/main/module/AndroidManifest.xml b/module_main/src/main/module/AndroidManifest.xml index fc3933a..0443b12 100644 --- a/module_main/src/main/module/AndroidManifest.xml +++ b/module_main/src/main/module/AndroidManifest.xml @@ -1,6 +1,6 @@类说明
+ * + * @author 张华洋 2017/9/20 22:29 + * @version V2.8.3 + * @name MyDelegate + */ +@Keep +public class MyDelegate implements IApplicationDelegate { + + @Override + public void onCreate() { + Logger.init("pattern"); + //主动添加 + ViewManager.getInstance().addFragment(0, NewsFragment.newInstance()); + } + + @Override + public void onTerminate() { + + } + + @Override + public void onLowMemory() { + + } + + @Override + public void onTrimMemory(int level) { + + } +} diff --git a/module_news/src/main/java/com/guiying/module/news/MyViewDelegate.java b/module_news/src/main/java/com/guiying/module/news/MyViewDelegate.java new file mode 100644 index 0000000..0620bb5 --- /dev/null +++ b/module_news/src/main/java/com/guiying/module/news/MyViewDelegate.java @@ -0,0 +1,28 @@ +package com.guiying.module.news; + +import android.support.annotation.Keep; +import android.view.View; + +import com.guiying.module.common.base.BaseFragment; +import com.guiying.module.common.base.IViewDelegate; + +/** + *类说明
+ * + * @author 张华洋 2018/1/4 22:16 + * @version V2.8.3 + * @name MyViewDelegate + */ +@Keep +public class MyViewDelegate implements IViewDelegate { + + @Override + public BaseFragment getFragment(String name) { + return NewsFragment.newInstance(); + } + + @Override + public View getView(String name) { + return null; + } +} diff --git a/module_news/src/main/java/com/guiying/module/news/NewsFragment.java b/module_news/src/main/java/com/guiying/module/news/NewsFragment.java new file mode 100644 index 0000000..93c039a --- /dev/null +++ b/module_news/src/main/java/com/guiying/module/news/NewsFragment.java @@ -0,0 +1,43 @@ +package com.guiying.module.news; + + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.guiying.module.common.base.BaseFragment; + + +/** + * A simple {@link Fragment} subclass. + */ +public class NewsFragment extends BaseFragment { + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @return A new instance of fragment NewsFragment. + */ + public static NewsFragment newInstance() { + return new NewsFragment(); + } + + + + public NewsFragment() { + // Required empty public constructor + } + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_news, container, false); + } + + +} diff --git a/module_news/src/main/java/com/guiying/module/news/data/NewsDataSource.java b/module_news/src/main/java/com/guiying/module/news/data/NewsDataSource.java new file mode 100644 index 0000000..8990f08 --- /dev/null +++ b/module_news/src/main/java/com/guiying/module/news/data/NewsDataSource.java @@ -0,0 +1,34 @@ +package com.guiying.module.news.data; + +import com.guiying.module.common.base.InfoCallback; +import com.guiying.module.news.data.bean.MessageDetail; +import com.guiying.module.news.data.bean.StoryList; + +/** + *类说明
+ * + * @author 张华洋 2017/4/20 22:02 + * @version V1.2.0 + * @name NewsDataSource + */ +public interface NewsDataSource { + + + /** + * 获取当天的新闻列表 + * + * @param date 日期 + * @param callback 回调 + */ + void getNewsList(String date, InfoCallback类说明
+ * + * @author 张华洋 2017/4/20 23:32 + * @version V1.2.0 + * @name RemoteNewsDataSource + */ +public class RemoteNewsDataSource implements NewsDataSource { + + @Override + public void getNewsList(String date, final InfoCallback类说明
+ * + * @author 张华洋 2017/7/1 13:13 + * @version V1.2.0 + * @name NewsDetailActivity + */ +@Route(path = "/news/detail") +public class NewsDetailActivity extends BaseActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + NewsDetailView detailView = new NewsDetailView(this); + setContentView(detailView); + String id = getIntent().getStringExtra("id"); + new NewsDetailPresenter(detailView).getNewsDetail(id); + } + +} diff --git a/module_news/src/main/java/com/guiying/module/news/detail/NewsDetailContract.java b/module_news/src/main/java/com/guiying/module/news/detail/NewsDetailContract.java new file mode 100644 index 0000000..6a21ef5 --- /dev/null +++ b/module_news/src/main/java/com/guiying/module/news/detail/NewsDetailContract.java @@ -0,0 +1,35 @@ +package com.guiying.module.news.detail; + +import com.guiying.module.common.base.BasePresenter; +import com.guiying.module.common.base.BaseView; +import com.guiying.module.news.data.bean.MessageDetail; + +/** + *类说明
+ * + * @author 张华洋 2017/2/22 20:33 + * @version V1.2.0 + * @name NewsContract + */ +public interface NewsDetailContract { + + interface View extends BaseView类说明
+ * + * @author 张华洋 2017/2/22 20:33 + * @version V1.2.0 + * @name GirlsPresenter + */ +public class NewsDetailPresenter implements NewsDetailContract.Presenter { + + private NewsDetailContract.View mView; + private NewsDataSource mDataSource; + + public NewsDetailPresenter(NewsDetailContract.View view) { + mView = view; + mDataSource = new RemoteNewsDataSource(); + mView.setPresenter(this); + } + + @Override + public void start() { + + } + + + @Override + public void getNewsDetail(String newsId) { + mDataSource.getNewsDetail(newsId, new InfoCallback类说明
+ * + * @author 张华洋 2017/7/1 13:18 + * @version V1.2.0 + * @name NewsDetailView + */ + +public class NewsDetailView extends FrameLayout implements NewsDetailContract.View { + + private boolean isActive = false; + private NewsDetailContract.Presenter mPresenter; + private ImageView mToolbarImage; + private TextView mToolbarText; + private CollapsingToolbarLayout mCollapsingLayout; + private TextView mDetailText; + + + public NewsDetailView(Context context) { + super(context); + initView(); + } + + public NewsDetailView(Context context, AttributeSet attrs) { + super(context, attrs); + initView(); + } + + private void initView() { + inflate(getContext(), R.layout.view_news_detail, this); + mToolbarImage = (ImageView) findViewById(R.id.toolbar_image); + mToolbarText = (TextView) findViewById(R.id.toolbar_text); + mCollapsingLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_layout); + mDetailText = (TextView) findViewById(R.id.news_detail_text); + + isActive = true; + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + isActive = true; + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + isActive = false; + } + + @Override + public boolean isActive() { + return isActive; + } + + + @Override + public void setPresenter(NewsDetailContract.Presenter presenter) { + mPresenter = presenter; + } + + @Override + public void showNewsDetail(MessageDetail detail) { + mCollapsingLayout.setTitle(detail.getTitle()); + //设置还没收缩时状态下字体颜色 + mCollapsingLayout.setExpandedTitleColor(Color.WHITE); + //设置收缩后Toolbar上字体的颜色 + mCollapsingLayout.setCollapsedTitleTextColor(Color.WHITE); + mToolbarText.setText(detail.getImage_source()); + Glide.with(getContext()) + .load(detail.getImage()) + .thumbnail(0.2f) + .into(mToolbarImage); + mDetailText.setMovementMethod(LinkMovementMethod.getInstance()); + mDetailText.setText(Html.fromHtml(detail.getBody(), new Html.ImageGetter() { + @Override + public Drawable getDrawable(String source) { + final URLDrawable urlDrawable = new URLDrawable(); + Glide.with(getContext()).load(source).asBitmap().into(new SimpleTarget类说明
+ * + * @author 张华洋 2017/4/20 22:26 + * @version V1.2.0 + * @name NewsCenterActivity + */ +@Route(path = "/news/center") public class NewsCenterActivity extends BaseActivity { protected Toolbar mToolBar; diff --git a/module_news/src/main/java/com/guiying/news/main/NewsListAdapter.java b/module_news/src/main/java/com/guiying/module/news/main/NewsListAdapter.java similarity index 68% rename from module_news/src/main/java/com/guiying/news/main/NewsListAdapter.java rename to module_news/src/main/java/com/guiying/module/news/main/NewsListAdapter.java index a7bf285..76e452f 100644 --- a/module_news/src/main/java/com/guiying/news/main/NewsListAdapter.java +++ b/module_news/src/main/java/com/guiying/module/news/main/NewsListAdapter.java @@ -1,14 +1,17 @@ -package com.guiying.news.main; +package com.guiying.module.news.main; import android.content.Context; +import android.content.Intent; +import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.guiying.news.R; -import com.guiying.news.data.bean.Story; +import com.guiying.module.news.R; +import com.guiying.module.news.data.bean.Story; +import com.guiying.module.news.detail.NewsDetailActivity; import com.jude.easyrecyclerview.adapter.BaseViewHolder; import com.jude.easyrecyclerview.adapter.RecyclerArrayAdapter; @@ -19,8 +22,6 @@ * @version V1.2.0 * @name NewsListAdapter */ - - public class NewsListAdapter extends RecyclerArrayAdapter类说明
diff --git a/module_news/src/main/java/com/guiying/news/main/NewsListPresenter.java b/module_news/src/main/java/com/guiying/module/news/main/NewsListPresenter.java similarity index 78% rename from module_news/src/main/java/com/guiying/news/main/NewsListPresenter.java rename to module_news/src/main/java/com/guiying/module/news/main/NewsListPresenter.java index 77f8ac5..8ac69db 100644 --- a/module_news/src/main/java/com/guiying/news/main/NewsListPresenter.java +++ b/module_news/src/main/java/com/guiying/module/news/main/NewsListPresenter.java @@ -1,9 +1,9 @@ -package com.guiying.news.main; +package com.guiying.module.news.main; -import com.guiying.common.http.InfoCallback; -import com.guiying.news.data.NewsDataSource; -import com.guiying.news.data.bean.StoryList; -import com.guiying.news.data.source.RemoteNewsDataSource; +import com.guiying.module.common.base.InfoCallback; +import com.guiying.module.news.data.NewsDataSource; +import com.guiying.module.news.data.bean.StoryList; +import com.guiying.module.news.data.source.RemoteNewsDataSource; /** *类说明
diff --git a/module_news/src/main/java/com/guiying/news/main/NewsListView.java b/module_news/src/main/java/com/guiying/module/news/main/NewsListView.java similarity index 95% rename from module_news/src/main/java/com/guiying/news/main/NewsListView.java rename to module_news/src/main/java/com/guiying/module/news/main/NewsListView.java index 70ce0d1..254aca0 100644 --- a/module_news/src/main/java/com/guiying/news/main/NewsListView.java +++ b/module_news/src/main/java/com/guiying/module/news/main/NewsListView.java @@ -1,4 +1,4 @@ -package com.guiying.news.main; +package com.guiying.module.news.main; import android.content.Context; import android.support.v4.content.ContextCompat; @@ -6,8 +6,8 @@ import android.support.v7.widget.LinearLayoutManager; import android.util.AttributeSet; -import com.guiying.news.R; -import com.guiying.news.data.bean.StoryList; +import com.guiying.module.news.R; +import com.guiying.module.news.data.bean.StoryList; import com.jude.easyrecyclerview.EasyRecyclerView; import com.jude.easyrecyclerview.adapter.RecyclerArrayAdapter; import com.jude.easyrecyclerview.decoration.DividerDecoration; diff --git a/module_news/src/main/java/com/guiying/news/main/NewsListViewAdapter.java b/module_news/src/main/java/com/guiying/module/news/main/NewsListViewAdapter.java similarity index 85% rename from module_news/src/main/java/com/guiying/news/main/NewsListViewAdapter.java rename to module_news/src/main/java/com/guiying/module/news/main/NewsListViewAdapter.java index 7e539cf..4fe1893 100644 --- a/module_news/src/main/java/com/guiying/news/main/NewsListViewAdapter.java +++ b/module_news/src/main/java/com/guiying/module/news/main/NewsListViewAdapter.java @@ -1,9 +1,11 @@ -package com.guiying.news.main; +package com.guiying.module.news.main; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; +import java.text.DateFormat; +import java.util.Calendar; import java.util.List; /** @@ -50,7 +52,10 @@ public CharSequence getPageTitle(int position) { if (mTabList == null) { return null; } - return mTabList.get(position); + Calendar displayDate = Calendar.getInstance(); + displayDate.add(Calendar.DAY_OF_YEAR, -position); + + return DateFormat.getDateInstance().format(displayDate.getTime()); } /** diff --git a/module_news/src/main/java/com/guiying/news/News.java b/module_news/src/main/java/com/guiying/news/News.java deleted file mode 100644 index fb73939..0000000 --- a/module_news/src/main/java/com/guiying/news/News.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.guiying.news; - -import com.github.mzule.activityrouter.annotation.Module; - -/** - *类说明
- * - * @author 张华洋 2017/2/15 16:31 - * @version V1.2.0 - * @name news - */ -@Module("news") -public class News { -} diff --git a/module_news/src/main/java/com/guiying/news/data/NewsDataSource.java b/module_news/src/main/java/com/guiying/news/data/NewsDataSource.java deleted file mode 100644 index e13c4a5..0000000 --- a/module_news/src/main/java/com/guiying/news/data/NewsDataSource.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.guiying.news.data; - -import com.guiying.common.http.InfoCallback; -import com.guiying.news.data.bean.StoryList; - -/** - *类说明
- * - * @author 张华洋 2017/4/20 22:02 - * @version V1.2.0 - * @name NewsDataSource - */ -public interface NewsDataSource { - - - /** - * 获取 - * - * @param date - * @param callback 回调 - */ - void getNewsList(String date, InfoCallback类说明
- * - * @author 张华洋 2017/4/20 23:32 - * @version V1.2.0 - * @name RemoteNewsDataSource - */ -public class RemoteNewsDataSource implements NewsDataSource { - - @Override - public void getNewsList(String date, final InfoCallback组件开发模式下,用于传递数据的启动Activity,集成模式下无效
+ * + * @author 张华洋 + * @version V1.2.0 + * @name LauncherActivity + */ +public class LauncherActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + //在这里传值给需要调试的Activity + Intent intent = new Intent(this, NewsDetailActivity.class); + intent.putExtra("id", "9500116"); + startActivity(intent); + finish(); + } + +} diff --git a/module_news/src/main/java/debug/NewsApplication.java b/module_news/src/main/java/debug/NewsApplication.java index e6af33e..8bcfdcb 100644 --- a/module_news/src/main/java/debug/NewsApplication.java +++ b/module_news/src/main/java/debug/NewsApplication.java @@ -1,11 +1,11 @@ package debug; -import com.guiying.common.base.BaseApplication; -import com.guiying.common.http.DataType; -import com.guiying.common.http.HttpClient; -import com.guiying.common.http.OnResultListener; -import com.guiying.news.Constants; -import com.guiying.news.data.bean.StoryList; +import com.guiying.module.common.base.BaseApplication; +import com.guiying.module.common.http.DataType; +import com.guiying.module.common.http.HttpClient; +import com.guiying.module.common.http.OnResultListener; +import com.guiying.module.news.Constants; +import com.guiying.module.news.data.bean.StoryList; import com.orhanobut.logger.Logger; /** diff --git a/module_news/src/main/module/AndroidManifest.xml b/module_news/src/main/module/AndroidManifest.xml index 45cb3b0..d16a659 100644 --- a/module_news/src/main/module/AndroidManifest.xml +++ b/module_news/src/main/module/AndroidManifest.xml @@ -1,6 +1,6 @@