From d0a6fe150ff01b712cf98d7b7e2a2a38ad224e5a Mon Sep 17 00:00:00 2001 From: leftcoding <137387869@qq.com> Date: Sat, 30 Sep 2017 23:03:10 +0800 Subject: [PATCH 01/27] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/leftcoding/http/api/HttpLogging.java | 39 +++++++++++++++ .../leftcoding/http/api/OkHttpBuilder.java | 49 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 httplib/src/main/java/com/leftcoding/http/api/HttpLogging.java create mode 100644 httplib/src/main/java/com/leftcoding/http/api/OkHttpBuilder.java diff --git a/httplib/src/main/java/com/leftcoding/http/api/HttpLogging.java b/httplib/src/main/java/com/leftcoding/http/api/HttpLogging.java new file mode 100644 index 00000000..519e73f2 --- /dev/null +++ b/httplib/src/main/java/com/leftcoding/http/api/HttpLogging.java @@ -0,0 +1,39 @@ +package com.leftcoding.http.api; + +import android.support.annotation.NonNull; + +import com.socks.library.KLog; + +import okhttp3.logging.HttpLoggingInterceptor; + +/** + * Create by LingYan on 2017-09-30 + * Email:137387869@qq.com + */ + +public class HttpLogging { + private HttpLoggingInterceptor logging; + + private HttpLogging() { + logging = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NonNull String message) { + KLog.d(message); + } + }); + + logging.setLevel(HttpLoggingInterceptor.Level.BODY); + } + + public HttpLoggingInterceptor build() { + return logging; + } + + private static class SingletonHolder { + private static final HttpLogging INSTANCE = new HttpLogging(); + } + + public static synchronized HttpLogging get() { + return SingletonHolder.INSTANCE; + } +} diff --git a/httplib/src/main/java/com/leftcoding/http/api/OkHttpBuilder.java b/httplib/src/main/java/com/leftcoding/http/api/OkHttpBuilder.java new file mode 100644 index 00000000..6a333555 --- /dev/null +++ b/httplib/src/main/java/com/leftcoding/http/api/OkHttpBuilder.java @@ -0,0 +1,49 @@ +package com.leftcoding.http.api; + + +import java.util.concurrent.TimeUnit; + +import okhttp3.Interceptor; +import okhttp3.OkHttpClient; + +/** + * Create by LingYan on 2017-09-30 + * Email:137387869@qq.com + */ +class OkHttpBuilder { + private static final int DEFAULT_OUT_TIME = 30; + private OkHttpClient.Builder builder; + + private OkHttpBuilder() { + builder = new OkHttpClient.Builder(); + builder.connectTimeout(DEFAULT_OUT_TIME, TimeUnit.SECONDS); + } + + @SuppressWarnings("unchecked") + public OkHttpBuilder connectTimeout(long timeout, TimeUnit unit) { + builder.connectTimeout(timeout, unit); + return this; + } + + OkHttpBuilder addNetworkInterceptor(Interceptor interceptor) { + builder.addNetworkInterceptor(interceptor); + return this; + } + + OkHttpBuilder addInterceptor(Interceptor interceptor) { + builder.addInterceptor(interceptor); + return this; + } + + OkHttpClient build() { + return builder.build(); + } + + private static class SingletonHolder { + private static final OkHttpBuilder INSTANCE = new OkHttpBuilder(); + } + + static synchronized OkHttpBuilder get() { + return SingletonHolder.INSTANCE; + } +} From 037c5265d8189c9b1f73b058884ba668ac3282dd Mon Sep 17 00:00:00 2001 From: leftcoding <137387869@qq.com> Date: Tue, 17 Oct 2017 00:03:59 +0800 Subject: [PATCH 02/27] =?UTF-8?q?1.=E6=95=B4=E4=BD=93=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 77 +++--- app/proguard-rules.pro | 2 +- app/src/main/AndroidManifest.xml | 2 +- .../java/com/gank/gankly/bean/BaseResult.java | 10 +- .../java/com/gank/gankly/bean/GankResult.java | 3 +- .../java/com/gank/gankly/bean/GiftResult.java | 2 +- .../com/gank/gankly/bean/ResultsBean.java | 156 ------------ .../com/gank/gankly/config/Constants.java | 1 - .../gank/gankly/config/MeiziArrayList.java | 4 +- .../config/glide/MyOkHttpStreamFetcher.java | 1 - .../gank/gankly/listener/RecyclerOnClick.java | 2 +- .../com/gank/gankly/mvp/BasePresenter.java | 11 - .../com/gank/gankly/mvp/FetchPresenter.java | 24 +- .../java/com/gank/gankly/mvp/IBaseView.java | 9 - ...Presenter.java => ILoadMorePresenter.java} | 2 +- ...resenter.java => ISubscribePresenter.java} | 5 +- .../gank/gankly/mvp/SubscribePresenter.java | 18 ++ .../gank/gankly/mvp/base/BaseContract.java | 15 ++ .../gank/gankly/mvp/base/BasePresenter.java | 44 ++++ .../com/gank/gankly/mvp/base/BaseView.java | 9 + .../gank/gankly/mvp/base/FetchFragment.java | 21 -- .../gankly/mvp/base/LoadMorePresenter.java | 33 +++ .../SupportView.java} | 8 +- .../gankly/mvp/observer/BaseObserver.java | 29 +++ .../mvp/observer/ILoadMoreException.java | 11 + .../gankly/mvp/observer/PageObserver.java | 57 +++++ .../gankly/mvp/source/LocalDataSource.java | 2 +- .../gankly/network/LoggingInterceptor.java | 31 --- .../gank/gankly/network/api/ApiManager.java | 14 ++ .../gank/gankly/network/api/DownloadApi.java | 1 - .../gankly/network/service/BaiSiService.java | 1 - .../gank/gankly/presenter/BasePresenter.java | 21 -- .../java/com/gank/gankly/rxjava/RxBus_.java | 1 - .../gank/gankly/rxjava/rxclick/Rxbunding.java | 1 - .../rxjava/rxclick/ViewClickSubscribe.java | 1 - .../gank/gankly/rxjava/theme/ThemeEvent.java | 1 - .../gankly/ui/android/AndroidAdapter.java | 223 ++++++++++++++++++ .../gankly/ui/android/AndroidContract.java | 37 +++ .../{main => }/android/AndroidFragment.java | 171 +++++++++----- .../gankly/ui/android/AndroidPresenter.java | 165 +++++++++++++ .../gank/gankly/ui/baisi/BaiSiActivity.java | 2 +- .../gankly/ui/baisi/BaiSiMainFragment.java | 37 ++- .../gankly/ui/baisi/BaiSiVideoContract.java | 8 +- .../gankly/ui/baisi/BaiSiVideoFragment.java | 81 ++----- .../ui/baisi/BaiSiVideoPreViewActivity.java | 2 +- .../gankly/ui/baisi/BaiSiVideoPresenter.java | 10 +- .../ui/baisi/image/BaiSiGalleryFragment.java | 23 +- .../ui/baisi/image/BaiSiImageContract.java | 11 +- .../ui/baisi/image/BaiSiImageFragment.java | 77 ++---- .../ui/baisi/image/BaiSiImagePresenter.java | 14 +- .../com/gank/gankly/ui/base/BaseAdapter.java | 11 + .../gankly/ui/base/BaseJiandanActivity.java | 1 + .../gankly/ui/base/BaseThemeFragment.java | 19 +- .../com/gank/gankly/ui/base/BasicHolder.java | 19 ++ .../com/gank/gankly/ui/base/ButterHolder.java | 18 ++ .../ui/base/{ => activity}/BaseActivity.java | 8 +- .../ui/base/activity/SupportActivity.java | 22 ++ .../ui/base/{ => fragment}/BaseFragment.java | 33 +-- .../ui/base/fragment/ButterKnifeFragment.java | 40 ++++ .../ui/base/{ => fragment}/LazyFragment.java | 14 +- .../ui/base/fragment/SupportFragment.java | 77 ++++++ .../base/fragment}/ThemeFragment.java | 20 +- .../gankly/ui/collect/CollectContract.java | 12 +- .../gankly/ui/collect/CollectFragment.java | 58 +++-- .../gankly/ui/collect/CollectPresenter.java | 17 +- .../ui/discovered/DiscoveredFragment.java | 35 +-- .../discovered/jiandan/JiandanContract.java | 8 +- .../discovered/jiandan/JiandanFragment.java | 26 +- .../discovered/jiandan/JiandanPresenter.java | 9 +- .../ui/discovered/more/DiscoveredAdapter.java | 2 +- .../more/DiscoveredMoreFragment.java | 33 +-- .../discovered/teamBlog/TeamBlogContract.java | 8 +- .../discovered/teamBlog/TeamBlogFragment.java | 71 ++---- .../teamBlog/TeamBlogPresenter.java | 11 +- .../technology/TechnologyContract.java | 8 +- .../technology/TechnologyFragment.java | 73 ++---- .../technology/TechnologyPresenter.java | 11 +- .../ui/discovered/video/VideoAdapter.java | 8 +- .../ui/discovered/video/VideoContract.java | 10 +- .../ui/discovered/video/VideoFragment.java | 47 ++-- .../ui/discovered/video/VideoPresenter.java | 7 +- .../gankly/ui/gallery/GalleryActivity.java | 20 +- .../gankly/ui/gallery/GalleryContract.java | 10 +- .../gankly/ui/gallery/GalleryFragment.java | 26 +- .../gankly/ui/gallery/GalleryPresenter.java | 9 +- .../gank/gankly/ui/girls/GirlsAdapter.java | 2 +- .../gank/gankly/ui/girls/GirlsFragment.java | 35 +-- .../gankly/ui/girls/cure/CureContract.java | 8 +- .../gankly/ui/girls/cure/CureFragment.java | 41 ++-- .../gankly/ui/girls/cure/CurePresenter.java | 13 +- .../girls/dailymeizi/DailyMeiziContract.java | 8 +- .../girls/dailymeizi/DailyMeiziFragment.java | 42 ++-- .../girls/dailymeizi/DailyMeiziPresenter.java | 9 +- .../gankly/ui/girls/pure/PureContract.java | 22 +- .../gankly/ui/girls/pure/PureFragment.java | 48 ++-- .../gankly/ui/girls/pure/PurePresenter.java | 165 ++++++------- .../ui/history/BrowseHistoryContract.java | 8 +- .../ui/history/BrowseHistoryFragment.java | 49 ++-- .../ui/history/BrowseHistoryPresenter.java | 11 +- .../com/gank/gankly/ui/ios/IosAdapter.java | 205 ++++++++++++++++ .../com/gank/gankly/ui/ios/IosContract.java | 38 +++ .../com/gank/gankly/ui/ios/IosFragment.java | 215 +++++++++++++++++ .../com/gank/gankly/ui/ios/IosPresenter.java | 140 +++++++++++ .../gank/gankly/ui/main/GankPagerAdapter.java | 2 +- .../gank/gankly/ui/main/IndexContract.java | 24 ++ .../{MainFragment.java => IndexFragment.java} | 84 ++----- .../main}/LauncherPresenter.java | 21 +- .../com/gank/gankly/ui/main/MainActivity.java | 14 +- .../ui/main/android/AndroidAdapter.java | 221 ----------------- .../ui/main/android/AndroidContract.java | 24 -- .../ui/main/android/AndroidPresenter.java | 111 --------- .../gank/gankly/ui/main/ios/IosAdapter.java | 216 ----------------- .../gank/gankly/ui/main/ios/IosContract.java | 24 -- .../gank/gankly/ui/main/ios/IosFragment.java | 188 --------------- .../gank/gankly/ui/main/ios/IosPresenter.java | 87 ------- .../gankly/ui/main/tab/MainTabContract.java | 26 ++ .../gankly/ui/main/tab/MainTabFragment.java | 27 +++ .../gankly/ui/main/tab/MainTabPresenter.java | 22 ++ .../ui/main/welfare/WelfareAdapter.java | 10 +- .../ui/main/welfare/WelfareContract.java | 10 +- .../ui/main/welfare/WelfareFragment.java | 33 ++- .../ui/main/welfare/WelfarePresenter.java | 9 +- .../com/gank/gankly/ui/mine/MineFragment.java | 96 ++++---- .../gank/gankly/ui/more/AboutFragment.java | 17 +- .../com/gank/gankly/ui/more/MoreActivity.java | 2 +- .../gank/gankly/ui/more/SettingFragment.java | 40 ++-- .../ui/{main => splash}/SplashActivity.java | 5 +- .../gankly/ui/web/JiandanWebActivity.java | 2 +- .../gankly/ui/web/WebVideoViewActivity.java | 2 +- .../gankly/ui/web/normal/WebActivity.java | 13 +- .../gankly/ui/web/normal/WebContract.java | 8 +- .../gankly/ui/web/normal/WebPresenter.java | 11 +- .../java/com/gank/gankly/utils/ListUtils.java | 2 +- .../utils/permission/ActivityUtils.java | 1 - .../utils/permission/PermissionUtils.java | 1 - .../gankly/utils/theme/TextViewResorce.java | 1 - .../gank/gankly/utils/theme/ThemeColor.java | 1 - .../gank/gankly/utils/theme/ViewResorce.java | 1 - .../java/com/gank/gankly/view/ILauncher.java | 3 +- .../gank/gankly/widget/HorizontalLoading.java | 1 - .../gankly/widget/ImageDefaultLoading.java | 1 - .../gank/gankly/widget/ImageDefaultView.java | 1 - .../java/com/gank/gankly/widget/LSwitch.java | 1 - .../gankly/widget/LYRelativeLayoutRipple.java | 1 - .../gank/gankly/widget/LyRecyclerView.java | 1 - .../gankly/widget/MultipleStatusView.java | 1 - .../gankly/widget/NoAlphaItemAnimator.java | 1 - .../gankly/widget/UpdateVersionDialog.java | 1 - app/src/main/res/layout/adapter_android.xml | 106 ++++----- app/src/main/res/layout/adapter_ios.xml | 147 ++++++------ build.gradle | 12 +- gradle.properties | 48 +++- javalib/.gitignore | 1 + javalib/build.gradle | 31 +++ javalib/proguard-rules.pro | 25 ++ .../javalib/ExampleInstrumentedTest.java | 26 ++ javalib/src/main/AndroidManifest.xml | 10 + javalib/src/main/res/values/strings.xml | 3 + .../com/example/javalib/ExampleUnitTest.java | 17 ++ settings.gradle | 2 +- superplayerlibrary/build.gradle | 18 +- support-ly-http/.gitignore | 1 + support-ly-http/build.gradle | 50 ++++ support-ly-http/proguard-rules.pro | 25 ++ support-ly-http/src/main/AndroidManifest.xml | 10 + .../com/leftcoding/http/api/BaseServer.java | 8 + .../java/com/leftcoding/http/api/GankApi.java | 48 ++++ .../com/leftcoding/http/api/GankManager.java | 52 ++++ .../com/leftcoding/http/api/GankServer.java | 54 +++++ .../com/leftcoding/http/api/HttpLogging.java | 0 .../leftcoding/http/api/OkHttpBuilder.java | 2 +- .../com/leftcoding/http/bean/BaseResult.java | 5 + .../com/leftcoding/http/bean/ListResult.java | 12 + .../com/leftcoding/http/bean/PageResult.java | 13 + .../com/leftcoding/http/bean/ResultsBean.java | 81 +++++++ .../src/main/res/values/strings.xml | 3 + support-ly-rxbus/.gitignore | 1 + support-ly-rxbus/build.gradle | 27 +++ support-ly-rxbus/proguard-rules.pro | 25 ++ support-ly-rxbus/src/main/AndroidManifest.xml | 10 + .../main/java/com/leftcoding/rxbus/RxBus.java | 32 +++ .../java/com/leftcoding/rxbus/RxManager.java | 48 ++++ .../src/main/res/values/strings.xml | 3 + 183 files changed, 3153 insertions(+), 2522 deletions(-) delete mode 100644 app/src/main/java/com/gank/gankly/bean/ResultsBean.java delete mode 100644 app/src/main/java/com/gank/gankly/mvp/BasePresenter.java delete mode 100644 app/src/main/java/com/gank/gankly/mvp/IBaseView.java rename app/src/main/java/com/gank/gankly/mvp/{IFetchPresenter.java => ILoadMorePresenter.java} (72%) rename app/src/main/java/com/gank/gankly/mvp/{IBasePresenter.java => ISubscribePresenter.java} (54%) create mode 100644 app/src/main/java/com/gank/gankly/mvp/SubscribePresenter.java create mode 100644 app/src/main/java/com/gank/gankly/mvp/base/BaseContract.java create mode 100644 app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java create mode 100644 app/src/main/java/com/gank/gankly/mvp/base/BaseView.java delete mode 100644 app/src/main/java/com/gank/gankly/mvp/base/FetchFragment.java create mode 100644 app/src/main/java/com/gank/gankly/mvp/base/LoadMorePresenter.java rename app/src/main/java/com/gank/gankly/mvp/{IFetchView.java => base/SupportView.java} (67%) create mode 100644 app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java create mode 100644 app/src/main/java/com/gank/gankly/mvp/observer/ILoadMoreException.java create mode 100644 app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java delete mode 100644 app/src/main/java/com/gank/gankly/network/LoggingInterceptor.java delete mode 100644 app/src/main/java/com/gank/gankly/presenter/BasePresenter.java create mode 100644 app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java create mode 100644 app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java rename app/src/main/java/com/gank/gankly/ui/{main => }/android/AndroidFragment.java (61%) create mode 100644 app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java create mode 100644 app/src/main/java/com/gank/gankly/ui/base/BaseAdapter.java create mode 100644 app/src/main/java/com/gank/gankly/ui/base/BasicHolder.java create mode 100644 app/src/main/java/com/gank/gankly/ui/base/ButterHolder.java rename app/src/main/java/com/gank/gankly/ui/base/{ => activity}/BaseActivity.java (96%) create mode 100644 app/src/main/java/com/gank/gankly/ui/base/activity/SupportActivity.java rename app/src/main/java/com/gank/gankly/ui/base/{ => fragment}/BaseFragment.java (57%) create mode 100644 app/src/main/java/com/gank/gankly/ui/base/fragment/ButterKnifeFragment.java rename app/src/main/java/com/gank/gankly/ui/base/{ => fragment}/LazyFragment.java (75%) create mode 100644 app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java rename app/src/main/java/com/gank/gankly/{mvp/base => ui/base/fragment}/ThemeFragment.java (83%) create mode 100644 app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java create mode 100644 app/src/main/java/com/gank/gankly/ui/ios/IosContract.java create mode 100644 app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java create mode 100644 app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java create mode 100644 app/src/main/java/com/gank/gankly/ui/main/IndexContract.java rename app/src/main/java/com/gank/gankly/ui/main/{MainFragment.java => IndexFragment.java} (84%) rename app/src/main/java/com/gank/gankly/{presenter => ui/main}/LauncherPresenter.java (83%) delete mode 100644 app/src/main/java/com/gank/gankly/ui/main/android/AndroidAdapter.java delete mode 100644 app/src/main/java/com/gank/gankly/ui/main/android/AndroidContract.java delete mode 100644 app/src/main/java/com/gank/gankly/ui/main/android/AndroidPresenter.java delete mode 100644 app/src/main/java/com/gank/gankly/ui/main/ios/IosAdapter.java delete mode 100644 app/src/main/java/com/gank/gankly/ui/main/ios/IosContract.java delete mode 100644 app/src/main/java/com/gank/gankly/ui/main/ios/IosFragment.java delete mode 100644 app/src/main/java/com/gank/gankly/ui/main/ios/IosPresenter.java create mode 100644 app/src/main/java/com/gank/gankly/ui/main/tab/MainTabContract.java create mode 100644 app/src/main/java/com/gank/gankly/ui/main/tab/MainTabFragment.java create mode 100644 app/src/main/java/com/gank/gankly/ui/main/tab/MainTabPresenter.java rename app/src/main/java/com/gank/gankly/ui/{main => splash}/SplashActivity.java (95%) create mode 100644 javalib/.gitignore create mode 100644 javalib/build.gradle create mode 100644 javalib/proguard-rules.pro create mode 100644 javalib/src/androidTest/java/com/example/javalib/ExampleInstrumentedTest.java create mode 100644 javalib/src/main/AndroidManifest.xml create mode 100644 javalib/src/main/res/values/strings.xml create mode 100644 javalib/src/test/java/com/example/javalib/ExampleUnitTest.java create mode 100644 support-ly-http/.gitignore create mode 100644 support-ly-http/build.gradle create mode 100644 support-ly-http/proguard-rules.pro create mode 100644 support-ly-http/src/main/AndroidManifest.xml create mode 100644 support-ly-http/src/main/java/com/leftcoding/http/api/BaseServer.java create mode 100644 support-ly-http/src/main/java/com/leftcoding/http/api/GankApi.java create mode 100644 support-ly-http/src/main/java/com/leftcoding/http/api/GankManager.java create mode 100644 support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java rename {httplib => support-ly-http}/src/main/java/com/leftcoding/http/api/HttpLogging.java (100%) rename {httplib => support-ly-http}/src/main/java/com/leftcoding/http/api/OkHttpBuilder.java (97%) create mode 100644 support-ly-http/src/main/java/com/leftcoding/http/bean/BaseResult.java create mode 100644 support-ly-http/src/main/java/com/leftcoding/http/bean/ListResult.java create mode 100644 support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java create mode 100644 support-ly-http/src/main/java/com/leftcoding/http/bean/ResultsBean.java create mode 100644 support-ly-http/src/main/res/values/strings.xml create mode 100644 support-ly-rxbus/.gitignore create mode 100644 support-ly-rxbus/build.gradle create mode 100644 support-ly-rxbus/proguard-rules.pro create mode 100644 support-ly-rxbus/src/main/AndroidManifest.xml create mode 100644 support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxBus.java create mode 100644 support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxManager.java create mode 100644 support-ly-rxbus/src/main/res/values/strings.xml diff --git a/app/build.gradle b/app/build.gradle index 82490418..8afdb95f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,18 +1,13 @@ apply plugin: 'com.android.application' -//需要配置符号表时,使用bugly插件 -apply plugin: 'bugly' -bugly { - appId = '900039150' - appKey = 'WbIvNJ77rAjdcEK1' -} + //rolambda apply plugin: 'me.tatarka.retrolambda' //findbugs apply plugin: "findbugs" android { - compileSdkVersion 25 - buildToolsVersion "25.0.3" + compileSdkVersion rootProject.compileSdkVersion + buildToolsVersion rootProject.buildToolsVersion defaultConfig { applicationId "com.gank.gankly" minSdkVersion 21 @@ -47,6 +42,7 @@ android { debug { minifyEnabled false shrinkResources false + buildConfigField("String", "GANK_SERVER_ULR", "\"${gank_server_url}\"") } release { minifyEnabled true @@ -61,10 +57,6 @@ android { exclude 'META-INF/rxjava.properties' } - dataBinding { - enabled true - } - apply plugin: 'findbugs' task findbugs(type: FindBugs) { ignoreFailures = false @@ -96,46 +88,43 @@ dependencies { compile "com.android.support:cardview-v7:${supportVersion}" compile "com.android.support:recyclerview-v7:${supportVersion}" compile "com.android.support:support-v4:${supportVersion}" - //Log compile "com.github.zhaokaiqiang.klog:library:${klogVersion}" - //butterknife 注解控件 - compile 'com.jakewharton:butterknife:8.5.1' - annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1' - //retrofit - compile 'com.squareup.retrofit2:retrofit:2.3.0' - compile 'com.squareup.retrofit2:retrofit-converters:2.3.0' - compile 'com.squareup.retrofit2:retrofit-adapters:2.3.0' - compile 'com.squareup.retrofit2:converter-gson:2.3.0' - compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' - //Glide - compile 'com.github.bumptech.glide:glide:4.0.0' - compile 'com.github.bumptech.glide:okhttp3-integration:4.0.0' - annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0' + compile "com.jakewharton:butterknife:${butterknife}" + annotationProcessor "com.jakewharton:butterknife-compiler:${butterknife}" + compile "com.squareup.retrofit2:retrofit:${retrofitVersion}" + compile "com.squareup.retrofit2:retrofit-converters:${retrofitConverters}" + compile "com.squareup.retrofit2:retrofit-adapters:${retrofitAdapters}" + compile "com.squareup.retrofit2:converter-gson:${converterGson}" + compile "com.squareup.retrofit2:adapter-rxjava2:${adapterRxjava2}" + compile "com.squareup.okhttp3:okhttp:${okhttp}" + compile "com.squareup.okhttp3:logging-interceptor:${okhttp}" + debugCompile "com.squareup.leakcanary:leakcanary-android:${leakcanaryandroid}" + releaseCompile "com.squareup.leakcanary:leakcanary-android-no-op:${leakcanaryandroid}" + compile "com.github.bumptech.glide:glide:${glide}" + compile "com.github.bumptech.glide:okhttp3-integration:${glide}" + annotationProcessor "com.github.bumptech.glide:compiler:${glide}" //greendao 数据库 - compile 'de.greenrobot:greendao:2.1.0' - compile 'de.greenrobot:greendao-generator:2.1.0' + compile "de.greenrobot:greendao:${greendao}" + compile "de.greenrobot:greendao-generator:${greendao}" //chrome stetho 数据库查看 - compile 'com.facebook.stetho:stetho:1.5.0' - compile 'com.facebook.stetho:stetho-okhttp3:1.5.0' + compile "com.facebook.stetho:stetho:${stethoVersion}" + compile "com.facebook.stetho:stetho-okhttp3:${stethoOkhttp3}" // recyclerview-animators compile 'jp.wasabeef:recyclerview-animators:2.2.3' //jsoup - compile 'org.jsoup:jsoup:1.10.3' - //Bugly - // compile 'com.tencent.bugly:crashreport:2.1.9' - compile 'com.tencent.bugly:crashreport_upgrade:1.2.5' + compile "org.jsoup:jsoup:${jsoup}" //底部导航 - compile 'com.roughike:bottom-bar:2.3.1' + compile "com.roughike:bottom-bar:${bottomBar}" //视频库 - compile 'com.supercwn.superrecycleview:superlibrary:1.2.0' + + // compile 'com.supercwn.superrecycleview:superlibrary:1.2.0' + //大图库 - compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.6.0' + compile "com.davemorrissey.labs:subsampling-scale-image-view:${subsamplingVersion}" //rxjava2 - compile 'io.reactivex.rxjava2:rxjava:2.0.3' - compile 'io.reactivex.rxjava2:rxandroid:2.0.1' - //okhttp3 - compile 'com.squareup.okhttp3:okhttp:3.9.0' - //leakcanary 内存泄漏监测 - debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.4' - releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4' + compile "io.reactivex.rxjava2:rxjava:${rxjava}" + compile "io.reactivex.rxjava2:rxandroid:${rxandroid}" + compile "com.tencent.bugly:crashreport_upgrade:${crashreportUpgrade}" + compile project(':support-ly-http') + compile project(':support-ly-rxbus') } diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 7d58ee68..e223b0e0 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -58,8 +58,8 @@ } #################### Glide #################### --keep class com.bumptech.glide.integration.okhttp3.OkHttpGlideModule -keep public class * implements com.bumptech.glide.module.GlideModule +-keep public class * extends com.bumptech.glide.AppGlideModule -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b59b4097..a4cf55a7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -31,7 +31,7 @@ android:supportsRtl="true" android:theme="@style/AppTheme"> diff --git a/app/src/main/java/com/gank/gankly/bean/BaseResult.java b/app/src/main/java/com/gank/gankly/bean/BaseResult.java index b1acd364..e40a48af 100644 --- a/app/src/main/java/com/gank/gankly/bean/BaseResult.java +++ b/app/src/main/java/com/gank/gankly/bean/BaseResult.java @@ -1,13 +1,5 @@ package com.gank.gankly.bean; public class BaseResult { - private boolean error; - - public boolean isError() { - return error; - } - - public void setError(boolean error) { - this.error = error; - } + public boolean error; } \ No newline at end of file diff --git a/app/src/main/java/com/gank/gankly/bean/GankResult.java b/app/src/main/java/com/gank/gankly/bean/GankResult.java index d3006b40..d6d1b4c5 100644 --- a/app/src/main/java/com/gank/gankly/bean/GankResult.java +++ b/app/src/main/java/com/gank/gankly/bean/GankResult.java @@ -4,6 +4,7 @@ import android.os.Parcelable; import com.gank.gankly.utils.ListUtils; +import com.leftcoding.http.bean.ResultsBean; import java.util.List; @@ -43,7 +44,7 @@ public boolean isEmpty() { } public int getSize() { - return ListUtils.getListSize(results); + return ListUtils.getSize(results); } @Override diff --git a/app/src/main/java/com/gank/gankly/bean/GiftResult.java b/app/src/main/java/com/gank/gankly/bean/GiftResult.java index 6cf98faf..54f33d21 100644 --- a/app/src/main/java/com/gank/gankly/bean/GiftResult.java +++ b/app/src/main/java/com/gank/gankly/bean/GiftResult.java @@ -33,6 +33,6 @@ public void setNum(int num) { } public int getSize() { - return ListUtils.getListSize(mList); + return ListUtils.getSize(mList); } } diff --git a/app/src/main/java/com/gank/gankly/bean/ResultsBean.java b/app/src/main/java/com/gank/gankly/bean/ResultsBean.java deleted file mode 100644 index 3e856ae8..00000000 --- a/app/src/main/java/com/gank/gankly/bean/ResultsBean.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.gank.gankly.bean; - -import android.os.Parcel; -import android.os.Parcelable; -import android.text.TextUtils; - -public class ResultsBean implements Parcelable { - private String _id; - private String _ns; - private String createdAt; - private String desc; - private String publishedAt; - private String source; - private String type; - private String url; - private boolean used; - private String who; - private boolean isLoad; - - protected ResultsBean(Parcel in) { - _id = in.readString(); - _ns = in.readString(); - createdAt = in.readString(); - desc = in.readString(); - publishedAt = in.readString(); - source = in.readString(); - type = in.readString(); - url = in.readString(); - used = in.readByte() != 0; - who = in.readString(); - isLoad = in.readByte() != 0; - } - - public static final Creator CREATOR = new Creator() { - @Override - public ResultsBean createFromParcel(Parcel in) { - return new ResultsBean(in); - } - - @Override - public ResultsBean[] newArray(int size) { - return new ResultsBean[size]; - } - }; - - public String get_id() { - return _id; - } - - public void set_id(String _id) { - this._id = _id; - } - - public String get_ns() { - return _ns; - } - - public void set_ns(String _ns) { - this._ns = _ns; - } - - public String getCreatedAt() { - return createdAt; - } - - public void setCreatedAt(String createdAt) { - this.createdAt = createdAt; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getPublishedAt() { - return publishedAt; - } - - public void setPublishedAt(String publishedAt) { - this.publishedAt = publishedAt; - } - - public String getSource() { - return source; - } - - public void setSource(String source) { - this.source = source; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getUrl() { - return url; - } - - public void setUrl(String url) { - this.url = url; - } - - public boolean isUsed() { - return used; - } - - public void setUsed(boolean used) { - this.used = used; - } - - public String getWho() { - if (TextUtils.isEmpty(who)) { - return "网页"; - } - return who; - } - - public void setWho(String who) { - this.who = who; - } - - public boolean isLoad() { - return isLoad; - } - - public void setLoad(boolean load) { - isLoad = load; - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeString(_id); - dest.writeString(_ns); - dest.writeString(createdAt); - dest.writeString(desc); - dest.writeString(publishedAt); - dest.writeString(source); - dest.writeString(type); - dest.writeString(url); - dest.writeByte((byte) (used ? 1 : 0)); - dest.writeString(who); - dest.writeByte((byte) (isLoad ? 1 : 0)); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gank/gankly/config/Constants.java b/app/src/main/java/com/gank/gankly/config/Constants.java index 97b1b1a4..40d7cf01 100644 --- a/app/src/main/java/com/gank/gankly/config/Constants.java +++ b/app/src/main/java/com/gank/gankly/config/Constants.java @@ -2,7 +2,6 @@ /** * Create by LingYan on 2016-04-06 - * Email:137387869@qq.com */ public class Constants { //title diff --git a/app/src/main/java/com/gank/gankly/config/MeiziArrayList.java b/app/src/main/java/com/gank/gankly/config/MeiziArrayList.java index a078995b..4639f483 100644 --- a/app/src/main/java/com/gank/gankly/config/MeiziArrayList.java +++ b/app/src/main/java/com/gank/gankly/config/MeiziArrayList.java @@ -1,7 +1,7 @@ package com.gank.gankly.config; -import com.gank.gankly.bean.ResultsBean; import com.gank.gankly.utils.ListUtils; +import com.leftcoding.http.bean.ResultsBean; import java.util.ArrayList; import java.util.List; @@ -49,7 +49,7 @@ public List getOneItemsList() { } public boolean isOneItemsEmpty() { - return ListUtils.getListSize(mOneItemsList) <= 0; + return ListUtils.getSize(mOneItemsList) <= 0; } public int getPage() { diff --git a/app/src/main/java/com/gank/gankly/config/glide/MyOkHttpStreamFetcher.java b/app/src/main/java/com/gank/gankly/config/glide/MyOkHttpStreamFetcher.java index 523d935e..39123efa 100644 --- a/app/src/main/java/com/gank/gankly/config/glide/MyOkHttpStreamFetcher.java +++ b/app/src/main/java/com/gank/gankly/config/glide/MyOkHttpStreamFetcher.java @@ -10,7 +10,6 @@ /** * Create by LingYan on 2017-08-23 - * Email:137387869@qq.com */ public class MyOkHttpStreamFetcher extends OkHttpStreamFetcher { diff --git a/app/src/main/java/com/gank/gankly/listener/RecyclerOnClick.java b/app/src/main/java/com/gank/gankly/listener/RecyclerOnClick.java index 0aab4312..1341d326 100644 --- a/app/src/main/java/com/gank/gankly/listener/RecyclerOnClick.java +++ b/app/src/main/java/com/gank/gankly/listener/RecyclerOnClick.java @@ -2,7 +2,7 @@ import android.view.View; -import com.gank.gankly.bean.ResultsBean; +import com.leftcoding.http.bean.ResultsBean; public interface RecyclerOnClick { void onClick(View view, ResultsBean bean); diff --git a/app/src/main/java/com/gank/gankly/mvp/BasePresenter.java b/app/src/main/java/com/gank/gankly/mvp/BasePresenter.java deleted file mode 100644 index 7faba448..00000000 --- a/app/src/main/java/com/gank/gankly/mvp/BasePresenter.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.gank.gankly.mvp; - - -/** - * Create by LingYan on 2016-10-21 - * Email:137387869@qq.com - */ - -public abstract class BasePresenter { - -} diff --git a/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java b/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java index f54037dd..3bbe6969 100644 --- a/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java @@ -3,17 +3,17 @@ import com.gank.gankly.App; import com.gank.gankly.R; import com.gank.gankly.bean.GankResult; -import com.gank.gankly.bean.ResultsBean; +import com.gank.gankly.mvp.base.SupportView; import com.gank.gankly.utils.ListUtils; +import com.leftcoding.http.bean.ResultsBean; import java.util.List; /** * Create by LingYan on 2016-10-25 - * Email:137387869@qq.com */ -public abstract class FetchPresenter extends BasePresenter { +public abstract class FetchPresenter implements ISubscribePresenter { private int fetchLimit = 20; private int fetchPage = 1; private boolean hasMore = true; @@ -59,8 +59,8 @@ public int getFetchPage() { return fetchPage; } - public List filterData(GankResult gankResult, IFetchView view) { - view.hideRefresh(); + public List filterData(GankResult gankResult, SupportView view) { + view.hideProgress(); if (gankResult != null) { int size = gankResult.getSize(); if (size > 0) { @@ -87,10 +87,10 @@ public List filterData(GankResult gankResult, IFetchView view) { return null; } - public List filterData(List t, IFetchView view) { - view.hideRefresh(); + public List filterData(List t, SupportView view) { + view.hideProgress(); if (t != null) { - int size = ListUtils.getListSize(t); + int size = ListUtils.getSize(t); if (size > 0) { if (size >= fetchLimit) { view.showContent(); @@ -125,9 +125,9 @@ public List filterData(List t, IFetchView view) { * @param 实体类 * @return 最后返回数据集合 */ - public List filterDataBase(List t, IFetchView view) { + public List filterDataBase(List t, SupportView view) { if (t != null) { - int size = ListUtils.getListSize(t); + int size = ListUtils.getSize(t); if (size > 0) { if (size >= fetchLimit) { view.showContent(); @@ -159,8 +159,8 @@ public List filterDataBase(List t, IFetchView view) { * * @param view IFetch 视图 */ - public void parseError(IFetchView view) { - view.hideRefresh(); + public void parseError(SupportView view) { + view.hideProgress(); if (App.isNetConnect()) { if (fetchPage > 1) { view.showRefreshError(App.getAppString(R.string.loading_error)); diff --git a/app/src/main/java/com/gank/gankly/mvp/IBaseView.java b/app/src/main/java/com/gank/gankly/mvp/IBaseView.java deleted file mode 100644 index 494edda4..00000000 --- a/app/src/main/java/com/gank/gankly/mvp/IBaseView.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gank.gankly.mvp; - -/** - * Create by LingYan on 2016-10-20 - * Email:137387869@qq.com - */ - -public interface IBaseView { -} diff --git a/app/src/main/java/com/gank/gankly/mvp/IFetchPresenter.java b/app/src/main/java/com/gank/gankly/mvp/ILoadMorePresenter.java similarity index 72% rename from app/src/main/java/com/gank/gankly/mvp/IFetchPresenter.java rename to app/src/main/java/com/gank/gankly/mvp/ILoadMorePresenter.java index f069b5d4..852acb4a 100644 --- a/app/src/main/java/com/gank/gankly/mvp/IFetchPresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/ILoadMorePresenter.java @@ -6,7 +6,7 @@ * Email:137387869@qq.com */ -public interface IFetchPresenter extends IBasePresenter{ +public interface ILoadMorePresenter{ void fetchNew(); void fetchMore(); diff --git a/app/src/main/java/com/gank/gankly/mvp/IBasePresenter.java b/app/src/main/java/com/gank/gankly/mvp/ISubscribePresenter.java similarity index 54% rename from app/src/main/java/com/gank/gankly/mvp/IBasePresenter.java rename to app/src/main/java/com/gank/gankly/mvp/ISubscribePresenter.java index c71aa806..dfdb7786 100644 --- a/app/src/main/java/com/gank/gankly/mvp/IBasePresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/ISubscribePresenter.java @@ -2,11 +2,8 @@ /** * Create by LingYan on 2016-10-25 - * Email:137387869@qq.com */ -public interface IBasePresenter { - void subscribe(); - +public interface ISubscribePresenter { void unSubscribe(); } diff --git a/app/src/main/java/com/gank/gankly/mvp/SubscribePresenter.java b/app/src/main/java/com/gank/gankly/mvp/SubscribePresenter.java new file mode 100644 index 00000000..ecd600e7 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/mvp/SubscribePresenter.java @@ -0,0 +1,18 @@ +package com.gank.gankly.mvp; + +import android.content.Context; +import android.support.annotation.NonNull; + +import com.gank.gankly.mvp.base.BasePresenter; +import com.gank.gankly.mvp.base.BaseView; + +/** + * Create by LingYan on 2017-10-05 + */ + +public class SubscribePresenter extends BasePresenter { + + public SubscribePresenter(@NonNull Context context, @NonNull E view) { + super(context, view); + } +} diff --git a/app/src/main/java/com/gank/gankly/mvp/base/BaseContract.java b/app/src/main/java/com/gank/gankly/mvp/base/BaseContract.java new file mode 100644 index 00000000..7c693da7 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/mvp/base/BaseContract.java @@ -0,0 +1,15 @@ +package com.gank.gankly.mvp.base; + +/** + * Create by LingYan on 2017-09-30 + */ + +public interface BaseContract { + interface View { + + } + + abstract class Presenter { + + } +} diff --git a/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java b/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java new file mode 100644 index 00000000..40e72b6d --- /dev/null +++ b/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java @@ -0,0 +1,44 @@ +package com.gank.gankly.mvp.base; + +import android.content.Context; +import android.support.annotation.NonNull; + +import com.gank.gankly.mvp.ISubscribePresenter; + +/** + * Create by LingYan on 2016-05-12 + */ +public abstract class BasePresenter extends BaseContract.Presenter implements ISubscribePresenter { + protected E mView; + protected Context mContext; + + public BasePresenter(@NonNull Context context, E view) { + checkNotNull(context); + checkNotNull(view); + this.mView = view; + this.mContext = context; + } + + private static T checkNotNull(T reference) { + if (reference == null) { + throw new NullPointerException(); + } + return reference; + } + + protected void showShortToast(String string) { + if (mView != null) { + mView.showShortToast(string); + } + } + + @Override + public void unSubscribe() { + mView = null; + mContext = null; + } + + protected boolean isActivity() { + return mView != null; + } +} diff --git a/app/src/main/java/com/gank/gankly/mvp/base/BaseView.java b/app/src/main/java/com/gank/gankly/mvp/base/BaseView.java new file mode 100644 index 00000000..33850345 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/mvp/base/BaseView.java @@ -0,0 +1,9 @@ +package com.gank.gankly.mvp.base; + +/** + * Create by LingYan on 2016-10-20 + */ + +public interface BaseView extends BaseContract.View { + public void showShortToast(String string); +} diff --git a/app/src/main/java/com/gank/gankly/mvp/base/FetchFragment.java b/app/src/main/java/com/gank/gankly/mvp/base/FetchFragment.java deleted file mode 100644 index a414badf..00000000 --- a/app/src/main/java/com/gank/gankly/mvp/base/FetchFragment.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gank.gankly.mvp.base; - -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.view.View; - -/** - * Create by LingYan on 2016-10-21 - * Email:137387869@qq.com - */ - -public abstract class FetchFragment extends ThemeFragment { - - @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { - initPresenter(); - super.onViewCreated(view, savedInstanceState); - } - - protected abstract void initPresenter(); -} diff --git a/app/src/main/java/com/gank/gankly/mvp/base/LoadMorePresenter.java b/app/src/main/java/com/gank/gankly/mvp/base/LoadMorePresenter.java new file mode 100644 index 00000000..d5ea1aa7 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/mvp/base/LoadMorePresenter.java @@ -0,0 +1,33 @@ +package com.gank.gankly.mvp.base; + +import android.content.Context; +import android.support.annotation.NonNull; + +/** + * Create by LingYan on 2017-10-12 + */ + +public abstract class LoadMorePresenter extends BasePresenter { + private int mInitPage = 1; + private int mLimit = 20; + + public LoadMorePresenter(@NonNull Context context, E view) { + super(context, view); + } + + public int getInitPage() { + return mInitPage; + } + + public void setInitPage(int initPage) { + mInitPage = initPage; + } + + public int getLimit() { + return mLimit; + } + + public void setLimit(int limit) { + mLimit = limit; + } +} diff --git a/app/src/main/java/com/gank/gankly/mvp/IFetchView.java b/app/src/main/java/com/gank/gankly/mvp/base/SupportView.java similarity index 67% rename from app/src/main/java/com/gank/gankly/mvp/IFetchView.java rename to app/src/main/java/com/gank/gankly/mvp/base/SupportView.java index a3d8134b..eecee051 100644 --- a/app/src/main/java/com/gank/gankly/mvp/IFetchView.java +++ b/app/src/main/java/com/gank/gankly/mvp/base/SupportView.java @@ -1,14 +1,14 @@ -package com.gank.gankly.mvp; +package com.gank.gankly.mvp.base; /** * Create by LingYan on 2016-10-20 * Email:137387869@qq.com */ -public interface IFetchView extends IBaseView { - void showRefresh(); +public interface SupportView extends BaseView { + void showProgress(); - void hideRefresh(); + void hideProgress(); void hasNoMoreDate(); diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java new file mode 100644 index 00000000..2b7c1370 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java @@ -0,0 +1,29 @@ +package com.gank.gankly.mvp.observer; + +import com.leftcoding.rxbus.RxManager; + +import io.reactivex.Observer; +import io.reactivex.annotations.NonNull; +import io.reactivex.disposables.Disposable; + +/** + * Create by LingYan on 2017-10-15 + */ + +public abstract class BaseObserver implements Observer { + protected static final String REQUEST_ERROR = "网络请求错误."; + private final String mKey; + + public BaseObserver(String key) { + this.mKey = key; + } + + @Override + public void onSubscribe(@NonNull Disposable d) { + RxManager.get().add(mKey, d); + } + + @Override + public void onError(@NonNull Throwable e) { + } +} diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/ILoadMoreException.java b/app/src/main/java/com/gank/gankly/mvp/observer/ILoadMoreException.java new file mode 100644 index 00000000..b122ec43 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/mvp/observer/ILoadMoreException.java @@ -0,0 +1,11 @@ +package com.gank.gankly.mvp.observer; + +/** + * Create by LingYan on 2017-10-12 + */ + +public interface ILoadMoreException { + void refreshError(String str); + + void appendError(String str); +} diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java new file mode 100644 index 00000000..2e30febc --- /dev/null +++ b/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java @@ -0,0 +1,57 @@ +package com.gank.gankly.mvp.observer; + +import com.leftcoding.http.bean.PageResult; + +import io.reactivex.annotations.NonNull; + +/** + * Create by LingYan on 2017-10-12 + */ + +public abstract class PageObserver extends BaseObserver implements ILoadMoreException { + private boolean isFirst; + + public PageObserver(String key, boolean isFirst) { + super(key); + this.isFirst = isFirst; + } + + @Override + public void onNext(@NonNull T t) { + if (t == null) { + onException(); + return; + } + + if (t instanceof PageResult) { + PageResult result = (PageResult) t; + if (result.results == null) { + onException(); + } + } + } + + @Override + public void onError(@NonNull Throwable e) { + super.onError(e); + onException(); + } + + @Override + public void refreshError(String str) { + + } + + @Override + public void appendError(String str) { + + } + + private void onException() { + if (isFirst) { + refreshError(REQUEST_ERROR); + } else { + appendError(REQUEST_ERROR); + } + } +} diff --git a/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java index cd7c3181..274ff3a5 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java @@ -118,7 +118,7 @@ public void subscribe(ObservableEmitter subscriber) throws Exception { String url = history.getUrl(); QueryBuilder query = mReadHistoryDao.queryBuilder(); List list = query.where(ReadHistoryDao.Properties.Url.eq(url)).list(); - boolean isNull = ListUtils.getListSize(list) <= 0; + boolean isNull = ListUtils.getSize(list) <= 0; long rasId = 0; if (isNull) { rasId = mReadHistoryDao.insert(history); diff --git a/app/src/main/java/com/gank/gankly/network/LoggingInterceptor.java b/app/src/main/java/com/gank/gankly/network/LoggingInterceptor.java deleted file mode 100644 index 67028910..00000000 --- a/app/src/main/java/com/gank/gankly/network/LoggingInterceptor.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.gank.gankly.network; - -import com.socks.library.KLog; - -import java.io.IOException; - -import okhttp3.Interceptor; -import okhttp3.Request; -import okhttp3.Response; - -/** - * 打印Retrofit 请求日志 - * Create by LingYan on 2016年4月13日 - */ -public class LoggingInterceptor implements Interceptor { - @Override - public Response intercept(Chain chain) throws IOException { - Request request = chain.request(); - - long t1 = System.nanoTime(); - KLog.d("OkHttp", String.format("Sending request %s on %s%n%s", - request.url(), chain.connection(), request.headers())); - - Response response = chain.proceed(request); - - long t2 = System.nanoTime(); - KLog.d("OkHttp", String.format("Received response for %s in %.1fms%n%s", - response.request().url(), (t2 - t1) / 1e6d, response.headers())); - return response; - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gank/gankly/network/api/ApiManager.java b/app/src/main/java/com/gank/gankly/network/api/ApiManager.java index 7f69aed9..40e2a25c 100644 --- a/app/src/main/java/com/gank/gankly/network/api/ApiManager.java +++ b/app/src/main/java/com/gank/gankly/network/api/ApiManager.java @@ -1,12 +1,16 @@ package com.gank.gankly.network.api; +import android.support.annotation.NonNull; + import com.facebook.stetho.okhttp3.StethoInterceptor; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.socks.library.KLog; import java.util.concurrent.TimeUnit; import okhttp3.OkHttpClient; +import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; @@ -35,6 +39,16 @@ private ApiManager(String url) { OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.connectTimeout(DEFAULT_OUT_TIME, TimeUnit.SECONDS); //手动创建一个OkHttpClient并设置超时时间 builder.addNetworkInterceptor(new StethoInterceptor()); //chrome test databases + HttpLoggingInterceptor logging = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NonNull String message) { + KLog.d(message); + } + }); +// logging.setLevel(HttpLoggingInterceptor.Level.BASIC); + logging.setLevel(HttpLoggingInterceptor.Level.BODY); + + builder.addInterceptor(logging); // builder.interceptors().add(new LoggingInterceptor()); //打印请求log // builder.addInterceptor(new Interceptor() { // @Override diff --git a/app/src/main/java/com/gank/gankly/network/api/DownloadApi.java b/app/src/main/java/com/gank/gankly/network/api/DownloadApi.java index 8d3c2e07..d93f5dbb 100644 --- a/app/src/main/java/com/gank/gankly/network/api/DownloadApi.java +++ b/app/src/main/java/com/gank/gankly/network/api/DownloadApi.java @@ -23,7 +23,6 @@ /** * Create by LingYan on 2016-05-30 - * Email:137387869@qq.com */ public class DownloadApi { private static final int DEFAULT_OUT_TIME = 30; diff --git a/app/src/main/java/com/gank/gankly/network/service/BaiSiService.java b/app/src/main/java/com/gank/gankly/network/service/BaiSiService.java index 943b0b40..8afebcef 100644 --- a/app/src/main/java/com/gank/gankly/network/service/BaiSiService.java +++ b/app/src/main/java/com/gank/gankly/network/service/BaiSiService.java @@ -10,7 +10,6 @@ /** * Create by LingYan on 2016-11-30 - * Email:137387869@qq.com */ public interface BaiSiService { diff --git a/app/src/main/java/com/gank/gankly/presenter/BasePresenter.java b/app/src/main/java/com/gank/gankly/presenter/BasePresenter.java deleted file mode 100644 index 98c44686..00000000 --- a/app/src/main/java/com/gank/gankly/presenter/BasePresenter.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gank.gankly.presenter; - -import android.app.Activity; -import android.content.Context; - -/** - * Create by LingYan on 2016-05-12 - */ -public abstract class BasePresenter { - protected E mIView; - protected Context mActivity; - - public BasePresenter(Activity mActivity, E view) { - this.mIView = view; - this.mActivity = mActivity; - } - - public Context getActivity() { - return mActivity; - } -} diff --git a/app/src/main/java/com/gank/gankly/rxjava/RxBus_.java b/app/src/main/java/com/gank/gankly/rxjava/RxBus_.java index 9720b918..a0038547 100644 --- a/app/src/main/java/com/gank/gankly/rxjava/RxBus_.java +++ b/app/src/main/java/com/gank/gankly/rxjava/RxBus_.java @@ -12,7 +12,6 @@ /** * Create by LingYan on 2016-12-15 - * Email:137387869@qq.com */ public class RxBus_ { diff --git a/app/src/main/java/com/gank/gankly/rxjava/rxclick/Rxbunding.java b/app/src/main/java/com/gank/gankly/rxjava/rxclick/Rxbunding.java index 4d9d424e..032d73a6 100644 --- a/app/src/main/java/com/gank/gankly/rxjava/rxclick/Rxbunding.java +++ b/app/src/main/java/com/gank/gankly/rxjava/rxclick/Rxbunding.java @@ -7,7 +7,6 @@ /** * Created by Lingyan on 2017/4/1 0001. - * Email:137387869@qq.com */ public class Rxbunding { diff --git a/app/src/main/java/com/gank/gankly/rxjava/rxclick/ViewClickSubscribe.java b/app/src/main/java/com/gank/gankly/rxjava/rxclick/ViewClickSubscribe.java index 1e569c42..441654e2 100644 --- a/app/src/main/java/com/gank/gankly/rxjava/rxclick/ViewClickSubscribe.java +++ b/app/src/main/java/com/gank/gankly/rxjava/rxclick/ViewClickSubscribe.java @@ -8,7 +8,6 @@ /** * Created by Lingyan on 2017/4/1 0001. - * Email:137387869@qq.com */ public final class ViewClickSubscribe implements ObservableOnSubscribe { diff --git a/app/src/main/java/com/gank/gankly/rxjava/theme/ThemeEvent.java b/app/src/main/java/com/gank/gankly/rxjava/theme/ThemeEvent.java index d666a20e..583908f1 100644 --- a/app/src/main/java/com/gank/gankly/rxjava/theme/ThemeEvent.java +++ b/app/src/main/java/com/gank/gankly/rxjava/theme/ThemeEvent.java @@ -2,7 +2,6 @@ /** * Create by LingYan on 2016-09-02 - * Email:137387869@qq.com */ public class ThemeEvent { private boolean isRefreshUi; diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java new file mode 100644 index 00000000..762eac7b --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java @@ -0,0 +1,223 @@ +package com.gank.gankly.ui.android; + +import android.content.Context; +import android.support.annotation.IntDef; +import android.support.annotation.LayoutRes; +import android.support.annotation.NonNull; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.gank.gankly.R; +import com.gank.gankly.listener.RecyclerOnClick; +import com.gank.gankly.ui.base.BaseAdapter; +import com.gank.gankly.ui.base.ButterHolder; +import com.gank.gankly.utils.DateUtils; +import com.leftcoding.http.bean.ResultsBean; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import butterknife.BindView; + +import static com.gank.gankly.ui.android.AndroidAdapter.DefaultItem.VIEW_DEFAULT; + + +/** + * Create by LingYan on 2016-04-25 + */ +class AndroidAdapter extends BaseAdapter { + private RecyclerOnClick mMeiZiOnClick; + @NonNull + private Context mContext; + + private List mBeanList; + private List mItemList; + + AndroidAdapter(@NonNull Context context) { + setHasStableIds(true); + mBeanList = new ArrayList<>(); + mContext = context; + mItemList = new ArrayList<>(); + registerAdapterDataObserver(dataObserver); + } + + private final RecyclerView.AdapterDataObserver dataObserver = new RecyclerView.AdapterDataObserver() { + @Override + public void onChanged() { + super.onChanged(); + mItemList.clear(); + int size = getItemCount(); + if (size > 0) { + for (ResultsBean resultsBean : mBeanList) { + mItemList.add(new TextItem(resultsBean)); + } + } + } + }; + + @Override + public int getItemViewType(int position) { + if (mItemList != null && !mItemList.isEmpty()) { + return mItemList.get(position).getType(); + } + return -1; + } + + @Override + public DefaultHolder onCreateViewHolder(ViewGroup parent, int viewType) { + DefaultHolder defaultHolder; + switch (viewType) { + case VIEW_DEFAULT: + defaultHolder = new TextHolder(mContext, parent); + break; + default: + defaultHolder = null; + break; + } + return defaultHolder; + } + + @SuppressWarnings("unchecked") + @Override + public void onBindViewHolder(DefaultHolder holder, int position) { + if (mItemList != null && !mItemList.isEmpty()) { + holder.bindItem(mContext, mItemList.get(position)); + } + } + + @Override + public void onViewRecycled(DefaultHolder holder) { + super.onViewRecycled(holder); + Glide.get(mContext).clearMemory(); + } + + @Override + public int getItemCount() { + return mBeanList == null ? 0 : mBeanList.size(); + } + + @Override + public long getItemId(int position) { + return position; + } + + void fillItems(List results) { + appendItems(results); + } + + public void appendItems(List results) { + if (mBeanList != null) { + mBeanList.addAll(results); + this.notifyDataSetChanged(); + } + } + + public void setOnItemClickListener(RecyclerOnClick onItemClickListener) { + mMeiZiOnClick = onItemClickListener; + } + + @Override + public void destroy() { + if (mItemList != null) { + mItemList.clear(); + mItemList = null; + } + + if (mBeanList != null) { + mBeanList.clear(); + mBeanList = null; + } + unregisterAdapterDataObserver(dataObserver); + } + + private class TextItem implements DefaultItem { + + private ResultsBean mResultsBean; + + @Override + public int getType() { + return VIEW_DEFAULT; + } + + TextItem(ResultsBean resultsBean) { + this.mResultsBean = resultsBean; + } + + ResultsBean getResultsBean() { + return mResultsBean; + } + } + + class TextHolder extends DefaultHolder { + @BindView(R.id.author_name) + TextView authorName; + + @BindView(R.id.time) + TextView time; + + @BindView(R.id.title) + TextView title; + + private ResultsBean mResultsBean; + + TextHolder(Context context, ViewGroup parent) { + super(context, parent, R.layout.adapter_android); + } + + @Override + public void bindItem(Context context, TextItem item) { + final ResultsBean resultsBean = item.getResultsBean(); + if (resultsBean == null) { + return; + } + mResultsBean = resultsBean; + itemView.setOnClickListener(clickListener); + + Date date = DateUtils.formatDateFromStr(resultsBean.publishedAt); + String formatDate = DateUtils.getFormatDate(date, DateUtils.MM_DD); + time.setText(formatDate); + + title.setText(resultsBean.desc); + authorName.setText(resultsBean.getWho()); + } + + View.OnClickListener clickListener = new View.OnClickListener() { + @Override + public void onClick(View v) { + if (mMeiZiOnClick != null) { + mMeiZiOnClick.onClick(v, mResultsBean); + } + } + }; + } + + static abstract class DefaultHolder extends ButterHolder { + + DefaultHolder(Context context, ViewGroup parent, @LayoutRes int layoutID) { + super(context, parent, layoutID); + } + + public abstract void bindItem(Context context, II item); + } + + interface DefaultItem { + int VIEW_DEFAULT = 0; + + @IntDef({ + VIEW_DEFAULT + }) + + @Retention(RetentionPolicy.SOURCE) + @interface ViewType { + } + + @ViewType + int getType(); + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java new file mode 100644 index 00000000..90924dbb --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java @@ -0,0 +1,37 @@ +package com.gank.gankly.ui.android; + +import android.content.Context; +import android.support.annotation.NonNull; + +import com.gank.gankly.mvp.base.LoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; +import com.leftcoding.http.bean.ResultsBean; + +import java.util.List; + +/** + * Create by LingYan on 2016-10-25 + */ + +public interface AndroidContract { + interface View extends SupportView { + void refreshAndroidSuccess(List list); + + void refreshAndroidFailure(String msg); + + void appendAndroidSuccess(List list); + + void appendAndroidFailure(String msg); + } + + abstract class Presenter extends LoadMorePresenter { + + public Presenter(@NonNull Context context, @NonNull View view) { + super(context, view); + } + + protected abstract void refreshAndroid(); + + protected abstract void appendAndroid(); + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/main/android/AndroidFragment.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java similarity index 61% rename from app/src/main/java/com/gank/gankly/ui/main/android/AndroidFragment.java rename to app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java index 914a7c31..920ec591 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/android/AndroidFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java @@ -1,94 +1,92 @@ -package com.gank.gankly.ui.main.android; +package com.gank.gankly.ui.android; import android.content.Context; import android.content.Intent; import android.content.res.ColorStateList; import android.graphics.Color; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.text.TextUtils; import android.view.View; import com.gank.gankly.App; import com.gank.gankly.R; -import com.gank.gankly.bean.ResultsBean; import com.gank.gankly.config.Constants; import com.gank.gankly.listener.RecyclerOnClick; -import com.gank.gankly.mvp.source.remote.GankDataSource; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.web.normal.WebActivity; import com.gank.gankly.utils.CircularAnimUtils; +import com.gank.gankly.utils.ToastUtils; import com.gank.gankly.utils.theme.RecyclerViewColor; import com.gank.gankly.utils.theme.ThemeColor; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; +import com.leftcoding.http.bean.ResultsBean; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; import butterknife.BindView; /** - * Android * Create by LingYan on 2016-4-26 - * Email:137387869@qq.com */ public class AndroidFragment extends LazyFragment implements SwipeRefreshLayout.OnRefreshListener, RecyclerOnClick, AndroidContract.View { @BindView(R.id.multiple_status_view) MultipleStatusView mMultipleStatusView; + @BindView(R.id.swipe_refresh) LySwipeRefreshLayout mSwipeRefreshLayout; private RecyclerView mRecyclerView; + private MainActivity mActivity; - private AndroidAdapter mAndroidAdapter; + private AndroidAdapter mAdapter; private AndroidContract.Presenter mPresenter; + private AtomicBoolean firstLoad = new AtomicBoolean(true); + @Override protected int getLayoutId() { return R.layout.layout_swipe_normal; } - public static AndroidFragment newInstance() { - AndroidFragment fragment = new AndroidFragment(); - Bundle args = new Bundle(); - fragment.setArguments(args); - return fragment; - } - @Override - protected void initPresenter() { - mPresenter = new AndroidPresenter(GankDataSource.getInstance(), this); + public void onAttach(Context context) { + super.onAttach(context); + this.mActivity = (MainActivity) context; } @Override - protected void initValues() { - setSwipeRefreshLayout(mSwipeRefreshLayout); - } + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); - @Override - protected void initViews() { initAdapter(); initRecycler(); - } - @Override - protected void bindListener() { - mAndroidAdapter.setOnItemClickListener(this); + mAdapter.setOnItemClickListener(this); mSwipeRefreshLayout.setOnRefreshListener(this); mMultipleStatusView.setListener(v -> { showLoading(); - mPresenter.fetchNew(); + mPresenter.refreshAndroid(); }); } @Override - protected void initData() { - showLoading(); - mPresenter.fetchNew(); + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new AndroidPresenter(getContext(), this); + mPresenter.refreshAndroid(); + } + + @Override + protected void initLazy() { } private void initRecycler() { @@ -97,58 +95,81 @@ private void initRecycler() { mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { @Override public void onRefresh() { - showRefresh(); - mPresenter.fetchNew(); + mPresenter.refreshAndroid(); } @Override public void onLoadMore() { - showRefresh(); - mPresenter.fetchMore(); + mPresenter.appendAndroid(); } }); } private void initAdapter() { - mAndroidAdapter = new AndroidAdapter(mActivity); -// AlphaInAnimationAdapter alphaAdapter = new AlphaInAnimationAdapter(mAndroidAdapter); -// alphaAdapter.setFirstOnly(true); -// alphaAdapter.setDuration(500); -// alphaAdapter.setInterpolator(new OvershootInterpolator(0.5f)); - mSwipeRefreshLayout.setAdapter(mAndroidAdapter); + mAdapter = new AndroidAdapter(mActivity); + mSwipeRefreshLayout.setAdapter(mAdapter); } @Override public void onRefresh() { mSwipeRefreshLayout.setRefreshing(true); - mPresenter.fetchNew(); + mPresenter.refreshAndroid(); } @Override public void onClick(View view, ResultsBean bean) { Bundle bundle = new Bundle(); - bundle.putString(WebActivity.TITLE, bean.getDesc()); - bundle.putString(WebActivity.URL, bean.getUrl()); + bundle.putString(WebActivity.TITLE, bean.desc); + bundle.putString(WebActivity.URL, bean.url); bundle.putString(WebActivity.TYPE, Constants.ANDROID); - bundle.putString(WebActivity.AUTHOR, bean.getWho()); + bundle.putString(WebActivity.AUTHOR, bean.who); Intent intent = new Intent(mActivity, WebActivity.class); intent.putExtras(bundle); CircularAnimUtils.startActivity(mActivity, intent, view, R.color.white_half); } @Override - public void refillDate(List list) { - mAndroidAdapter.refillItems(list); + public void refreshAndroidSuccess(List list) { + mAdapter.fillItems(list); + } + + @Override + public void refreshAndroidFailure(String msg) { + } @Override - public void appendData(List list) { - mAndroidAdapter.appendItems(list); + public void appendAndroidSuccess(List list) { + mAdapter.appendItems(list); } @Override - public void hideRefresh() { - mSwipeRefreshLayout.setRefreshing(false); + public void appendAndroidFailure(String msg) { + + } + + @Override + public void showProgress() { + if (firstLoad.get()) { + showLoading(); + return; + } + + if (mSwipeRefreshLayout != null) { + mSwipeRefreshLayout.setRefreshing(true); + } + } + + @Override + public void hideProgress() { + if (firstLoad.compareAndSet(true, false)) { + showContent(); + return; + } + + if (mSwipeRefreshLayout != null) { + mSwipeRefreshLayout.setRefreshing(false); + } } @Override @@ -158,43 +179,64 @@ public void hasNoMoreDate() { @Override public void showContent() { - mMultipleStatusView.showContent(); + if (mMultipleStatusView != null) { + mMultipleStatusView.showContent(); + } } @Override public void showEmpty() { - mMultipleStatusView.showEmpty(); + if (mMultipleStatusView != null) { + mMultipleStatusView.showEmpty(); + } } @Override public void showDisNetWork() { - mMultipleStatusView.showDisNetwork(); + if (mMultipleStatusView != null) { + mMultipleStatusView.showDisNetwork(); + } } @Override public void showError() { - mMultipleStatusView.showError(); + if (mMultipleStatusView != null) { + mMultipleStatusView.showError(); + } } @Override public void showLoading() { - mMultipleStatusView.showLoading(); + if (mMultipleStatusView != null) { + mMultipleStatusView.showLoading(); + } } @Override - public void showRefreshError(String errorStr) { - Snackbar.make(mSwipeRefreshLayout, errorStr, Snackbar.LENGTH_SHORT).show(); + public void showShortToast(String str) { + str = TextUtils.isEmpty(str) ? getContext().getString(R.string.loading_error) : str; + ToastUtils.showToast(str); } - @Override - public void showRefresh() { - mSwipeRefreshLayout.setRefreshing(true); + public static AndroidFragment newInstance() { + AndroidFragment fragment = new AndroidFragment(); + Bundle args = new Bundle(); + fragment.setArguments(args); + return fragment; } @Override - public void onAttach(Context context) { - super.onAttach(context); - this.mActivity = (MainActivity) context; + public void onDestroyView() { + super.onDestroyView(); + if (mAdapter != null) { + mAdapter.destroy(); + mAdapter = null; + } + + if (mPresenter != null) { + mPresenter.unSubscribe(); + mPresenter = null; + } } private ColorStateList getSwitchThumbColorStateList() { @@ -229,12 +271,11 @@ private ColorStateList getSwitchThumbColorStateList() { return new ColorStateList(states, colors); } - @Override protected void callBackRefreshUi() { ThemeColor themeColor = new ThemeColor(this); RecyclerViewColor mRecycler = new RecyclerViewColor(mRecyclerView); - mRecycler.setItemColor(R.id.android_txt_title, R.attr.baseAdapterItemTextColor); - mRecycler.setItemColor(R.id.android_txt_time, R.attr.textSecondaryColor); + mRecycler.setItemColor(R.id.title, R.attr.baseAdapterItemTextColor); + mRecycler.setItemColor(R.id.time, R.attr.textSecondaryColor); mRecycler.setItemBackgroundColor(R.id.android_rl, R.attr.lyItemSelectBackground); themeColor.setBackgroundResource(R.attr.themeBackground, mRecyclerView); diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java new file mode 100644 index 00000000..fb8c0a48 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java @@ -0,0 +1,165 @@ +package com.gank.gankly.ui.android; + +import android.content.Context; +import android.support.annotation.NonNull; + +import com.gank.gankly.mvp.observer.PageObserver; +import com.gank.gankly.ui.android.AndroidContract.Presenter; +import com.leftcoding.http.api.GankManager; +import com.leftcoding.http.bean.PageResult; +import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.rxbus.RxManager; + +import java.util.concurrent.atomic.AtomicBoolean; + +import io.reactivex.Observable; +import io.reactivex.ObservableSource; +import io.reactivex.functions.Function; +import retrofit2.Response; + +/** + * Create by LingYan on 2016-10-25 + */ +class AndroidPresenter extends Presenter { + private static final String TAG = "android_presenter"; + + private PageResult mPageResult; + + private final AtomicBoolean first = new AtomicBoolean(true); + + AndroidPresenter(@NonNull Context context, @NonNull AndroidContract.View view) { + super(context, view); + } + + @Override + protected void refreshAndroid() { + fetchAndroid(getInitPage()); + } + + @Override + protected void appendAndroid() { + if (mPageResult != null) { + fetchAndroid(mPageResult.nextPage); + } + } + + @Override + public void unSubscribe() { + super.unSubscribe(); + first.set(true); + mPageResult = null; + RxManager.get().clear(TAG); + } + + private void fetchAndroid(final int page) { + GankManager.with(mContext) + .androids(page, getLimit()) + .doOnSubscribe(disposable -> { + if (isActivity()) { + mView.showProgress(); + } + }) + .doFinally(() -> { + if (isActivity()) { + mView.hideProgress(); + } + }) + .flatMap(new Function>, ObservableSource>>() { + @Override + public ObservableSource> apply(Response> pageResultResponse) throws Exception { + if (pageResultResponse == null + || !pageResultResponse.isSuccessful() + || pageResultResponse.body() == null) { + return Observable.error(new Throwable()); + } + return Observable.create(e -> e.onNext(pageResultResponse.body())); + } + }) + .map(pageResult -> { + if (pageResult != null) { + pageResult.curPage = page; + return pageResult; + } + return null; + }) + .flatMap(new Function, ObservableSource>>() { + @Override + public ObservableSource> apply(PageResult result) throws Exception { + if (result == null) { + return Observable.error(new Throwable()); + } + return Observable.create(e -> e.onNext(result)); + } + }) + .subscribe(new PageSubscribe()); + } + + private class PageSubscribe extends PageObserver> { + PageSubscribe() { + this(first.get()); + } + + PageSubscribe(boolean isFirst) { + super(TAG, isFirst); + } + + @Override + public void onNext(PageResult results) { + super.onNext(results); + parseAndroidData(results); + } + + @Override + public void onError(@NonNull Throwable e) { + super.onError(e); + if (isActivity()) { + if (isFirst()) { + mView.showEmpty(); + } else { + mView.appendAndroidFailure("网络请求失败."); + } + } + } + + @Override + public void onComplete() { + first.set(false); + } + + @Override + public void refreshError(String str) { + super.refreshError(str); + if (isActivity()) { + mView.showEmpty(); + } + } + + @Override + public void appendError(String str) { + super.appendError(str); + showShortToast(str); + } + } + + private void parseAndroidData(final PageResult result) { + if (!isActivity()) { + return; + } + + mPageResult = result; + mPageResult.nextPage = getNextPage(mPageResult.curPage); + if (first.get()) { + mView.refreshAndroidSuccess(result.results); + } else { + mView.appendAndroidSuccess(result.results); + } + } + + private int getNextPage(int curPage) { + return curPage + 1; + } + + private boolean isFirst() { + return first.get(); + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiActivity.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiActivity.java index c7bb3ecb..98e6d422 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiActivity.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.baisi; import com.gank.gankly.R; -import com.gank.gankly.ui.base.BaseActivity; +import com.gank.gankly.ui.base.activity.BaseActivity; /** * 百思不得姐 diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java index 4ee910c6..35b3ff76 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java @@ -9,12 +9,13 @@ import android.support.v7.app.ActionBar; import android.support.v7.widget.Toolbar; import android.util.TypedValue; +import android.view.View; import com.gank.gankly.App; import com.gank.gankly.R; import com.gank.gankly.ui.baisi.image.BaiSiImageFragment; -import com.gank.gankly.ui.base.BaseSwipeRefreshFragment; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; +import com.gank.gankly.ui.base.fragment.ButterKnifeFragment; import com.gank.gankly.ui.main.GankPagerAdapter; import java.util.ArrayList; @@ -25,9 +26,8 @@ /** * 百思不得姐 * Create by LingYan on 2016-04-22 - * Email:137387869@qq.com */ -public class BaiSiMainFragment extends BaseSwipeRefreshFragment implements ViewPager.OnPageChangeListener { +public class BaiSiMainFragment extends ButterKnifeFragment implements ViewPager.OnPageChangeListener { private static final String TYPE_VIDEO = "视频"; private static final String TYPE_IMAGE = "图片"; @@ -57,27 +57,21 @@ public void onAttach(Context context) { } @Override - protected void initPresenter() { - } - - @Override - protected void initViews() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); mToolbar.setTitle(R.string.baisi_leisure_time); mActivity.setSupportActionBar(mToolbar); ActionBar bar = mActivity.getSupportActionBar(); if (bar != null) { bar.setDisplayHomeAsUpEnabled(true); } - mToolbar.setNavigationOnClickListener(view -> mActivity.finish()); - } - - @Override - protected void bindListener() { - changeThemeBackground(); - } + mToolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mActivity.finish(); + } + }); - @Override - protected void initValues() { List mList = new ArrayList<>(); mList.add(new BaiSiVideoFragment()); mList.add(new BaiSiImageFragment()); @@ -93,6 +87,8 @@ protected void initValues() { mViewPager.addOnPageChangeListener(this); initTabLayout(); + + changeThemeBackground(); } private void initTabLayout() { @@ -134,9 +130,4 @@ public void onPageScrollStateChanged(int state) { public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } - - @Override - protected void callBackRefreshUi() { - - } } diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoContract.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoContract.java index 4074f5f7..73c37c4d 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoContract.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoContract.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.baisi; import com.gank.gankly.bean.BuDeJieVideo; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; +import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; import java.util.List; @@ -12,13 +12,13 @@ */ public interface BaiSiVideoContract { - interface View extends IFetchView { + interface View extends SupportView { void refillData(List list); void appendData(List list); } - interface Presenter extends IFetchPresenter { + interface Presenter extends ILoadMorePresenter { } } diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java index 2924baf6..4df40fb9 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java @@ -2,14 +2,17 @@ import android.content.Context; import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; +import android.view.View; import com.gank.gankly.R; import com.gank.gankly.bean.BuDeJieVideo; import com.gank.gankly.bean.GallerySize; import com.gank.gankly.mvp.source.remote.BuDeJieDataSource; import com.gank.gankly.rxjava.RxBus_; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; import com.gank.gankly.widget.SpaceItemDecoration; @@ -20,7 +23,6 @@ /** * Create by LingYan on 2016-11-30 - * Email:137387869@qq.com */ public class BaiSiVideoFragment extends LazyFragment implements BaiSiVideoContract.View { @@ -33,38 +35,36 @@ public class BaiSiVideoFragment extends LazyFragment implements BaiSiVideoContra private BaiSiVideoContract.Presenter mPresenter; private BaiSiActivity mActivity; - @Override - public void onAttach(Context context) { - super.onAttach(context); - mActivity = (BaiSiActivity) context; - } - @Override protected int getLayoutId() { return R.layout.layout_swipe_normal; } @Override - protected void initData() { + public void onAttach(Context context) { + super.onAttach(context); + mActivity = (BaiSiActivity) context; } @Override - protected void initPresenter() { - mPresenter = new BaiSiVideoPresenter(BuDeJieDataSource.getInstance(), this); + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + initViews(); } @Override - protected void callBackRefreshUi() { - + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new BaiSiVideoPresenter(BuDeJieDataSource.getInstance(), this); + mPresenter.fetchNew(); } @Override - protected void initValues() { - mPresenter.fetchNew(); + protected void initLazy() { + } - @Override - protected void initViews() { + private void initViews() { mBaiSiVideoAdapter = new BaiSiVideoAdapter(mActivity); mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(getActivity())); mSwipeRefreshLayout.setAdapter(mBaiSiVideoAdapter); @@ -75,7 +75,7 @@ protected void initViews() { mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { @Override public void onLoadMore() { - showRefresh(); + showProgress(); mPresenter.fetchMore(); } @@ -100,57 +100,16 @@ private void startActivity(GallerySize gs) { mActivity.overridePendingTransition(0, 0); } - - @Override - protected void bindListener() { - - } - @Override - public void showRefresh() { + public void showProgress() { mSwipeRefreshLayout.setRefreshing(true); } @Override - public void hideRefresh() { + public void hideProgress() { mSwipeRefreshLayout.setRefreshing(false); } - @Override - public void hasNoMoreDate() { - - } - - @Override - public void showContent() { - - } - - @Override - public void showEmpty() { - - } - - @Override - public void showDisNetWork() { - - } - - @Override - public void showError() { - - } - - @Override - public void showLoading() { - - } - - @Override - public void showRefreshError(String errorStr) { - - } - @Override public void refillData(List list) { mBaiSiVideoAdapter.updateItems(list); diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPreViewActivity.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPreViewActivity.java index e84a5266..168fb7ef 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPreViewActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPreViewActivity.java @@ -11,7 +11,7 @@ import com.gank.gankly.R; import com.gank.gankly.bean.GallerySize; import com.gank.gankly.rxjava.RxBus_; -import com.gank.gankly.ui.base.BaseActivity; +import com.gank.gankly.ui.base.activity.BaseActivity; import com.gank.gankly.utils.ShareUtils; import com.superplayer.library.SuperPlayer; diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPresenter.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPresenter.java index 21969c59..68ed661d 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPresenter.java @@ -13,7 +13,6 @@ /** * Create by LingYan on 2016-11-30 - * Email:137387869@qq.com */ public class BaiSiVideoPresenter extends FetchPresenter implements BaiSiVideoContract.Presenter { @@ -41,13 +40,13 @@ private void fetchData(int page) { mTask.fetchVideo(page).subscribe(new Observer() { @Override public void onError(Throwable e) { - mView.hideRefresh(); + mView.hideProgress(); KLog.e(e); } @Override public void onComplete() { - mView.hideRefresh(); + mView.hideProgress(); setFetchPage(getFetchPage() + 1); } @@ -71,11 +70,6 @@ public void onNext(BuDeJieVideo baiSiBean) { }); } - @Override - public void subscribe() { - - } - @Override public void unSubscribe() { diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java index 58c8a897..8966a7b7 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java @@ -3,6 +3,7 @@ import android.graphics.PointF; import android.net.Uri; import android.os.Bundle; +import android.support.annotation.Nullable; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; @@ -15,7 +16,7 @@ import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; import com.gank.gankly.R; import com.gank.gankly.bean.GallerySize; -import com.gank.gankly.ui.base.BaseFragment; +import com.gank.gankly.ui.base.fragment.SupportFragment; import com.socks.library.KLog; import java.io.File; @@ -27,7 +28,7 @@ * Email:137387869@qq.com */ -public class BaiSiGalleryFragment extends BaseFragment { +public class BaiSiGalleryFragment extends SupportFragment { private static final String IMAGE_GIF = ".gif"; public static final String URL = "BaiSi_Url"; public static final String SIZE_HEIGHT = "Height"; @@ -58,7 +59,8 @@ protected int getLayoutId() { } @Override - protected void initValues() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); sliderIv.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP); sliderIv.setDoubleTapZoomStyle(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER); Bundle bundle = getArguments(); @@ -71,6 +73,11 @@ protected void initValues() { loadImageBitmap(mUrl); } + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + } + public void loadImageBitmap(final String url) { if (url.endsWith(IMAGE_GIF)) { sliderIv.setVisibility(View.GONE); @@ -101,14 +108,4 @@ public void onResourceReady(File resource, Transition transition) }); } } - - @Override - protected void initViews() { - - } - - @Override - protected void bindListener() { - - } } diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java index 0510022a..cc0332c2 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.baisi.image; import com.gank.gankly.bean.BuDeJieBean; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; +import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; import java.util.List; @@ -12,16 +12,13 @@ */ public interface BaiSiImageContract { - interface View extends IFetchView { - // void refillData(List list); -// -// void appendData(List list); + interface View extends SupportView { void refillData(List list); void appendData(List list); } - interface Presenter extends IFetchPresenter { + interface Presenter extends ILoadMorePresenter { } } diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java index 8b511005..86a9cc1e 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java @@ -1,13 +1,16 @@ package com.gank.gankly.ui.baisi.image; import android.content.Context; +import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; +import android.view.View; import com.gank.gankly.R; import com.gank.gankly.bean.BuDeJieBean; import com.gank.gankly.mvp.source.remote.BuDeJieDataSource; import com.gank.gankly.ui.baisi.BaiSiActivity; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.widget.SpaceItemDecoration; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; @@ -38,28 +41,17 @@ public void onAttach(Context context) { } @Override - protected void initData() { + protected void initLazy() { mSwipeRefreshLayout.setRefreshing(true); mPresenter.fetchNew(); } @Override - protected void initPresenter() { - mPresenter = new BaiSiImagePresenter(BuDeJieDataSource.getInstance(), this); - } - - @Override - protected void callBackRefreshUi() { - - } - - @Override - protected int getLayoutId() { - return R.layout.layout_swipe_normal; - } + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + int spacingInPixels = getResources().getDimensionPixelSize(R.dimen.recycler_view_space); + mSwipeRefreshLayout.getRecyclerView().addItemDecoration(new SpaceItemDecoration(spacingInPixels)); - @Override - protected void initValues() { mAdapter = new BaiSiImageAdapter(mActivity); mAdapter.setPlayClick(gallerySize -> mActivity.getSupportFragmentManager().beginTransaction() .addToBackStack("BaiSiGalleryFragment") @@ -81,63 +73,26 @@ public void onLoadMore() { } @Override - protected void initViews() { - setSwipeRefreshLayout(mSwipeRefreshLayout); - - int spacingInPixels = getResources().getDimensionPixelSize(R.dimen.recycler_view_space); - mSwipeRefreshLayout.getRecyclerView().addItemDecoration(new SpaceItemDecoration(spacingInPixels)); + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new BaiSiImagePresenter(BuDeJieDataSource.getInstance(), this); } @Override - protected void bindListener() { - + protected int getLayoutId() { + return R.layout.layout_swipe_normal; } @Override - public void showRefresh() { + public void showProgress() { mSwipeRefreshLayout.setRefreshing(true); } @Override - public void hideRefresh() { + public void hideProgress() { mSwipeRefreshLayout.setRefreshing(false); } - @Override - public void hasNoMoreDate() { - - } - - @Override - public void showContent() { - - } - - @Override - public void showEmpty() { - - } - - @Override - public void showDisNetWork() { - - } - - @Override - public void showError() { - - } - - @Override - public void showLoading() { - - } - - @Override - public void showRefreshError(String errorStr) { - - } - @Override public void refillData(List list) { mAdapter.refillItems(list); diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImagePresenter.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImagePresenter.java index 9f98f463..1ffc5819 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImagePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImagePresenter.java @@ -10,7 +10,6 @@ /** * Create by LingYan on 2016-12-05 - * Email:137387869@qq.com */ public class BaiSiImagePresenter extends FetchPresenter implements BaiSiImageContract.Presenter { @@ -31,7 +30,7 @@ public void fetchNew() { @Override public void fetchMore() { - mView.showRefresh(); + mView.showProgress(); fetchData(); } @@ -39,13 +38,13 @@ private void fetchData() { mTask.fetchImage(np).subscribe(new Observer() { @Override public void onError(Throwable e) { - mView.hideRefresh(); + mView.hideProgress(); KLog.e(e); } @Override public void onComplete() { - mView.hideRefresh(); + mView.hideProgress(); } @Override @@ -55,10 +54,8 @@ public void onSubscribe(Disposable d) { @Override public void onNext(BuDeJieBean buDeJieBean) { - KLog.d("buDeJieBean:" + buDeJieBean); if (buDeJieBean != null) { np = buDeJieBean.getInfo().getNp(); - KLog.d("np:" + np); if (np == 0) { mView.refillData(buDeJieBean.getList()); } else { @@ -69,11 +66,6 @@ public void onNext(BuDeJieBean buDeJieBean) { }); } - @Override - public void subscribe() { - - } - @Override public void unSubscribe() { diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseAdapter.java b/app/src/main/java/com/gank/gankly/ui/base/BaseAdapter.java new file mode 100644 index 00000000..caa7b2ce --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/base/BaseAdapter.java @@ -0,0 +1,11 @@ +package com.gank.gankly.ui.base; + +import android.support.v7.widget.RecyclerView; + +/** + * Create by LingYan on 2017-10-14 + */ + +public abstract class BaseAdapter extends RecyclerView.Adapter { + public abstract void destroy(); +} diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseJiandanActivity.java b/app/src/main/java/com/gank/gankly/ui/base/BaseJiandanActivity.java index 0b34b7ed..10754dd1 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseJiandanActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/base/BaseJiandanActivity.java @@ -1,5 +1,6 @@ package com.gank.gankly.ui.base; +import com.gank.gankly.ui.base.activity.BaseActivity; import com.gank.gankly.view.ISwipeRefreshView; /** diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseThemeFragment.java b/app/src/main/java/com/gank/gankly/ui/base/BaseThemeFragment.java index f5ba32b5..e508e1ea 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseThemeFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/BaseThemeFragment.java @@ -10,8 +10,8 @@ import com.gank.gankly.R; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; +import com.gank.gankly.ui.base.fragment.ButterKnifeFragment; import com.gank.gankly.utils.ListUtils; -import com.gank.gankly.utils.StyleUtils; import com.gank.gankly.widget.LYRelativeLayoutRipple; import java.util.List; @@ -21,9 +21,8 @@ /** * Create by LingYan on 2016-09-13 - * Email:137387869@qq.com */ -public abstract class BaseThemeFragment extends BaseFragment { +public abstract class BaseThemeFragment extends ButterKnifeFragment { @NonNull private SwipeRefreshLayout mSwipeRefreshLayout; private Disposable mDisposable; @@ -37,13 +36,13 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { protected abstract void callBackRefreshUi(); - @Override - public void changeThemes() { - super.changeThemes(); - if (mSwipeRefreshLayout != null) { - StyleUtils.changeSwipeRefreshLayout(mSwipeRefreshLayout); - } - } +// @Override +// public void changeThemes() { +// super.changeThemes(); +// if (mSwipeRefreshLayout != null) { +// StyleUtils.changeSwipeRefreshLayout(mSwipeRefreshLayout); +// } +// } public void setSwipeRefreshLayout(@NonNull SwipeRefreshLayout swipeRefreshLayout) { this.mSwipeRefreshLayout = swipeRefreshLayout; diff --git a/app/src/main/java/com/gank/gankly/ui/base/BasicHolder.java b/app/src/main/java/com/gank/gankly/ui/base/BasicHolder.java new file mode 100644 index 00000000..c840b9fe --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/base/BasicHolder.java @@ -0,0 +1,19 @@ +package com.gank.gankly.ui.base; + +import android.content.Context; +import android.support.annotation.LayoutRes; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +/** + * Create by LingYan on 2017-10-14 + */ + +public abstract class BasicHolder extends RecyclerView.ViewHolder { + + public BasicHolder(Context context, ViewGroup parent, @LayoutRes int layoutID) { + super(LayoutInflater.from(context).inflate(layoutID, parent, false)); + + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/base/ButterHolder.java b/app/src/main/java/com/gank/gankly/ui/base/ButterHolder.java new file mode 100644 index 00000000..17ea6982 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/base/ButterHolder.java @@ -0,0 +1,18 @@ +package com.gank.gankly.ui.base; + +import android.content.Context; +import android.support.annotation.LayoutRes; +import android.view.ViewGroup; + +import butterknife.ButterKnife; + +/** + * Create by LingYan on 2017-10-13 + */ + +public abstract class ButterHolder extends BasicHolder { + public ButterHolder(Context context, ViewGroup parent, @LayoutRes int layoutID) { + super(context, parent, layoutID); + ButterKnife.bind(this, itemView); + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseActivity.java b/app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java similarity index 96% rename from app/src/main/java/com/gank/gankly/ui/base/BaseActivity.java rename to app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java index d4736a7d..5d995717 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.base; +package com.gank.gankly.ui.base.activity; import android.app.Activity; import android.content.Intent; @@ -19,7 +19,6 @@ import com.gank.gankly.App; import com.gank.gankly.R; -import com.gank.gankly.presenter.BasePresenter; import butterknife.ButterKnife; import butterknife.Unbinder; @@ -27,12 +26,10 @@ /** * Create by LingYan on 2016-04-05 - * Email:137387869@qq.com */ -public abstract class BaseActivity

extends AppCompatActivity { +public abstract class BaseActivity extends AppCompatActivity { private static final int contentAreaId = R.id.main_frame_layout; private long mLastTime; - protected P mPresenter; protected Unbinder mUnBinder; FragmentTransaction mFragmentTransaction; @@ -41,7 +38,6 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { initTheme(); super.onCreate(savedInstanceState); setContentView(getContentId()); - initPresenter(); mUnBinder = ButterKnife.bind(this); initValues(); initViews(); diff --git a/app/src/main/java/com/gank/gankly/ui/base/activity/SupportActivity.java b/app/src/main/java/com/gank/gankly/ui/base/activity/SupportActivity.java new file mode 100644 index 00000000..df133b5f --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/base/activity/SupportActivity.java @@ -0,0 +1,22 @@ +package com.gank.gankly.ui.base.activity; + +/** + * Create by LingYan on 2017-10-03 + */ + +public abstract class SupportActivity extends BaseActivity { + @Override + protected void initValues() { + + } + + @Override + protected void initViews() { + + } + + @Override + protected void bindListener() { + + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java similarity index 57% rename from app/src/main/java/com/gank/gankly/ui/base/BaseFragment.java rename to app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java index 8d949611..d6742a31 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.base; +package com.gank.gankly.ui.base.fragment; import android.os.Bundle; import android.support.annotation.Nullable; @@ -9,62 +9,33 @@ import com.gank.gankly.App; -import butterknife.ButterKnife; -import butterknife.Unbinder; - /** * Create by LingYan on 2016-04-05 * Email:137387869@qq.com */ public abstract class BaseFragment extends Fragment { - protected Unbinder unBinder; - private View mView; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - if (mView == null) { - mView = inflater.inflate(getLayoutId(), container, false); - } - return mView; + return super.onCreateView(inflater, container, savedInstanceState); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - unBinder = ButterKnife.bind(this, view); - initValues(); - initViews(); - bindListener(); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - changeThemes(); } - protected abstract int getLayoutId(); - - protected abstract void initValues(); - - protected abstract void initViews(); - - protected abstract void bindListener(); - - public void changeThemes() { - - } @Override public void onDestroyView() { super.onDestroyView(); ((App) getActivity().getApplication()).getRefWatcher().watch(this); - - if (unBinder != null) { - unBinder.unbind(); - unBinder = null; - } } } diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/ButterKnifeFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/ButterKnifeFragment.java new file mode 100644 index 00000000..ecfbe7b4 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/ButterKnifeFragment.java @@ -0,0 +1,40 @@ +package com.gank.gankly.ui.base.fragment; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import butterknife.ButterKnife; +import butterknife.Unbinder; + +/** + * Create by LingYan on 2017-09-28 + */ + +public abstract class ButterKnifeFragment extends BaseFragment { + protected Unbinder unBinder; + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(getLayoutId(), container, false); + } + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + unBinder = ButterKnife.bind(this, view); + } + + protected abstract int getLayoutId(); + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (unBinder != null) { + unBinder.unbind(); + } + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/base/LazyFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/LazyFragment.java similarity index 75% rename from app/src/main/java/com/gank/gankly/ui/base/LazyFragment.java rename to app/src/main/java/com/gank/gankly/ui/base/fragment/LazyFragment.java index cd07bfb5..0e943526 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/LazyFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/LazyFragment.java @@ -1,12 +1,14 @@ -package com.gank.gankly.ui.base; +package com.gank.gankly.ui.base.fragment; import android.os.Bundle; import android.support.annotation.Nullable; +import com.socks.library.KLog; + /** * Create by LingYan on 2016-5-12 */ -public abstract class LazyFragment extends BaseSwipeRefreshFragment { +public abstract class LazyFragment extends SupportFragment { private boolean isVisible = false; //是否可见 private boolean isView = false; //是否建立视图关系 private boolean isFirstLoad = true; //是否第一次加载 @@ -15,27 +17,27 @@ public abstract class LazyFragment extends BaseSwipeRefreshFragment { public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); isView = true; - lazyLoadData(); } @Override public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { isVisible = true; lazyLoadData(); } else { isVisible = false; } - super.setUserVisibleHint(isVisibleToUser); } - protected abstract void initData(); + protected abstract void initLazy(); private void lazyLoadData() { + KLog.d("isVisible:" + isVisible + ",isFirstLoad:" + isFirstLoad + ",isView:" + isView); if (!isVisible || !isFirstLoad || !isView) { return; } - initData(); + initLazy(); isFirstLoad = false; } } diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java new file mode 100644 index 00000000..13722d0d --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java @@ -0,0 +1,77 @@ +package com.gank.gankly.ui.base.fragment; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.text.TextUtils; +import android.view.View; + +import com.gank.gankly.mvp.base.SupportView; +import com.gank.gankly.utils.ToastUtils; + +/** + * Create by LingYan on 2017-09-28 + */ + +public abstract class SupportFragment extends ButterKnifeFragment implements SupportView { + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + } + + @Override + public void showProgress() { + + } + + @Override + public void hideProgress() { + + } + + @Override + public void hasNoMoreDate() { + + } + + @Override + public void showContent() { + + } + + @Override + public void showEmpty() { + + } + + @Override + public void showDisNetWork() { + + } + + @Override + public void showError() { + + } + + @Override + public void showLoading() { + + } + + @Override + public void showShortToast(String str) { + if(!TextUtils.isEmpty(str)){ + ToastUtils.showToast(str); + } + } + + @Override + public void showRefreshError(String errorStr) { + + } +} diff --git a/app/src/main/java/com/gank/gankly/mvp/base/ThemeFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java similarity index 83% rename from app/src/main/java/com/gank/gankly/mvp/base/ThemeFragment.java rename to app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java index b4ef7557..af962d0d 100644 --- a/app/src/main/java/com/gank/gankly/mvp/base/ThemeFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java @@ -1,4 +1,4 @@ -package com.gank.gankly.mvp.base; +package com.gank.gankly.ui.base.fragment; import android.content.res.TypedArray; import android.os.Bundle; @@ -8,9 +8,7 @@ import android.view.View; import com.gank.gankly.R; -import com.gank.gankly.ui.base.BaseFragment; import com.gank.gankly.utils.ListUtils; -import com.gank.gankly.utils.StyleUtils; import com.gank.gankly.widget.LYRelativeLayoutRipple; import java.util.List; @@ -22,7 +20,7 @@ * Email:137387869@qq.com */ -public abstract class ThemeFragment extends BaseFragment { +public abstract class ThemeFragment extends ButterKnifeFragment { private SwipeRefreshLayout mSwipeRefreshLayout; @Override @@ -30,13 +28,13 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } - @Override - public void changeThemes() { - super.changeThemes(); - if (mSwipeRefreshLayout != null) { - StyleUtils.changeSwipeRefreshLayout(mSwipeRefreshLayout); - } - } +// @Override +// public void changeThemes() { +// super.changeThemes(); +// if (mSwipeRefreshLayout != null) { +// StyleUtils.changeSwipeRefreshLayout(mSwipeRefreshLayout); +// } +// } public void setSwipeRefreshLayout(SwipeRefreshLayout swipeRefreshLayout) { this.mSwipeRefreshLayout = swipeRefreshLayout; diff --git a/app/src/main/java/com/gank/gankly/ui/collect/CollectContract.java b/app/src/main/java/com/gank/gankly/ui/collect/CollectContract.java index 2323b48a..1ee457da 100644 --- a/app/src/main/java/com/gank/gankly/ui/collect/CollectContract.java +++ b/app/src/main/java/com/gank/gankly/ui/collect/CollectContract.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.collect; import com.gank.gankly.data.entity.UrlCollect; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; +import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; import java.util.List; @@ -13,7 +13,7 @@ public interface CollectContract { - interface View extends IFetchView { + interface View extends SupportView { void setAdapterList(List list); void appendAdapter(List list); @@ -25,9 +25,9 @@ interface View extends IFetchView { void revokeCollect(); } - interface Presenter extends IFetchPresenter { - void cancelCollect(long position); + abstract class Presenter implements ILoadMorePresenter { + abstract void cancelCollect(long position); - void insertCollect(UrlCollect collect); + abstract void insertCollect(UrlCollect collect); } } diff --git a/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java b/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java index 1ab64296..8bc0ccb7 100644 --- a/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java @@ -2,20 +2,22 @@ import android.content.Context; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; import android.support.v7.app.ActionBar; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; +import android.view.View; import android.view.animation.OvershootInterpolator; import com.gank.gankly.R; import com.gank.gankly.bean.RxCollect; import com.gank.gankly.data.entity.UrlCollect; -import com.gank.gankly.mvp.base.FetchFragment; import com.gank.gankly.mvp.source.LocalDataSource; import com.gank.gankly.rxjava.RxBus_; +import com.gank.gankly.ui.base.fragment.SupportFragment; import com.gank.gankly.ui.more.MoreActivity; import com.gank.gankly.ui.web.normal.WebActivity; import com.gank.gankly.widget.LyRecyclerView; @@ -31,9 +33,8 @@ /** * 收藏 * Create by LingYan on 2016-4-25 - * Email:137387869@qq.com */ -public class CollectFragment extends FetchFragment implements CollectContract.View { +public class CollectFragment extends SupportFragment implements CollectContract.View { @BindView(R.id.coordinator) CoordinatorLayout mCoordinatorLayout; @BindView(R.id.multiple_status_view) @@ -61,12 +62,8 @@ public void onAttach(Context context) { } @Override - protected void initPresenter() { - mPresenter = new CollectPresenter(LocalDataSource.getInstance(), this); - } - - @Override - protected void initValues() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); mToolbar.setTitle(R.string.mine_my_collect); mActivity.setSupportActionBar(mToolbar); ActionBar bar = mActivity.getSupportActionBar(); @@ -82,16 +79,31 @@ protected void initValues() { onDelete(); } }); - } - @Override - protected void initViews() { - setSwipeRefreshLayout(mSwipeRefreshLayout); + mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + @Override + public void onRefresh() { + showProgress(); + mPresenter.fetchNew(); + } + + @Override + public void onLoadMore() { + mPresenter.fetchMore(); + } + }); + initAdapter(); setRecyclerView(); initRefresh(); } + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new CollectPresenter(LocalDataSource.getInstance(), this); + } + private void setRecyclerView() { mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity)); mSwipeRefreshLayout.setAdapter(mCollectAdapter); @@ -134,22 +146,6 @@ private void initAdapter() { mCollectAdapter = new CollectAdapter(mActivity); } - @Override - protected void bindListener() { - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { - @Override - public void onRefresh() { - showRefresh(); - mPresenter.fetchNew(); - } - - @Override - public void onLoadMore() { - mPresenter.fetchMore(); - } - }); - } - private void initRefresh() { mMultipleStatusView.showLoading(); mPresenter.fetchNew(); @@ -231,12 +227,12 @@ public void showContent() { } @Override - public void showRefresh() { + public void showProgress() { mSwipeRefreshLayout.setRefreshing(true); } @Override - public void hideRefresh() { + public void hideProgress() { mSwipeRefreshLayout.setRefreshing(false); } diff --git a/app/src/main/java/com/gank/gankly/ui/collect/CollectPresenter.java b/app/src/main/java/com/gank/gankly/ui/collect/CollectPresenter.java index f4e1e69d..ba344b52 100644 --- a/app/src/main/java/com/gank/gankly/ui/collect/CollectPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/collect/CollectPresenter.java @@ -3,7 +3,7 @@ import android.support.annotation.NonNull; import com.gank.gankly.data.entity.UrlCollect; -import com.gank.gankly.mvp.BasePresenter; +import com.gank.gankly.mvp.ISubscribePresenter; import com.gank.gankly.mvp.source.LocalDataSource; import com.gank.gankly.utils.ListUtils; import com.socks.library.KLog; @@ -19,7 +19,7 @@ /** * Create by LingYan on 2016-05-12 */ -public class CollectPresenter extends BasePresenter implements CollectContract.Presenter { +public class CollectPresenter extends CollectContract.Presenter implements ISubscribePresenter { private static final int LIMIT = 10; @NonNull @@ -36,7 +36,7 @@ public CollectPresenter(@NonNull LocalDataSource task, @NonNull CollectContract. } private void parseData(List list) { - int size = ListUtils.getListSize(list); + int size = ListUtils.getSize(list); if (size > 0) { if (mPage == 0) { mModelView.setAdapterList(list); @@ -69,7 +69,7 @@ public void fetchNew() { @Override public void fetchMore() { if (!isNoMore) { - mModelView.showRefresh(); + mModelView.showProgress(); int offset = getOffset(); getCollects(offset); } @@ -91,7 +91,7 @@ public void onError(Throwable e) { @Override public void onComplete() { - mModelView.hideRefresh(); + mModelView.hideProgress(); mPage = mPage + 1; } @@ -109,7 +109,7 @@ public void onNext(List urlCollects) { @Override public void cancelCollect(final long position) { - mTask.cancelCollect(position) + mTask.cancelCollect(position) // .delaySubscription(4, TimeUnit.SECONDS) .subscribe(s -> { @@ -145,11 +145,6 @@ public void onComplete() { }); } - @Override - public void subscribe() { - - } - @Override public void unSubscribe() { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java index f29e7914..8d929f41 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java @@ -2,16 +2,19 @@ import android.content.Context; import android.content.res.Resources; +import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.util.TypedValue; +import android.view.View; import com.gank.gankly.App; import com.gank.gankly.R; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; -import com.gank.gankly.ui.base.BaseSwipeRefreshFragment; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; +import com.gank.gankly.ui.base.fragment.ButterKnifeFragment; import com.gank.gankly.ui.discovered.jiandan.JiandanFragment; import com.gank.gankly.ui.discovered.more.DiscoveredAdapter; import com.gank.gankly.ui.discovered.more.DiscoveredMoreFragment; @@ -31,7 +34,7 @@ * Create by LingYan on 2016-07-01 * Email:137387869@qq.com */ -public class DiscoveredFragment extends BaseSwipeRefreshFragment implements ViewPager.OnPageChangeListener { +public class DiscoveredFragment extends ButterKnifeFragment implements ViewPager.OnPageChangeListener { private static final String TYPE_VIDEO = "视频"; private static final String TYPE_JIANDAN = "新鲜事"; private static final String TYPE_THCHNOLOGY = "科技资讯"; @@ -54,20 +57,13 @@ protected int getLayoutId() { } @Override - protected void initViews() { - - } - - @Override - protected void bindListener() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); mDisposable = RxBus_.getInstance().toObservable(ThemeEvent.class) .subscribe(themeEvent -> { refreshUi(); }); - } - @Override - protected void initValues() { List mList = new ArrayList<>(); mList.add(new VideoFragment()); mList.add(new JiandanFragment()); @@ -127,21 +123,6 @@ public void onAttach(Context context) { mActivity = (MainActivity) context; } - @Override - public void onResume() { - super.onResume(); - } - - @Override - protected void initPresenter() { - - } - - @Override - protected void callBackRefreshUi() { - - } - @Override public void onDestroyView() { super.onDestroyView(); diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java index 1866c1ef..3176a141 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.discovered.jiandan; import com.gank.gankly.bean.JianDanBean; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; +import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; import java.util.List; @@ -12,13 +12,13 @@ */ public interface JiandanContract { - interface View extends IFetchView { + interface View extends SupportView { void refillData(List list); void appendMoreDate(List list); } - interface Presenter extends IFetchPresenter { + interface Presenter extends ILoadMorePresenter { } } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java index b576f933..b0156f01 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.res.Resources; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.TypedValue; @@ -15,7 +16,7 @@ import com.gank.gankly.config.Constants; import com.gank.gankly.listener.ItemClick; import com.gank.gankly.mvp.source.remote.JiandanDataSource; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.web.JiandanWebActivity; import com.gank.gankly.utils.StyleUtils; @@ -57,18 +58,14 @@ protected int getLayoutId() { } @Override - protected void initData() { + protected void initLazy() { mMultipleStatusView.showLoading(); mPresenter.fetchNew(); } @Override - protected void initViews() { - - } - - @Override - protected void bindListener() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); mAdapter = new JiandanAdapter(); mAdapter.setListener(this); mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity)); @@ -91,16 +88,11 @@ public void onLoadMore() { } @Override - protected void initValues() { - setSwipeRefreshLayout(mSwipeRefreshLayout); - } - - @Override - protected void initPresenter() { + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); mPresenter = new JiandanPresenter(JiandanDataSource.getInstance(), this); } - @Override protected void callBackRefreshUi() { Resources.Theme theme = mActivity.getTheme(); TypedValue typedValue = new TypedValue(); @@ -141,7 +133,7 @@ public void appendMoreDate(List list) { } @Override - public void showRefresh() { + public void showProgress() { mSwipeRefreshLayout.setRefreshing(true); } @@ -151,7 +143,7 @@ public void hasNoMoreDate() { } @Override - public void hideRefresh() { + public void hideProgress() { mSwipeRefreshLayout.setRefreshing(false); } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java index a77e8efc..8dd52946 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java @@ -36,11 +36,6 @@ public JiandanPresenter(JiandanDataSource jiandanDataSource, JiandanContract.Vie setFetchLimit(LIMIT); } - @Override - public void subscribe() { - - } - @Override public void unSubscribe() { @@ -74,7 +69,7 @@ public void onSubscribe(Disposable d) { @Override public void onNext(List list) { list = filterData(list, mView); - if (ListUtils.getListSize(list) > 0) { + if (ListUtils.getSize(list) > 0) { if (getFetchPage() > 1) { mView.appendMoreDate(list); } else { @@ -120,7 +115,7 @@ public void fetchNew() { @Override public void fetchMore() { if (hasMore()) { - mView.showRefresh(); + mView.showProgress(); fetchData(getFetchPage()); } } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredAdapter.java b/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredAdapter.java index b117fc85..c9fe8eb7 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredAdapter.java @@ -5,7 +5,7 @@ import android.support.v4.app.FragmentStatePagerAdapter; import android.view.ViewGroup; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredMoreFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredMoreFragment.java index e1a11cbc..d96f116d 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredMoreFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredMoreFragment.java @@ -6,7 +6,7 @@ import com.gank.gankly.R; import com.gank.gankly.ui.baisi.BaiSiActivity; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.utils.theme.ThemeColor; @@ -30,17 +30,6 @@ public void onAttach(Context context) { mActivity = (MainActivity) context; } - @Override - protected void initData() { - - } - - @Override - protected void initPresenter() { - - } - - @Override protected void callBackRefreshUi() { ThemeColor color = new ThemeColor(this); color.setBackgroundResource(R.attr.themeBackground, mLinearLayout); @@ -52,24 +41,14 @@ protected int getLayoutId() { return R.layout.fragment_discovered_more; } - @Override - protected void initValues() { - - } - - @Override - protected void initViews() { - - } - - @Override - protected void bindListener() { - - } - @OnClick(R.id.discovered_rl_budejie) void onClickBuDeJie() { mActivity.startActivity(new Intent(mActivity, BaiSiActivity.class)); mActivity.overridePendingTransition(0, 0); } + + @Override + protected void initLazy() { + + } } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogContract.java index f574cec3..7c5d9da4 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogContract.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.discovered.teamBlog; import com.gank.gankly.bean.JianDanBean; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; +import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; import java.util.List; @@ -12,13 +12,13 @@ */ public interface TeamBlogContract { - interface View extends IFetchView { + interface View extends SupportView { void refillData(List list); void appendData(List list); } - interface Presenter extends IFetchPresenter { + interface Presenter extends ILoadMorePresenter { } } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java index f2ed847a..8b94b27a 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java @@ -3,15 +3,17 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.view.View; import com.gank.gankly.R; import com.gank.gankly.bean.JianDanBean; import com.gank.gankly.config.Constants; import com.gank.gankly.listener.ItemClick; import com.gank.gankly.mvp.source.remote.TeamBlogDataSource; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.discovered.technology.TechnologyContract; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.web.JiandanWebActivity; @@ -48,13 +50,20 @@ public void onAttach(Context context) { } @Override - protected void initData() { - showRefresh(); + protected void initLazy() { + showProgress(); mPresenter.fetchNew(); } @Override - protected void initPresenter() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + initValues(); + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); mPresenter = new TeamBlogPresenter(TeamBlogDataSource.getInstance(), this); } @@ -63,11 +72,7 @@ protected int getLayoutId() { return R.layout.layout_swipe_normal; } - @Override protected void initValues() { - setSwipeRefreshLayout(mSwipeRefreshLayout); -// setMultipleStatusView(mMultipleStatusView); - mAdapter = new TeamBlogAdapter(); mAdapter.setListener(this); mSwipeRefreshLayout.setAdapter(mAdapter); @@ -88,60 +93,15 @@ public void onLoadMore() { } @Override - protected void initViews() { - - } - - @Override - protected void bindListener() { - - } - - @Override - public void showRefresh() { + public void showProgress() { mSwipeRefreshLayout.setRefreshing(true); } @Override - public void hideRefresh() { + public void hideProgress() { mSwipeRefreshLayout.setRefreshing(false); } - @Override - public void hasNoMoreDate() { - - } - - @Override - public void showContent() { - - } - - @Override - public void showEmpty() { - - } - - @Override - public void showDisNetWork() { - - } - - @Override - public void showError() { - - } - - @Override - public void showLoading() { - - } - - @Override - public void showRefreshError(String errorStr) { - - } - @Override public void refillData(List list) { mAdapter.updateItem(list); @@ -165,7 +125,6 @@ public void onClick(int position, Object object) { JiandanWebActivity.startWebActivity(mActivity, bundle); } - @Override protected void callBackRefreshUi() { RecyclerViewColor recyclerViewColor = new RecyclerViewColor(mRecyclerView); recyclerViewColor.setItemBackgroundColor(R.id.team_ll_body, R.attr.lyItemSelectBackground); diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java index 856e9602..534969af 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java @@ -39,14 +39,14 @@ private void fetchData(int page) { @Override public void onComplete() { mView.showContent(); - mView.hideRefresh(); + mView.hideProgress(); int nextPage = getFetchPage() + 1; setFetchPage(nextPage); } @Override public void onError(Throwable e) { - mView.hideRefresh(); + mView.hideProgress(); KLog.e(e); } @@ -94,16 +94,11 @@ private List parseDocument(Document document) { @Override public void fetchMore() { if (hasMore()) { - mView.showRefresh(); + mView.showProgress(); fetchData(getFetchPage()); } } - @Override - public void subscribe() { - - } - @Override public void unSubscribe() { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyContract.java index 6b505957..32aa5152 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyContract.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.discovered.technology; import com.gank.gankly.bean.JianDanBean; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; +import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; import java.util.List; @@ -12,13 +12,13 @@ */ public interface TechnologyContract { - interface View extends IFetchView { + interface View extends SupportView { void refillData(List list); void appendData(List list); } - interface Presenter extends IFetchPresenter { + interface Presenter extends ILoadMorePresenter { } } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java index 6d85101c..8ebd92f4 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java @@ -3,15 +3,17 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.view.View; import com.gank.gankly.R; import com.gank.gankly.bean.JianDanBean; import com.gank.gankly.config.Constants; import com.gank.gankly.listener.ItemClick; import com.gank.gankly.mvp.source.remote.TechnologyDataSource; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.web.normal.WebActivity; import com.gank.gankly.utils.theme.RecyclerViewColor; @@ -39,6 +41,11 @@ public class TechnologyFragment extends LazyFragment implements TechnologyContra private TechnologyContract.Presenter mPresenter; + @Override + protected int getLayoutId() { + return R.layout.layout_swipe_normal; + } + @Override public void onAttach(Context context) { super.onAttach(context); @@ -46,26 +53,24 @@ public void onAttach(Context context) { } @Override - protected void initData() { - showRefresh(); + protected void initLazy() { + showProgress(); mPresenter.fetchNew(); } @Override - protected void initPresenter() { - mPresenter = new TechnologyPresenter(TechnologyDataSource.getInstance(), this); + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + initValues(); } @Override - protected int getLayoutId() { - return R.layout.layout_swipe_normal; + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new TechnologyPresenter(TechnologyDataSource.getInstance(), this); } - @Override - protected void initValues() { - setSwipeRefreshLayout(mSwipeRefreshLayout); -// setMultipleStatusView(mMultipleStatusView); - + private void initValues() { mAdapter = new TechnologyAdapter(); mAdapter.setListener(this); mSwipeRefreshLayout.setAdapter(mAdapter); @@ -86,54 +91,15 @@ public void onLoadMore() { } @Override - protected void initViews() { - - } - - @Override - protected void bindListener() { - - } - - @Override - public void showRefresh() { + public void showProgress() { mSwipeRefreshLayout.setRefreshing(true); } @Override - public void hideRefresh() { + public void hideProgress() { mSwipeRefreshLayout.setRefreshing(false); } - @Override - public void hasNoMoreDate() { - - } - - @Override - public void showContent() { - - } - - @Override - public void showEmpty() { - - } - - @Override - public void showDisNetWork() { - - } - - @Override - public void showError() { - - } - - @Override - public void showLoading() { - - } @Override public void showRefreshError(String errorStr) { @@ -164,7 +130,6 @@ public void onClick(int position, Object object) { mActivity.overridePendingTransition(0, 0); } - @Override protected void callBackRefreshUi() { RecyclerViewColor recyclerViewColor = new RecyclerViewColor(mRecyclerView); recyclerViewColor.setItemBackgroundColor(R.id.technology_rl_body, R.attr.lyItemSelectBackground); diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyPresenter.java index ee4c0bfd..f2288465 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyPresenter.java @@ -37,14 +37,14 @@ private void fetchData(int page) { mTask.fetchData(page).subscribe(new Observer() { @Override public void onError(Throwable e) { - mView.hideRefresh(); + mView.hideProgress(); KLog.e(e); } @Override public void onComplete() { mView.showContent(); - mView.hideRefresh(); + mView.hideProgress(); int nextPage = getFetchPage() + 1; setFetchPage(nextPage); } @@ -93,16 +93,11 @@ private List parseDocument(Document document) { @Override public void fetchMore() { if (hasMore()) { - mView.showRefresh(); + mView.showProgress(); fetchData(getFetchPage()); } } - @Override - public void subscribe() { - - } - @Override public void unSubscribe() { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java index 8e36d1df..fc3c2475 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java @@ -11,9 +11,9 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.gank.gankly.R; -import com.gank.gankly.bean.ResultsBean; import com.gank.gankly.config.MeiziArrayList; import com.gank.gankly.listener.MeiziOnClick; +import com.leftcoding.http.bean.ResultsBean; import java.util.ArrayList; import java.util.Collections; @@ -48,8 +48,8 @@ public GankViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { @Override public void onBindViewHolder(GankViewHolder holder, int position) { ResultsBean bean = mResults.get(position); - holder.txtDesc.setText(bean.getDesc()); - holder.txtAuthor.setText(bean.getWho()); + holder.txtDesc.setText(bean.desc); + holder.txtAuthor.setText(bean.who); int size = MeiziArrayList.getInstance().getOneItemsList().size(); if (position > size && size > 0) { @@ -58,7 +58,7 @@ public void onBindViewHolder(GankViewHolder holder, int position) { if (position < size && mImagesList != null) { Glide.with(mContext) .asBitmap() - .load(mImagesList.get(position).getUrl()) + .load(mImagesList.get(position).url) .apply(new RequestOptions() .fitCenter() ) diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java index 332c7bd7..75ad2b3b 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.discovered.video; -import com.gank.gankly.bean.ResultsBean; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; +import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; +import com.leftcoding.http.bean.ResultsBean; import java.util.List; @@ -12,13 +12,13 @@ */ public interface VideoContract { - interface View extends IFetchView { + interface View extends SupportView { void refillData(List list); void appendData(List list); } - interface Presenter extends IFetchPresenter { + interface Presenter extends ILoadMorePresenter { } } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java index c9e48d0a..8e78548f 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.res.Resources; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; @@ -13,15 +14,15 @@ import android.widget.TextView; import com.gank.gankly.R; -import com.gank.gankly.bean.ResultsBean; import com.gank.gankly.listener.MeiziOnClick; import com.gank.gankly.mvp.source.remote.GankDataSource; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.web.WebVideoViewActivity; import com.gank.gankly.utils.StyleUtils; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; +import com.leftcoding.http.bean.ResultsBean; import java.util.List; @@ -56,22 +57,10 @@ public void onAttach(Context context) { } @Override - protected void initPresenter() { - mPresenter = new VideoPresenter(GankDataSource.getInstance(), this); - } - - @Override - protected void initValues() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); mSwipeRefreshLayout.setRefreshing(true); - } - - private void onLoading() { - mPresenter.fetchNew(); - } - - @Override - protected void initViews() { - setSwipeRefreshLayout(mSwipeRefreshLayout); + // setSwipeRefreshLayout(mSwipeRefreshLayout); mMultipleStatusView.setListener(v -> onLoading()); @@ -95,10 +84,15 @@ public void onLoadMore() { } @Override - protected void bindListener() { + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new VideoPresenter(GankDataSource.getInstance(), this); + } + + private void onLoading() { + mPresenter.fetchNew(); } - @Override protected void callBackRefreshUi() { Resources.Theme theme = mActivity.getTheme(); TypedValue typedValue = new TypedValue(); @@ -126,8 +120,8 @@ protected void callBackRefreshUi() { public void onClick(View view, int position) { Bundle bundle = new Bundle(); List list = mAdapter.getResults(); - bundle.putString(WebVideoViewActivity.TITLE, list.get(position).getDesc()); - bundle.putString(WebVideoViewActivity.URL, list.get(position).getUrl()); + bundle.putString(WebVideoViewActivity.TITLE, list.get(position).desc); + bundle.putString(WebVideoViewActivity.URL, list.get(position).url); WebVideoViewActivity.startWebActivity(mActivity, bundle); } @@ -137,7 +131,7 @@ public void onRefresh() { } @Override - protected void initData() { + protected void initLazy() { mPresenter.fetchNew(); } @@ -152,12 +146,12 @@ public void appendData(List list) { } @Override - public void showRefresh() { + public void showProgress() { mSwipeRefreshLayout.setRefreshing(true); } @Override - public void hideRefresh() { + public void hideProgress() { mSwipeRefreshLayout.setRefreshing(false); } @@ -190,9 +184,4 @@ public void showError() { public void showLoading() { mMultipleStatusView.showLoading(); } - - @Override - public void showRefreshError(String errorStr) { - Snackbar.make(mRecyclerView, errorStr, Snackbar.LENGTH_LONG).show(); - } } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java index 497e8962..41c1e9e8 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java @@ -1,10 +1,10 @@ package com.gank.gankly.ui.discovered.video; import com.gank.gankly.bean.GankResult; -import com.gank.gankly.bean.ResultsBean; import com.gank.gankly.config.MeiziArrayList; import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.GankDataSource; +import com.leftcoding.http.bean.ResultsBean; import com.socks.library.KLog; import java.util.List; @@ -76,11 +76,6 @@ public void onComplete() { }); } - @Override - public void subscribe() { - - } - @Override public void unSubscribe() { diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java index 941230d3..01b3502c 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java @@ -39,10 +39,9 @@ import com.bumptech.glide.request.target.Target; import com.gank.gankly.R; import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.bean.ResultsBean; import com.gank.gankly.config.MeiziArrayList; import com.gank.gankly.mvp.source.remote.GankDataSource; -import com.gank.gankly.ui.base.BaseActivity; +import com.gank.gankly.ui.base.activity.BaseActivity; import com.gank.gankly.utils.CrashUtils; import com.gank.gankly.utils.ListUtils; import com.gank.gankly.utils.RxSaveImage; @@ -52,6 +51,7 @@ import com.gank.gankly.widget.WheelView; import com.gank.gankly.widget.transforms.FixedSpeedScroller; import com.gank.gankly.widget.transforms.ZoomOutSlideTransformer; +import com.leftcoding.http.bean.ResultsBean; import com.socks.library.KLog; import java.io.File; @@ -189,7 +189,7 @@ private void getGiftList() { if (EXTRA_GANK.equals(mViewsModel)) { List giftBeen = MeiziArrayList.getInstance().getImagesList(); mGiftList = changeImageList(giftBeen); - int size = ListUtils.getListSize(giftBeen); + int size = ListUtils.getSize(giftBeen); if (size > 5) { int point = size - 5; if (mPosition >= point) { @@ -269,14 +269,13 @@ private List changeImageList(List resultsBeen) { String url; for (int i = 0; i < resultsBeen.size(); i++) { resultsBean = resultsBeen.get(i); - url = resultsBean.getUrl(); + url = resultsBean.url; list.add(new GiftBean(url)); } } return list; } - @Override public void appendData(List list) { mGiftList.addAll(changeImageList(list)); mPagerAdapter.notifyDataSetChanged(); @@ -288,12 +287,12 @@ public void sysNumText() { } @Override - public void showRefresh() { + public void showProgress() { } @Override - public void hideRefresh() { + public void hideProgress() { } @@ -506,6 +505,11 @@ private boolean isEmpty() { return ListUtils.isListEmpty(mGiftList); } + @Override + public void showShortToast(String string) { + + } + private class PagerAdapter extends FragmentStatePagerAdapter { public PagerAdapter() { @@ -641,7 +645,7 @@ private String getImageUrl() { int position = mViewPager.getCurrentItem(); String mUrl; if (EXTRA_GANK.equals(mViewsModel)) { - mUrl = MeiziArrayList.getInstance().getResultBean(position).getUrl(); + mUrl = MeiziArrayList.getInstance().getResultBean(position).url; } else { mUrl = mGiftList.get(position).getImgUrl(); } diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java index 0ddbce4b..4c1626f3 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.gallery; -import com.gank.gankly.bean.ResultsBean; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; +import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; +import com.leftcoding.http.bean.ResultsBean; import java.util.List; @@ -13,13 +13,13 @@ public interface GalleryContract { - interface View extends IFetchView { + interface View extends SupportView { void appendData(List list); void sysNumText(); } - interface Presenter extends IFetchPresenter { + interface Presenter extends ILoadMorePresenter { } } diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java index 338a0a70..dd93d326 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java @@ -6,7 +6,7 @@ import android.view.View; import com.gank.gankly.R; -import com.gank.gankly.ui.base.BaseFragment; +import com.gank.gankly.ui.base.fragment.SupportFragment; import com.gank.gankly.widget.ProgressImageView; import butterknife.BindView; @@ -16,7 +16,7 @@ * Create by LingYan on 2016-12-19 * Email:137387869@qq.com */ -public class GalleryFragment extends BaseFragment implements ProgressImageView.ImageViewOnClick { +public class GalleryFragment extends SupportFragment implements ProgressImageView.ImageViewOnClick { public static final String IMAGE_URL = "Image_Url"; @BindView(R.id.progress_img) @@ -41,26 +41,24 @@ public void onCreate(@Nullable Bundle savedInstanceState) { setHasOptionsMenu(true); } - private void parseArguments() { - Bundle bundle = getArguments(); - if (bundle != null) { - mUrl = bundle.getString(IMAGE_URL); - } - } - @Override - protected void initValues() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); mProgressImageView.load(mUrl, GalleryFragment.this); + mProgressImageView.setImageViewOnClick(this); } @Override - protected void initViews() { + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); } - @Override - protected void bindListener() { - mProgressImageView.setImageViewOnClick(this); + private void parseArguments() { + Bundle bundle = getArguments(); + if (bundle != null) { + mUrl = bundle.getString(IMAGE_URL); + } } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java index c1932475..6f638718 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java @@ -1,12 +1,12 @@ package com.gank.gankly.ui.gallery; import com.gank.gankly.bean.GankResult; -import com.gank.gankly.bean.ResultsBean; import com.gank.gankly.config.MeiziArrayList; import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.GankDataSource; import com.gank.gankly.utils.CrashUtils; import com.gank.gankly.utils.ListUtils; +import com.leftcoding.http.bean.ResultsBean; import com.socks.library.KLog; import java.util.List; @@ -48,7 +48,7 @@ public void onSubscribe(Disposable d) { @Override public void onNext(GankResult gankResult) { List list = filterData(gankResult.getResults(), mModelView); - if (ListUtils.getListSize(list) > 0) { + if (ListUtils.getSize(list) > 0) { mModelView.appendData(list); mModelView.sysNumText(); MeiziArrayList.getInstance().addImages(gankResult.getResults(), nextPage); @@ -70,11 +70,6 @@ public void onComplete() { } } - @Override - public void subscribe() { - - } - @Override public void unSubscribe() { diff --git a/app/src/main/java/com/gank/gankly/ui/girls/GirlsAdapter.java b/app/src/main/java/com/gank/gankly/ui/girls/GirlsAdapter.java index 9bb52995..8405823e 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/GirlsAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/GirlsAdapter.java @@ -5,7 +5,7 @@ import android.support.v4.app.FragmentStatePagerAdapter; import android.view.ViewGroup; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java index bfed6feb..d2ab849d 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java @@ -2,17 +2,20 @@ import android.content.Context; import android.content.res.Resources; +import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.util.TypedValue; +import android.view.View; import com.gank.gankly.App; import com.gank.gankly.R; import com.gank.gankly.config.Constants; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; -import com.gank.gankly.ui.base.BaseFragment; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; +import com.gank.gankly.ui.base.fragment.SupportFragment; import com.gank.gankly.ui.girls.cure.CureFragment; import com.gank.gankly.ui.girls.pure.PureFragment; import com.gank.gankly.ui.main.MainActivity; @@ -28,7 +31,7 @@ * Create by LingYan on 2016-07-01 * Email:137387869@qq.com */ -public class GirlsFragment extends BaseFragment implements ViewPager.OnPageChangeListener { +public class GirlsFragment extends SupportFragment implements ViewPager.OnPageChangeListener { @BindView(R.id.girl_tabLayout) TabLayout mTabLayout; @BindView(R.id.girl_view_pager) @@ -46,20 +49,8 @@ protected int getLayoutId() { } @Override - protected void initViews() { - - } - - @Override - protected void bindListener() { - mDisposable = RxBus_.getInstance().toObservable(ThemeEvent.class) - .subscribe(themeEvent -> { - refreshUi(); - }); - } - - @Override - protected void initValues() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); List mList = new ArrayList<>(); mList.add(new PureFragment()); // mList.add(new DailyMeiziFragment()); @@ -75,6 +66,16 @@ protected void initValues() { mViewPager.addOnPageChangeListener(this); initTabLayout(); + + mDisposable = RxBus_.getInstance().toObservable(ThemeEvent.class) + .subscribe(themeEvent -> { + refreshUi(); + }); + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); } private void initTabLayout() { diff --git a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureContract.java b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureContract.java index e5df68a7..1f42215c 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureContract.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureContract.java @@ -2,8 +2,8 @@ import com.gank.gankly.bean.DailyMeiziBean; import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; +import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; import java.util.ArrayList; import java.util.List; @@ -14,7 +14,7 @@ */ public interface CureContract { - interface View extends IFetchView { + interface View extends SupportView { void refillData(List list); void appendItem(List list); @@ -26,7 +26,7 @@ interface View extends IFetchView { void openBrowseActivity(ArrayList list); } - interface Presenter extends IFetchPresenter { + interface Presenter extends ILoadMorePresenter { void girlsImages(String url); } } diff --git a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java index ff824a7c..4b4db14d 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java @@ -10,6 +10,7 @@ import android.support.v7.widget.LinearLayoutManager; import android.text.TextUtils; import android.util.TypedValue; +import android.view.View; import android.view.ViewGroup; import android.widget.TextView; @@ -21,7 +22,7 @@ import com.gank.gankly.mvp.source.remote.MeiziDataSource; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.gallery.GalleryActivity; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.utils.StyleUtils; @@ -58,26 +59,12 @@ protected int getLayoutId() { } @Override - protected void initPresenter() { - mPresenter = new CurePresenter(MeiziDataSource.getInstance(), this); - } - - @Override - protected void initValues() { - mDisposable = RxBus_.getInstance().toObservable(ThemeEvent.class) - .subscribe(themeEvent -> changeUi()); - } - - @Override - protected void initViews() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); mCureAdapter = new CureAdapter(); mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)); mSwipeRefreshLayout.setAdapter(mCureAdapter); - setSwipeRefreshLayout(mSwipeRefreshLayout); - } - @Override - protected void bindListener() { mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { @Override public void onRefresh() { @@ -91,10 +78,19 @@ public void onLoadMore() { }); mCureAdapter.setOnItemClickListener(this); + + mDisposable = RxBus_.getInstance().toObservable(ThemeEvent.class) + .subscribe(themeEvent -> changeUi()); } @Override - protected void initData() { + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new CurePresenter(MeiziDataSource.getInstance(), this); + } + + @Override + protected void initLazy() { mMultipleStatusView.showLoading(); mPresenter.fetchNew(); } @@ -148,7 +144,7 @@ public void openBrowseActivity(@NonNull ArrayList list) { } @Override - public void hideRefresh() { + public void hideProgress() { mSwipeRefreshLayout.setRefreshing(false); } @@ -158,7 +154,7 @@ public void hasNoMoreDate() { } @Override - public void showRefresh() { + public void showProgress() { mSwipeRefreshLayout.setRefreshing(true); } @@ -237,11 +233,6 @@ public void disProgressDialog() { } } - @Override - protected void callBackRefreshUi() { - - } - @Override public void onDestroyView() { super.onDestroyView(); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/cure/CurePresenter.java b/app/src/main/java/com/gank/gankly/ui/girls/cure/CurePresenter.java index 86ce2c59..e3f5b472 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/cure/CurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/cure/CurePresenter.java @@ -47,7 +47,7 @@ public void fetchNew() { public void fetchMore() { String url = getMeiziUrl(); if (hasMore()) { - mModelView.showRefresh(); + mModelView.showProgress(); fetchData(url); } //empty @@ -60,7 +60,7 @@ private void fetchData(String url) { public void onComplete() { setFetchPage(getFetchPage() + 1); mModelView.showContent(); - mModelView.hideRefresh(); + mModelView.hideProgress(); } @Override @@ -81,11 +81,6 @@ public void onNext(Document document) { }); } - @Override - public void subscribe() { - //empty - } - @Override public void unSubscribe() { //empty @@ -195,7 +190,7 @@ private void parseMeiZiTu(Document document) { if (document != null) { List list = getColumnList(document); list = filterData(list, mModelView); - if (ListUtils.getListSize(list) > 0) { + if (ListUtils.getSize(list) > 0) { if(getFetchPage() >1){ mModelView.appendItem(list); }else { @@ -209,7 +204,7 @@ private void parseDocument(Document document) { if (document != null) { List list = getDays(document); list = filterData(list, mModelView); - if (ListUtils.getListSize(list) > 0) { + if (ListUtils.getSize(list) > 0) { mModelView.refillData(list); } } diff --git a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziContract.java b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziContract.java index 92a9c668..642302f2 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziContract.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziContract.java @@ -2,8 +2,8 @@ import com.gank.gankly.bean.DailyMeiziBean; import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; +import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; import java.util.ArrayList; import java.util.List; @@ -14,7 +14,7 @@ */ public interface DailyMeiziContract { - interface View extends IFetchView { + interface View extends SupportView { void refillData(List list); void appendItem(List list); @@ -26,7 +26,7 @@ interface View extends IFetchView { void openBrowseActivity(ArrayList list); } - interface Presenter extends IFetchPresenter { + interface Presenter extends ILoadMorePresenter { void girlsImages(String url); } } diff --git a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java index 30694f0f..2b6cd146 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java @@ -10,6 +10,7 @@ import android.support.v7.widget.LinearLayoutManager; import android.text.TextUtils; import android.util.TypedValue; +import android.view.View; import android.view.ViewGroup; import android.widget.TextView; @@ -21,7 +22,7 @@ import com.gank.gankly.bean.GiftBean; import com.gank.gankly.listener.ItemClick; import com.gank.gankly.mvp.source.remote.MeiziDataSource; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.gallery.GalleryActivity; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.utils.StyleUtils; @@ -58,26 +59,12 @@ protected int getLayoutId() { } @Override - protected void initPresenter() { - mPresenter = new DailyMeiziPresenter(MeiziDataSource.getInstance(), this); - } - - @Override - protected void initValues() { - mDisposable = RxBus_.getInstance().toObservable(ThemeEvent.class) - .subscribe(themeEvent -> changeUi()); - } - - @Override - protected void initViews() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); mDailyMeiziAdapter = new DailyMeiziAdapter(); mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)); mSwipeRefreshLayout.setAdapter(mDailyMeiziAdapter); - setSwipeRefreshLayout(mSwipeRefreshLayout); - } - @Override - protected void bindListener() { mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { @Override public void onRefresh() { @@ -86,15 +73,23 @@ public void onRefresh() { @Override public void onLoadMore() { -// mPresenter.fetchMore(); } }); mDailyMeiziAdapter.setOnItemClickListener(this); + + mDisposable = RxBus_.getInstance().toObservable(ThemeEvent.class) + .subscribe(themeEvent -> changeUi()); } @Override - protected void initData() { + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new DailyMeiziPresenter(MeiziDataSource.getInstance(), this); + } + + @Override + protected void initLazy() { mMultipleStatusView.showLoading(); mPresenter.fetchNew(); } @@ -148,7 +143,7 @@ public void openBrowseActivity(@NonNull ArrayList list) { } @Override - public void hideRefresh() { + public void hideProgress() { mSwipeRefreshLayout.setRefreshing(false); } @@ -158,7 +153,7 @@ public void hasNoMoreDate() { } @Override - public void showRefresh() { + public void showProgress() { } @@ -237,11 +232,6 @@ public void disProgressDialog() { } } - @Override - protected void callBackRefreshUi() { - - } - @Override public void onDestroyView() { super.onDestroyView(); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziPresenter.java b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziPresenter.java index 3c6ca381..d45d9658 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziPresenter.java @@ -51,7 +51,7 @@ private void fetchData(String url) { public void onComplete() { setFetchPage(getFetchPage() + 1); mModelView.showContent(); - mModelView.hideRefresh(); + mModelView.hideProgress(); } @Override @@ -72,11 +72,6 @@ public void onNext(Document document) { }); } - @Override - public void subscribe() { - //empty - } - @Override public void unSubscribe() { //empty @@ -176,7 +171,7 @@ private void parseDocument(Document document) { if (document != null) { List list = getDays(document); list = filterData(list, mModelView); - if (ListUtils.getListSize(list) > 0) { + if (ListUtils.getSize(list) > 0) { mModelView.refillData(list); } } diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureContract.java b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureContract.java index 5d055e2c..60add02a 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureContract.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureContract.java @@ -1,8 +1,11 @@ package com.gank.gankly.ui.girls.pure; +import android.content.Context; +import android.support.annotation.NonNull; + import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; +import com.gank.gankly.mvp.base.LoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; import java.util.ArrayList; import java.util.List; @@ -13,7 +16,7 @@ */ public interface PureContract { - interface View extends IFetchView { + interface View extends SupportView { void refillData(List list); void appendData(List list); @@ -23,7 +26,16 @@ interface View extends IFetchView { void disLoadingDialog(); } - interface Presenter extends IFetchPresenter { - void fetchImages(String url); + public abstract class Presenter extends LoadMorePresenter { + + public Presenter(@NonNull Context context, @NonNull View view) { + super(context, view); + } + + abstract void refreshImages(String url); + + abstract void refreshPure(); + + abstract void appendPure(); } } diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java index fbd6f10c..7caef056 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java @@ -16,12 +16,11 @@ import com.gank.gankly.App; import com.gank.gankly.R; -import com.gank.gankly.rxjava.RxBus_; -import com.gank.gankly.rxjava.theme.ThemeEvent; import com.gank.gankly.bean.GiftBean; import com.gank.gankly.listener.ItemClick; -import com.gank.gankly.mvp.source.remote.MeiziDataSource; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.rxjava.RxBus_; +import com.gank.gankly.rxjava.theme.ThemeEvent; +import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.gallery.GalleryActivity; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.utils.DisplayUtils; @@ -68,36 +67,30 @@ public static PureFragment getInstance() { } @Override - protected void initPresenter() { - mPresenter = new PurePresenter(MeiziDataSource.getInstance(), this); - } + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + initRecycler(); + + mAdapter.setOnItemClickListener(this); - @Override - protected void initValues() { -// initRefresh(); mDisposable = RxBus_.getInstance().toObservable(ThemeEvent.class) .subscribe(themeEvent -> changeUi()); } @Override - protected void initViews() { - initRecycler(); - setSwipeRefreshLayout(mSwipeRefreshLayout); - } - - @Override - protected void bindListener() { - mAdapter.setOnItemClickListener(this); + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new PurePresenter(getContext(), this); } @Override - protected void initData() { + protected void initLazy() { initRefresh(); } private void initRefresh() { mMultipleStatusView.showLoading(); - mPresenter.fetchNew(); + mPresenter.refreshPure(); } private void changeUi() { @@ -139,12 +132,12 @@ private void initRecycler() { @Override public void onRefresh() { - mPresenter.fetchNew(); + mPresenter.refreshPure(); } @Override public void onLoadMore() { - mPresenter.fetchMore(); + mPresenter.appendPure(); } }); } @@ -178,7 +171,7 @@ public void onClick(int position, Object object) { .throttleFirst(100, TimeUnit.MILLISECONDS) .subscribeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(giftBean1 -> mPresenter.fetchImages(giftBean1.getUrl())); + .subscribe(giftBean1 -> mPresenter.refreshImages(giftBean1.getUrl())); } public List getList() { @@ -199,17 +192,12 @@ public void onCreate(@Nullable Bundle savedInstanceState) { } @Override - protected void callBackRefreshUi() { - - } - - @Override - public void showRefresh() { + public void showProgress() { mSwipeRefreshLayout.setRefreshing(true); } @Override - public void hideRefresh() { + public void hideProgress() { mSwipeRefreshLayout.setRefreshing(false); } diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java b/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java index 9037eadf..e9a4bbb5 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java @@ -1,10 +1,9 @@ package com.gank.gankly.ui.girls.pure; +import android.content.Context; import android.text.TextUtils; import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.mvp.FetchPresenter; -import com.gank.gankly.mvp.source.remote.MeiziDataSource; import com.gank.gankly.utils.CrashUtils; import com.gank.gankly.utils.StringUtils; import com.socks.library.KLog; @@ -16,81 +15,69 @@ import java.util.IllegalFormatException; import java.util.List; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; - /** * Create by LingYan on 2016-12-27 * Email:137387869@qq.com */ -public class PurePresenter extends FetchPresenter implements PureContract.Presenter { +public class PurePresenter extends PureContract.Presenter { private static String BASE_URL = "http://www.mzitu.com/mm"; private String nextUrl = BASE_URL + "/page/"; - private MeiziDataSource mTask; - private PureContract.View mModelView; - private int mMaxPageNumber; - public PurePresenter(MeiziDataSource task, PureContract.View view) { - this.mTask = task; - this.mModelView = view; + public PurePresenter(Context context, PureContract.View view) { + super(context, view); } @Override - public void fetchNew() { - setFetchLimit(24); + public void refreshPure() { + setLimit(24); fetchData(getInitPage()); } @Override - public void fetchMore() { - if (hasMore()) { - mModelView.showRefresh(); - fetchData(getFetchPage()); - } + public void appendPure() { + fetchData(getInitPage()); } private void fetchData(final int page) { - KLog.d("fetchData"); String url = getUrl(page); - mTask.fetchPure(url) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onNext(Document document) { -// KLog.d(document); - mMaxPageNumber = getMaxPageNum(document); - List list = getPageLists(document); - list = filterData(list, mModelView); - if (list != null) { - if (page == 1) { - mModelView.refillData(list); - } else { - mModelView.appendData(list); - } - } - } - - @Override - public void onError(Throwable e) { - KLog.e(e); - CrashUtils.crashReport(e); - parseError(mModelView); - } - - @Override - public void onComplete() { - mModelView.showContent(); - mModelView.hideRefresh(); - setFetchPage(page + 1); - } - }); +// mTask.fetchPure(url) +// .subscribe(new Observer() { +// @Override +// public void onSubscribe(Disposable d) { +// +// } +// +// @Override +// public void onNext(Document document) { +// mMaxPageNumber = getMaxPageNum(document); +// List list = getPageLists(document); +// list = filterData(list, mModelView); +// if (list != null) { +// if (page == 1) { +// mModelView.refillData(list); +// } else { +// mModelView.appendData(list); +// } +// } +// } +// +// @Override +// public void onError(Throwable e) { +// KLog.e(e); +// CrashUtils.crashReport(e); +// parseError(mModelView); +// } +// +// @Override +// public void onComplete() { +// mModelView.showContent(); +// mModelView.hideRefresh(); +// setFetchPage(page + 1); +// } +// }); } private int getImageMaxPage(Document doc) { @@ -164,7 +151,7 @@ private List getPageLists(Document doc) { if (size > 0) { for (int i = 0; i < size; i++) { String imgUrl = img.get(i).attr("data-original"); - KLog.d("imgurl:"+imgUrl); + KLog.d("imgurl:" + imgUrl); String title = img.get(i).attr("alt"); String url = hrefs.get(i).attr("href"); String time = times.get(i).text(); @@ -209,46 +196,40 @@ private int getMaxPageNum(Document doc) { return p; } - - @Override - public void subscribe() { - - } - @Override public void unSubscribe() { } @Override - public void fetchImages(String url) { - mTask.fetchPure(url) - .map(document -> { - mMaxPageNumber = getImageMaxPage(document); - String firstUrl = getImageFirstUrl(document); - return getImages(firstUrl); - }) - .subscribe(new Observer>() { - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onNext(ArrayList list) { - mModelView.openGalleryActivity(list); - } - - @Override - public void onError(Throwable e) { - KLog.e(e); - CrashUtils.crashReport(e); - } - - @Override - public void onComplete() { - mModelView.disLoadingDialog(); - } - }); + public void refreshImages(String url) { +// mTask.fetchPure(url) +// .map(document -> { +// mMaxPageNumber = getImageMaxPage(document); +// String firstUrl = getImageFirstUrl(document); +// return getImages(firstUrl); +// }) +// .subscribe(new Observer>() { +// @Override +// public void onSubscribe(Disposable d) { +// +// } +// +// @Override +// public void onNext(ArrayList list) { +// mModelView.openGalleryActivity(list); +// } +// +// @Override +// public void onError(Throwable e) { +// KLog.e(e); +// CrashUtils.crashReport(e); +// } +// +// @Override +// public void onComplete() { +// mModelView.disLoadingDialog(); +// } +// }); } } diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryContract.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryContract.java index 04b5c2f4..3e0f82dc 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryContract.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryContract.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.history; import com.gank.gankly.data.entity.ReadHistory; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; +import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; import java.util.List; @@ -12,13 +12,13 @@ */ public interface BrowseHistoryContract { - interface View extends IFetchView { + interface View extends SupportView { void refillData(List history); void appendData(List history); } - interface Presenter extends IFetchPresenter { + interface Presenter extends ILoadMorePresenter { void deleteHistory(long id); } } diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java index 7f60c7a3..5dbe73b9 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java @@ -3,17 +3,19 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; import android.support.v7.app.ActionBar; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.Toolbar; +import android.view.View; import com.gank.gankly.R; import com.gank.gankly.data.entity.ReadHistory; import com.gank.gankly.listener.ItemClick; -import com.gank.gankly.mvp.base.FetchFragment; import com.gank.gankly.mvp.source.LocalDataSource; +import com.gank.gankly.ui.base.fragment.SupportFragment; import com.gank.gankly.ui.more.MoreActivity; import com.gank.gankly.ui.web.normal.WebActivity; import com.gank.gankly.widget.LyRecyclerView; @@ -30,7 +32,7 @@ * Email:137387869@qq.com */ -public class BrowseHistoryFragment extends FetchFragment implements BrowseHistoryContract.View, ItemClick { +public class BrowseHistoryFragment extends SupportFragment implements BrowseHistoryContract.View, ItemClick { private BrowseHistoryContract.Presenter mPresenter; private BrowseHistoryAdapter mAdapter; @@ -52,24 +54,8 @@ public void onAttach(Context context) { } @Override - protected int getLayoutId() { - return R.layout.fragment_browse; - } - - @Override - protected void initPresenter() { - mPresenter = new BrowseHistoryPresenter(LocalDataSource.getInstance(), this); - } - - @Override - protected void initValues() { - mPresenter.fetchNew(); - mAdapter = new BrowseHistoryAdapter(); - mSwipeRefreshLayout.setAdapter(mAdapter); - } - - @Override - protected void initViews() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); mToolbar.setTitle(R.string.mine_browse); mActivity.setSupportActionBar(mToolbar); ActionBar barLayout = mActivity.getSupportActionBar(); @@ -78,7 +64,6 @@ protected void initViews() { } mToolbar.setNavigationOnClickListener(v -> mActivity.onBackPressed()); - setSwipeRefreshLayout(mSwipeRefreshLayout); mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity)); mSwipeRefreshLayout.getRecyclerView().setItemAnimator(new NoAlphaItemAnimator()); mSwipeRefreshLayout.setILyRecycler(new LyRecyclerView.ILyRecycler() { @@ -98,10 +83,10 @@ public void onClick(int pos) { openWebActivity(readHistory); } }); - } - @Override - protected void bindListener() { + mAdapter = new BrowseHistoryAdapter(); + mSwipeRefreshLayout.setAdapter(mAdapter); + mAdapter.setOnItemClick(this); mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { @Override @@ -116,6 +101,18 @@ public void onLoadMore() { }); } + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new BrowseHistoryPresenter(LocalDataSource.getInstance(), this); + mPresenter.fetchNew(); + } + + @Override + protected int getLayoutId() { + return R.layout.fragment_browse; + } + @Override public void refillData(List history) { mAdapter.updateList(history); @@ -127,12 +124,12 @@ public void appendData(List history) { } @Override - public void showRefresh() { + public void showProgress() { mSwipeRefreshLayout.setRefreshing(true); } @Override - public void hideRefresh() { + public void hideProgress() { mSwipeRefreshLayout.setRefreshing(false); } diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryPresenter.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryPresenter.java index 2cd8feae..29a7ffbb 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryPresenter.java @@ -35,7 +35,7 @@ public void fetchNew() { @Override public void fetchMore() { if (hasMore()) { - mModelView.showRefresh(); + mModelView.showProgress(); fetch(); } } @@ -51,7 +51,7 @@ public void onError(Throwable e) { @Override public void onComplete() { - mModelView.hideRefresh(); + mModelView.hideProgress(); int nextOffsetPage = getOffSetPage() + 1; setOffSetPage(nextOffsetPage); } @@ -64,7 +64,7 @@ public void onSubscribe(Disposable d) { @Override public void onNext(List readHistories) { List list = filterDataBase(readHistories, mModelView); - int size = ListUtils.getListSize(list); + int size = ListUtils.getSize(list); if (size > 0) { if (getOffSetPage() == 0) { mModelView.refillData(list); @@ -76,11 +76,6 @@ public void onNext(List readHistories) { }); } - @Override - public void subscribe() { - - } - @Override public void unSubscribe() { diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java new file mode 100644 index 00000000..6023082c --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java @@ -0,0 +1,205 @@ +package com.gank.gankly.ui.ios; + +import android.content.Context; +import android.support.annotation.IntDef; +import android.support.annotation.LayoutRes; +import android.support.annotation.NonNull; +import android.support.v4.app.Fragment; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.gank.gankly.R; +import com.gank.gankly.listener.RecyclerOnClick; +import com.gank.gankly.ui.base.BaseAdapter; +import com.gank.gankly.ui.base.ButterHolder; +import com.gank.gankly.utils.DateUtils; +import com.leftcoding.http.bean.ResultsBean; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import butterknife.BindView; + +import static com.gank.gankly.ui.ios.IosAdapter.DefaultItem.VIEW_DEFAULT; + +/** + * Create by LingYan on 2016-04-25 + */ +class IosAdapter extends BaseAdapter { + private List mResults; + private List mItemList; + + private Fragment mFragment; + private Context mContext; + + private RecyclerOnClick mMeiZiOnClick; + + IosAdapter(Context context) { + mContext = context; + setHasStableIds(true); + mResults = new ArrayList<>(); + mItemList = new ArrayList<>(); + + registerAdapterDataObserver(mObserver); + } + + IosAdapter(@NonNull Fragment fragment) { + this(fragment.getContext()); + mFragment = fragment; + } + + private RecyclerView.AdapterDataObserver mObserver = new RecyclerView.AdapterDataObserver() { + @Override + public void onChanged() { + super.onChanged(); + mItemList.clear(); + if (mResults != null && !mResults.isEmpty()) { + for (ResultsBean resultsBean : mResults) { + mItemList.add(new TextItem(resultsBean)); + } + } + } + }; + + @Override + public DefaultHolder onCreateViewHolder(ViewGroup parent, int viewType) { + DefaultHolder defaultHolder; + switch (viewType) { + case VIEW_DEFAULT: + defaultHolder = new GankViewHolder(parent.getContext(), parent); + break; + default: + defaultHolder = null; + break; + } + return defaultHolder; + } + + @Override + public void onBindViewHolder(DefaultHolder holder, int position) { + holder.bindItem(mFragment, mItemList.get(position)); + } + + @Override + public int getItemViewType(int position) { + return mItemList.get(position).getType(); + } + + @Override + public void onViewRecycled(DefaultHolder holder) { + super.onViewRecycled(holder); + Glide.get(mContext).clearMemory(); + } + + @Override + public int getItemCount() { + return mResults == null ? 0 : mResults.size(); + } + + public void fillItems(List results) { + appendItems(results); + } + + public void appendItems(List results) { + mResults.addAll(results); + this.notifyDataSetChanged(); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public void destroy() { + unregisterAdapterDataObserver(mObserver); + } + + public void setOnItemClickListener(RecyclerOnClick onItemClickListener) { + mMeiZiOnClick = onItemClickListener; + } + + class GankViewHolder extends DefaultHolder { + @BindView(R.id.author_name) + TextView authorName; + + @BindView(R.id.time) + TextView time; + + @BindView(R.id.title) + TextView title; + + GankViewHolder(Context context, ViewGroup parent) { + super(context, parent, R.layout.adapter_ios); + } + + @Override + public void bindItem(Fragment fragment, TextItem item) { + final Context context = fragment.getContext(); + final ResultsBean resultsBean = item.getResultsBean(); + Date date = DateUtils.formatDateFromStr(resultsBean.publishedAt); + String formatDate = DateUtils.getFormatDate(date, DateUtils.MM_DD); + time.setText(formatDate); + + title.setText(resultsBean.desc); + authorName.setText(resultsBean.getWho()); + + itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (mMeiZiOnClick != null) { + mMeiZiOnClick.onClick(v, resultsBean); + } + } + }); + } + } + + abstract class DefaultHolder extends ButterHolder { + + DefaultHolder(Context context, ViewGroup parent, @LayoutRes int layoutID) { + super(context, parent, layoutID); + } + + public abstract void bindItem(Fragment fragment, II item); + } + + class TextItem implements DefaultItem { + private ResultsBean mResultsBean; + + TextItem(ResultsBean resultsBean) { + mResultsBean = resultsBean; + } + + ResultsBean getResultsBean() { + return mResultsBean; + } + + @Override + public int getType() { + return VIEW_DEFAULT; + } + } + + interface DefaultItem { + int VIEW_DEFAULT = 1; + + @IntDef({ + VIEW_DEFAULT + }) + + @Retention(RetentionPolicy.SOURCE) + @interface ViewType { + + } + + @ViewType + int getType(); + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java b/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java new file mode 100644 index 00000000..fdafe7ed --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java @@ -0,0 +1,38 @@ +package com.gank.gankly.ui.ios; + +import android.content.Context; +import android.support.annotation.NonNull; + +import com.gank.gankly.mvp.base.LoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; +import com.leftcoding.http.bean.ResultsBean; + +import java.util.List; + +/** + * Create by LingYan on 2016-12-20 + * Email:137387869@qq.com + */ + +public interface IosContract { + interface View extends SupportView { + void refreshIosSuccess(List list); + + void refreshIosFailure(String msg); + + void appendIosSuccess(List list); + + void appendIosFailure(String msg); + } + + abstract class Presenter extends LoadMorePresenter { + + public Presenter(@NonNull Context context, View view) { + super(context, view); + } + + abstract void refreshIos(); + + abstract void appendIos(); + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java new file mode 100644 index 00000000..fdfe37ce --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java @@ -0,0 +1,215 @@ +package com.gank.gankly.ui.ios; + +import android.content.Context; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.design.widget.Snackbar; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; + +import com.gank.gankly.R; +import com.gank.gankly.config.Constants; +import com.gank.gankly.listener.RecyclerOnClick; +import com.gank.gankly.ui.base.fragment.LazyFragment; +import com.gank.gankly.ui.main.MainActivity; +import com.gank.gankly.ui.web.normal.WebActivity; +import com.gank.gankly.utils.theme.RecyclerViewColor; +import com.gank.gankly.utils.theme.ThemeColor; +import com.gank.gankly.widget.LySwipeRefreshLayout; +import com.gank.gankly.widget.MultipleStatusView; +import com.leftcoding.http.bean.ResultsBean; + +import java.util.List; + +import butterknife.BindView; + +/** + * ios + * Create by LingYan on 2016-4-26 + */ +public class IosFragment extends LazyFragment implements IosContract.View { + @BindView(R.id.multiple_status_view) + MultipleStatusView mMultipleStatusView; + + @BindView(R.id.swipe_refresh) + LySwipeRefreshLayout mSwipeRefreshLayout; + + private MainActivity mActivity; + private IosAdapter mAdapter; + private IosContract.Presenter mPresenter; + private RecyclerView mRecyclerView; + + @Override + protected int getLayoutId() { + return R.layout.layout_swipe_normal; + } + + @Override + public void onAttach(Context context) { + super.onAttach(context); + this.mActivity = (MainActivity) context; + } + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + mAdapter = new IosAdapter(this); + + mSwipeRefreshLayout.setAdapter(mAdapter); + mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity)); + mSwipeRefreshLayout.setOnScrollListener(mSwipeRefRecyclerViewListener); + + mRecyclerView = mSwipeRefreshLayout.getRecyclerView(); + mRecyclerView.setHasFixedSize(true); + + mAdapter.setOnItemClickListener(mRecyclerOnClick); + mMultipleStatusView.setListener(v -> initRefreshIos()); + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new IosPresenter(getContext(), this); + } + + @Override + protected void initLazy() { + showLoading(); + initRefreshIos(); + } + + private LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener mSwipeRefRecyclerViewListener = new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + @Override + public void onRefresh() { + initRefreshIos(); + } + + @Override + public void onLoadMore() { + loadMoreIos(); + } + }; + + private RecyclerOnClick mRecyclerOnClick = new RecyclerOnClick() { + + @Override + public void onClick(View view, ResultsBean bean) { + Bundle bundle = new Bundle(); + bundle.putString(WebActivity.TITLE, bean.desc); + bundle.putString(WebActivity.URL, bean.url); + bundle.putString(WebActivity.AUTHOR, bean.who); + bundle.putString(WebActivity.TYPE, Constants.IOS); + WebActivity.startWebActivity(mActivity, bundle); + } + }; + + @Override + public void showRefreshError(String errorStr) { + Snackbar.make(mSwipeRefreshLayout, errorStr, Snackbar.LENGTH_LONG) + .setAction(R.string.retry, v -> loadMoreIos()); + } + + @Override + public void showError() { + mMultipleStatusView.showError(); + } + + @Override + public void showEmpty() { + mMultipleStatusView.showEmpty(); + } + + @Override + public void showProgress() { + if (mSwipeRefreshLayout != null) { + mSwipeRefreshLayout.setRefreshing(true); + } + } + + @Override + public void hideProgress() { + if (mSwipeRefreshLayout != null) { + mSwipeRefreshLayout.setRefreshing(false); + } + } + + @Override + public void hasNoMoreDate() { + + } + + @Override + public void showContent() { + mMultipleStatusView.showContent(); + } + + @Override + public void showDisNetWork() { + mMultipleStatusView.showDisNetwork(); + } + + @Override + public void refreshIosSuccess(List list) { + if (mAdapter != null) { + mAdapter.fillItems(list); + } + } + + @Override + public void refreshIosFailure(String msg) { + + } + + @Override + public void appendIosSuccess(List list) { + if (mAdapter != null) { + mAdapter.appendItems(list); + } + } + + @Override + public void appendIosFailure(String msg) { + + } + + public static IosFragment newInstance() { + IosFragment fragment = new IosFragment(); + Bundle args = new Bundle(); + fragment.setArguments(args); + return fragment; + } + + private void initRefreshIos() { + if (mPresenter != null) { + mPresenter.refreshIos(); + } + } + + private void loadMoreIos() { + if (mPresenter != null) { + mPresenter.appendIos(); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (mPresenter != null) { + mPresenter.unSubscribe(); + } + } + + protected void callBackRefreshUi() { + ThemeColor themeColor = new ThemeColor(this); + RecyclerViewColor mRecycler = new RecyclerViewColor(mRecyclerView); + mRecycler.setItemColor(R.id.title, R.attr.baseAdapterItemTextColor); + mRecycler.setItemColor(R.id.time, R.attr.textSecondaryColor); +// mRecycler.setItemBackgroundColor(R.id.ll, R.attr.lyItemSelectBackground); + + themeColor.setBackgroundResource(R.attr.themeBackground, mRecyclerView); + themeColor.swipeRefresh(mSwipeRefreshLayout); + themeColor.recyclerViewColor(mRecycler); + themeColor.start(); + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java new file mode 100644 index 00000000..b543efc1 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java @@ -0,0 +1,140 @@ +package com.gank.gankly.ui.ios; + +import android.content.Context; +import android.support.annotation.NonNull; + +import com.leftcoding.http.api.GankManager; +import com.leftcoding.http.bean.PageResult; +import com.leftcoding.http.bean.ResultsBean; +import com.socks.library.KLog; + +import java.util.concurrent.atomic.AtomicBoolean; + +import io.reactivex.Observable; +import io.reactivex.ObservableSource; +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Action; +import io.reactivex.functions.Consumer; +import io.reactivex.functions.Function; +import retrofit2.Response; + +/** + * Create by LingYan on 2016-12-20 + */ + +public class IosPresenter extends IosContract.Presenter { + private static final String TAG = "ios_presenter"; + + private PageResult mPageResult; + private AtomicBoolean first = new AtomicBoolean(true); + + public IosPresenter(@NonNull Context context, IosContract.View view) { + super(context, view); + } + + @Override + void refreshIos() { + fetchData(getInitPage()); + } + + @Override + void appendIos() { + if (mPageResult != null) { + fetchData(mPageResult.nextPage); + } + } + + private void fetchData(final int page) { + GankManager.with(mContext) + .ios(page, getLimit()) + .doOnSubscribe(new Consumer() { + @Override + public void accept(Disposable disposable) throws Exception { + if (isActivity()) { + mView.showProgress(); + } + } + }) + .doFinally(new Action() { + @Override + public void run() throws Exception { + if (isActivity()) { + mView.hideProgress(); + } + } + }) + .flatMap(new Function>, ObservableSource>>() { + @Override + public ObservableSource> apply(@io.reactivex.annotations.NonNull Response> response) throws Exception { + if (response != null) { + if (response.isSuccessful()) { + if (response.body() != null) { + return Observable.create(e -> e.onNext(response.body())); + } + } + } + return Observable.error(new Throwable()); + } + }) + .map(new Function, PageResult>() { + @Override + public PageResult apply(@io.reactivex.annotations.NonNull PageResult result) throws Exception { + if (result != null) { + result.curPage = page; + return result; + } + return null; + } + }) + .flatMap(new Function, ObservableSource>>() { + @Override + public ObservableSource> apply(@io.reactivex.annotations.NonNull PageResult result) throws Exception { + if (result != null && result.results != null) { + return Observable.create(e -> e.onNext(result)); + } + return Observable.error(new Throwable()); + } + }) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(PageResult result) { + mPageResult = result; + mPageResult.nextPage = mPageResult.curPage + 1; + + if (isActivity()) { + if (isFirst()) { + mView.refreshIosSuccess(result.results); + } else { + mView.appendIosSuccess(result.results); + } + } + } + + @Override + public void onError(Throwable e) { + KLog.e(e); + } + + @Override + public void onComplete() { + + } + }); + } + + @Override + public void unSubscribe() { + super.unSubscribe(); + mPageResult = null; + } + + private boolean isFirst() { + return first.get(); + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/main/GankPagerAdapter.java b/app/src/main/java/com/gank/gankly/ui/main/GankPagerAdapter.java index a9bf8f40..bb47876b 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/GankPagerAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/main/GankPagerAdapter.java @@ -5,7 +5,7 @@ import android.support.v4.app.FragmentStatePagerAdapter; import android.view.ViewGroup; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/ui/main/IndexContract.java b/app/src/main/java/com/gank/gankly/ui/main/IndexContract.java new file mode 100644 index 00000000..788408fd --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/main/IndexContract.java @@ -0,0 +1,24 @@ +package com.gank.gankly.ui.main; + +import android.content.Context; +import android.support.annotation.NonNull; + +import com.gank.gankly.mvp.base.BasePresenter; +import com.gank.gankly.mvp.base.BaseView; + +/** + * Create by LingYan on 2017-10-03 + */ + +public interface IndexContract { + interface View extends BaseView { + + } + + abstract class Presenter extends BasePresenter { + + public Presenter(@NonNull Context context, @NonNull View view) { + super(context, view); + } + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/main/MainFragment.java b/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java similarity index 84% rename from app/src/main/java/com/gank/gankly/ui/main/MainFragment.java rename to app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java index 698e55e3..4545d908 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/MainFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java @@ -3,21 +3,23 @@ import android.app.ProgressDialog; import android.content.Context; import android.content.res.Resources; +import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.support.v7.app.AlertDialog; import android.util.TypedValue; +import android.view.View; import com.gank.gankly.App; import com.gank.gankly.R; import com.gank.gankly.bean.CheckVersion; import com.gank.gankly.config.Constants; import com.gank.gankly.network.DownloadProgressListener; -import com.gank.gankly.presenter.LauncherPresenter; -import com.gank.gankly.ui.base.BaseSwipeRefreshFragment; -import com.gank.gankly.ui.base.LazyFragment; -import com.gank.gankly.ui.main.android.AndroidFragment; -import com.gank.gankly.ui.main.ios.IosFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; +import com.gank.gankly.ui.base.fragment.SupportFragment; +import com.gank.gankly.ui.android.AndroidFragment; +import com.gank.gankly.ui.ios.IosFragment; import com.gank.gankly.ui.main.welfare.WelfareFragment; import com.gank.gankly.view.ILauncher; import com.socks.library.KLog; @@ -28,11 +30,9 @@ import butterknife.BindView; /** - * 首页 * Create by LingYan on 2016-04-22 - * Email:137387869@qq.com */ -public class MainFragment extends BaseSwipeRefreshFragment implements ViewPager.OnPageChangeListener, +public class IndexFragment extends SupportFragment implements ViewPager.OnPageChangeListener, DownloadProgressListener, ILauncher { @BindView(R.id.baisi_tabLayout) TabLayout mTabLayout; @@ -57,29 +57,10 @@ public void onAttach(Context context) { } @Override - public void onHiddenChanged(boolean hidden) { - super.onHiddenChanged(hidden); - if (!hidden) { - changeThemeBackground(); - } - } - - @Override - protected void initPresenter() { - mPresenter = new LauncherPresenter(mActivity, this, this); - } - - @Override - protected void initViews() { - } - - @Override - protected void bindListener() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); changeThemeBackground(); - } - @Override - protected void initValues() { List mList = new ArrayList<>(); mList.add(AndroidFragment.newInstance()); mList.add(IosFragment.newInstance()); @@ -99,6 +80,20 @@ protected void initValues() { initTabLayout(); } + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new LauncherPresenter(mActivity, this, this); + } + + @Override + public void onHiddenChanged(boolean hidden) { + super.onHiddenChanged(hidden); + if (!hidden) { + changeThemeBackground(); + } + } + private void initTabLayout() { for (int i = 0; i < mTitles.size(); i++) { mTabLayout.addTab(mTabLayout.newTab().setText(mTitles.get(i))); @@ -151,7 +146,6 @@ public void update(long bytesRead, long contentLength, boolean done) { @Override public void callUpdate(CheckVersion checkVersion) { mAppLength = checkVersion.getAppLength(); - KLog.d("mAppLength:" + mAppLength); AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); builder.setMessage(checkVersion.getChangelog()); builder.setNegativeButton("取消", (dialog, which) -> { @@ -184,34 +178,4 @@ public void noNewVersion() { @Override public void hiddenDialog() { } - - @Override - protected void callBackRefreshUi() { - - } - - @Override - public void showEmpty() { - - } - - @Override - public void showDisNetWork() { - - } - - @Override - public void showContent() { - - } - - @Override - public void showError() { - - } - - @Override - public void showLoading() { - - } } diff --git a/app/src/main/java/com/gank/gankly/presenter/LauncherPresenter.java b/app/src/main/java/com/gank/gankly/ui/main/LauncherPresenter.java similarity index 83% rename from app/src/main/java/com/gank/gankly/presenter/LauncherPresenter.java rename to app/src/main/java/com/gank/gankly/ui/main/LauncherPresenter.java index 48b74759..3671d73f 100644 --- a/app/src/main/java/com/gank/gankly/presenter/LauncherPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/main/LauncherPresenter.java @@ -1,4 +1,4 @@ -package com.gank.gankly.presenter; +package com.gank.gankly.ui.main; import android.app.Activity; import android.content.Context; @@ -8,6 +8,7 @@ import com.gank.gankly.BuildConfig; import com.gank.gankly.bean.CheckVersion; +import com.gank.gankly.mvp.base.BasePresenter; import com.gank.gankly.network.DownloadProgressListener; import com.gank.gankly.network.api.DownloadApi; import com.gank.gankly.utils.CrashUtils; @@ -30,29 +31,31 @@ public class LauncherPresenter extends BasePresenter { private String apkName = "gankly.apk"; private File mFile = new File(Environment.getExternalStorageDirectory() .getAbsolutePath() + "/GankLy/" + apkName); + private Context mContext; public LauncherPresenter(Activity mActivity, ILauncher view) { this(mActivity, view, null); } - public LauncherPresenter(Activity mActivity, ILauncher view, DownloadProgressListener listener) { - super(mActivity, view); + public LauncherPresenter(Activity activity, ILauncher view, DownloadProgressListener listener) { + super(activity.getApplicationContext(), view); + mContext = activity; mDownloadApi = new DownloadApi(listener); } public void checkVersion() { - mIView.showDialog(); + mView.showDialog(); mDownloadApi.checkVersion(new Observer() { @Override public void onError(Throwable e) { KLog.e(e); CrashUtils.crashReport(e); - mIView.hiddenDialog(); + mView.hiddenDialog(); } @Override public void onComplete() { - mIView.hiddenDialog(); + mView.hiddenDialog(); } @Override @@ -62,9 +65,9 @@ public void onSubscribe(Disposable d) { @Override public void onNext(CheckVersion checkVersion) { - int curVersion = BuildConfig.VERSION_CODE ; + int curVersion = BuildConfig.VERSION_CODE; if (checkVersion.getCode() > curVersion) { - mIView.callUpdate(checkVersion); + mView.callUpdate(checkVersion); } } }); @@ -98,7 +101,7 @@ public void onSubscribe(Disposable d) { @Override public void onNext(InputStream inputStream) { - downloadSuccess(mActivity, mFile); + downloadSuccess(mContext, mFile); } }); } diff --git a/app/src/main/java/com/gank/gankly/ui/main/MainActivity.java b/app/src/main/java/com/gank/gankly/ui/main/MainActivity.java index 18d83603..ae5fc8d3 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/MainActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/main/MainActivity.java @@ -11,7 +11,7 @@ import com.gank.gankly.R; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; -import com.gank.gankly.ui.base.BaseActivity; +import com.gank.gankly.ui.base.activity.BaseActivity; import com.gank.gankly.ui.discovered.DiscoveredFragment; import com.gank.gankly.ui.girls.GirlsFragment; import com.gank.gankly.ui.mine.MineFragment; @@ -28,9 +28,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers; /** - * 首页 * Create by LingYan on 2016-6-13 - * Email:137387869@qq.com */ public class MainActivity extends BaseActivity { @BindView(R.id.bottomBar) @@ -125,7 +123,7 @@ protected void initPresenter() { private List getFragmentList() { List fragments = new ArrayList<>(); - fragments.add(new MainFragment()); + fragments.add(new IndexFragment()); fragments.add(new DiscoveredFragment()); fragments.add(new GirlsFragment()); fragments.add(new MineFragment()); @@ -169,14 +167,6 @@ protected void onDestroy() { RxBus_.getInstance().removeAllStickyEvents();// 移除所有Sticky事件 } - @Override - protected void onStart() { - //防止底部导航栏会下移 -// getWindow(). -// getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); - super.onStart(); - } - @Override protected void onCreate(@Nullable Bundle savedInstanceState) { if (savedInstanceState != null) { diff --git a/app/src/main/java/com/gank/gankly/ui/main/android/AndroidAdapter.java b/app/src/main/java/com/gank/gankly/ui/main/android/AndroidAdapter.java deleted file mode 100644 index 9c417d3f..00000000 --- a/app/src/main/java/com/gank/gankly/ui/main/android/AndroidAdapter.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.gank.gankly.ui.main.android; - -import android.content.Context; -import android.databinding.DataBindingUtil; -import android.graphics.drawable.Drawable; -import android.support.annotation.Nullable; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.load.DataSource; -import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.bumptech.glide.load.engine.GlideException; -import com.bumptech.glide.request.RequestListener; -import com.bumptech.glide.request.RequestOptions; -import com.bumptech.glide.request.target.Target; -import com.gank.gankly.R; -import com.gank.gankly.bean.ResultsBean; -import com.gank.gankly.config.MeiziArrayList; -import com.gank.gankly.databinding.AdapterAndroidBinding; -import com.gank.gankly.listener.RecyclerOnClick; -import com.gank.gankly.utils.DateUtils; -import com.gank.gankly.utils.gilde.ImageLoaderUtil; -import com.gank.gankly.widget.ImageDefaultView; -import com.socks.library.KLog; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -/** - * Create by LingYan on 2016-04-25 - * Email:137387869@qq.com - */ -class AndroidAdapter extends RecyclerView.Adapter { - private final List mResults; - private RecyclerOnClick mMeiZiOnClick; - private Context mContext; - - private int mImageSize; - private List mImagesList; - - - AndroidAdapter(Context context) { - setHasStableIds(true); - mResults = new ArrayList<>(); - mContext = context; - } - - @Override - public GankViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view = getLayoutView(parent); - return new GankViewHolder(view); - } - - @Override - public void onBindViewHolder(GankViewHolder holder, int position) { - ResultsBean bean = mResults.get(position); - holder.mBean = bean; - holder.bind(bean); - - int imgPosition = position; - - if (mImageSize != 0) { - if (imgPosition > mImageSize) { - imgPosition = position % mImageSize; - } else if (position == mImageSize) { - imgPosition = 0; - } - } - - String url = mImagesList.get(imgPosition).getUrl(); - if (imgPosition < mImageSize) { - ImageLoaderUtil.getInstance().loadWifiImage(mContext, url) - .apply(new RequestOptions() - .centerCrop() - ) - .listener(new RequestListener() { - @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { - holder.imgHead.showLoadText(); - return false; - } - - @Override - public boolean onResourceReady(Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { - holder.imgHead.showImage(); - bean.setLoad(true); - mResults.set(position, bean); - return false; - } - }) - .into(holder.mImageView); - } - - holder.imgHead.setTag(position); - holder.imgHead.setOnClickListener(v -> { - if (bean.isLoad()) { - mMeiZiOnClick.onClick(v, bean); - } else { - if (!holder.imgHead.isCanLoad()) { - return; - } - holder.imgHead.showLoading(); - Glide.with(mContext).load(url) - .apply(new RequestOptions() - .centerCrop() - .diskCacheStrategy(DiskCacheStrategy.RESOURCE) - ) - .listener(new RequestListener() { - @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { - KLog.e(e); - holder.imgHead.showErrorText(); - return false; - } - - @Override - public boolean onResourceReady(Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { - KLog.d("isFirstResource:" + isFirstResource); - holder.imgHead.showImage(); - bean.setLoad(true); - mResults.set(position, bean); - return false; - } - }) - .into(holder.mImageView); - } - }); - } - - @Override - public void onViewRecycled(GankViewHolder holder) { - super.onViewRecycled(holder); - Glide.get(mContext).clearMemory(); - } - - private View getLayoutView(ViewGroup parent) { - LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext()); - return layoutInflater.inflate(R.layout.adapter_android, parent, false); - } - - @Override - public int getItemCount() { - return mResults == null ? 0 : mResults.size(); - } - - @Override - public long getItemId(int position) { - return position; - } - - public void refillItems(List results) { - shuffleImages(); - int size = mResults.size(); - mResults.clear(); - notifyItemRangeRemoved(0, size); - appendItems(results); - } - - public void appendItems(List results) { -// shuffleImages(); - - mResults.addAll(results); - int size = mResults.size(); - notifyItemRangeInserted(size, results.size()); - } - - private void shuffleImages() { - List list = MeiziArrayList.getInstance().getOneItemsList(); - mImagesList = new ArrayList<>(list); - mImageSize = mImagesList.size(); -// Collections.shuffle(mImagesList); - } - - public void setOnItemClickListener(RecyclerOnClick onItemClickListener) { - mMeiZiOnClick = onItemClickListener; - } - - class GankViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { - @BindView(R.id.android_ratio_img_head) - ImageDefaultView imgHead; - - private ImageView mImageView; - private ResultsBean mBean; - private AdapterAndroidBinding mAndroidBinding; - - private GankViewHolder(View itemView) { - super(itemView); - bindView(itemView); - ButterKnife.bind(this, itemView); - itemView.setOnClickListener(this); - mImageView = new ImageView(mContext); - imgHead.setFrameLayout(mImageView); - } - - public void bind(ResultsBean resultsBean) { - Date date = DateUtils.formatDateFromStr(resultsBean.getPublishedAt()); - String formatDate = DateUtils.getFormatDate(date, DateUtils.MM_DD); - resultsBean.setPublishedAt(formatDate); - mAndroidBinding.setResult(resultsBean); - } - - @Override - public void onClick(View v) { - if (mMeiZiOnClick != null) { - mMeiZiOnClick.onClick(v, mBean); - } - } - - private void bindView(View itemView) { - mAndroidBinding = DataBindingUtil.bind(itemView); - } - } -} diff --git a/app/src/main/java/com/gank/gankly/ui/main/android/AndroidContract.java b/app/src/main/java/com/gank/gankly/ui/main/android/AndroidContract.java deleted file mode 100644 index 2bb1ce35..00000000 --- a/app/src/main/java/com/gank/gankly/ui/main/android/AndroidContract.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.gank.gankly.ui.main.android; - -import com.gank.gankly.bean.ResultsBean; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; - -import java.util.List; - -/** - * Create by LingYan on 2016-10-25 - * Email:137387869@qq.com - */ - -public interface AndroidContract { - interface View extends IFetchView { - void refillDate(List list); - - void appendData(List list); - } - - interface Presenter extends IFetchPresenter { - List getResultList(); - } -} diff --git a/app/src/main/java/com/gank/gankly/ui/main/android/AndroidPresenter.java b/app/src/main/java/com/gank/gankly/ui/main/android/AndroidPresenter.java deleted file mode 100644 index 3c97251b..00000000 --- a/app/src/main/java/com/gank/gankly/ui/main/android/AndroidPresenter.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.gank.gankly.ui.main.android; - -import android.support.annotation.NonNull; - -import com.gank.gankly.bean.GankResult; -import com.gank.gankly.bean.ResultsBean; -import com.gank.gankly.config.MeiziArrayList; -import com.gank.gankly.mvp.FetchPresenter; -import com.gank.gankly.mvp.source.remote.GankDataSource; -import com.socks.library.KLog; - -import java.util.ArrayList; -import java.util.List; - -import io.reactivex.Observable; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; - -/** - * Create by LingYan on 2016-10-25 - * Email:137387869@qq.com - */ - -public class AndroidPresenter extends FetchPresenter implements AndroidContract.Presenter { - @NonNull - private final GankDataSource mTask; - @NonNull - private final AndroidContract.View mModelView; - - private final List mResultsBeanList; - - public AndroidPresenter(@NonNull GankDataSource gankDataSource, @NonNull AndroidContract.View view) { - mTask = gankDataSource; - mModelView = view; - mResultsBeanList = new ArrayList<>(); - } - - @Override - public void fetchNew() { - fetchAndroid(getInitPage()); - } - - @Override - public void fetchMore() { - if (hasMore()) { - mModelView.showRefresh(); - fetchAndroid(getFetchPage()); - } - } - - @Override - public void subscribe() { - - } - - @Override - public void unSubscribe() { - - } - - private void fetchAndroid(final int page) { - Observable observable; - if (MeiziArrayList.getInstance().isOneItemsEmpty()) { - observable = mTask.fetchAndroidAndImages(page, getFetchLimit()); - } else { - observable = mTask.fetchAndroid(page, getFetchLimit()); - } - - observable.subscribe(new Observer() { - @Override - public void onComplete() { - int nextPage = page + 1; - setFetchPage(nextPage); - } - - @Override - public void onError(Throwable e) { - KLog.e(e); - parseError(mModelView); - } - - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onNext(GankResult gankResult) { - parseAndroidData(gankResult); - } - }); - } - - private void parseAndroidData(GankResult gankResult) { - List list = filterData(gankResult, mModelView); - if (list != null) { - if (getFetchPage() == 1) { - mResultsBeanList.clear(); - mModelView.refillDate(list); - } else { - mModelView.appendData(list); - } - mResultsBeanList.addAll(list); - } - } - - @Override - public List getResultList() { - return null; - } -} diff --git a/app/src/main/java/com/gank/gankly/ui/main/ios/IosAdapter.java b/app/src/main/java/com/gank/gankly/ui/main/ios/IosAdapter.java deleted file mode 100644 index 8cbe7d1a..00000000 --- a/app/src/main/java/com/gank/gankly/ui/main/ios/IosAdapter.java +++ /dev/null @@ -1,216 +0,0 @@ -package com.gank.gankly.ui.main.ios; - -import android.content.Context; -import android.databinding.DataBindingUtil; -import android.graphics.drawable.Drawable; -import android.support.annotation.Nullable; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.load.DataSource; -import com.bumptech.glide.load.engine.GlideException; -import com.bumptech.glide.request.RequestListener; -import com.bumptech.glide.request.RequestOptions; -import com.bumptech.glide.request.target.Target; -import com.gank.gankly.R; -import com.gank.gankly.bean.ResultsBean; -import com.gank.gankly.config.MeiziArrayList; -import com.gank.gankly.databinding.AdapterIosBinding; -import com.gank.gankly.listener.RecyclerOnClick; -import com.gank.gankly.utils.DateUtils; -import com.gank.gankly.utils.gilde.ImageLoaderUtil; -import com.gank.gankly.widget.ImageDefaultView; -import com.gank.gankly.widget.RatioImageView; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -/** - * Create by LingYan on 2016-04-25 - * Email:137387869@qq.com - */ -public class IosAdapter extends RecyclerView.Adapter { - private final List mResults; - private RecyclerOnClick mMeiZiOnClick; - private Context mContext; - - private int mImageSize; - private List mImagesList; - - public IosAdapter(Context context) { - setHasStableIds(true); - mResults = new ArrayList<>(); - mContext = context; - } - - @Override - public GankViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view = getLayoutView(parent); - return new GankViewHolder(view); - } - - @Override - public void onBindViewHolder(GankViewHolder holder, int position) { - ResultsBean bean = mResults.get(position); - holder.mBean = bean; - holder.bind(bean); - - int imgPosition = position; - - if (mImageSize != 0) { - if (imgPosition > mImageSize) { - imgPosition = position % mImageSize; - } else if (position == mImageSize) { - imgPosition = 0; - } - } - - String url = mImagesList.get(imgPosition).getUrl(); - if (imgPosition < mImageSize) { - ImageLoaderUtil.getInstance() - .loadWifiImage(mContext, url) - .apply(new RequestOptions() - .centerCrop() - ) - .listener(new RequestListener() { - @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { - holder.imgHead.showLoadText(); - return false; - } - - @Override - public boolean onResourceReady(Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { - bean.setLoad(true); - mResults.set(position, bean); - holder.imgHead.showImage(); - return false; - } - }) - .into(holder.mImageView); - } - - holder.imgHead.setOnClickListener(v -> { - if (bean.isLoad()) { - mMeiZiOnClick.onClick(v, bean); - } else { - if (!holder.imgHead.isCanLoad()) { - return; - } - holder.imgHead.showLoading(); - ImageLoaderUtil.getInstance() - .loadManualImage(mContext, url) - .apply(new RequestOptions() - .centerCrop() - ) - .listener(new RequestListener() { - @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { - holder.imgHead.showErrorText(); - return false; - } - - @Override - public boolean onResourceReady(Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { - holder.imgHead.showImage(); - bean.setLoad(true); - mResults.set(position, bean); - return false; - } - }) - .into(holder.mImageView); - } - }); - } - - @Override - public void onViewRecycled(GankViewHolder holder) { - super.onViewRecycled(holder); - Glide.get(mContext).clearMemory(); - } - - private View getLayoutView(ViewGroup parent) { - LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext()); - return layoutInflater.inflate(R.layout.adapter_ios, parent, false); - } - - @Override - public int getItemCount() { - return mResults.size(); - } - - public void refillItems(List results) { - shuffleImages(); - - int size = mResults.size(); - mResults.clear(); - notifyItemRangeRemoved(0, size); - appendItems(results); - } - - public void appendItems(List results) { - mResults.addAll(results); - int size = mResults.size(); - notifyItemRangeInserted(size, results.size()); - } - - private void shuffleImages() { - List list = MeiziArrayList.getInstance().getOneItemsList(); - mImagesList = new ArrayList<>(list); - mImageSize = mImagesList.size(); -// Collections.shuffle(mImagesList); - } - - @Override - public long getItemId(int position) { - return position; - } - - public void setOnItemClickListener(RecyclerOnClick onItemClickListener) { - mMeiZiOnClick = onItemClickListener; - } - - public class GankViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { - @BindView(R.id.ios_ratio_img_head) - ImageDefaultView imgHead; - RatioImageView mImageView; - - - private ResultsBean mBean; - private AdapterIosBinding mIosBinding; - - public GankViewHolder(View itemView) { - super(itemView); - bindView(itemView); - ButterKnife.bind(this, itemView); - itemView.setOnClickListener(this); - mImageView = new RatioImageView(mContext); - imgHead.setFrameLayout(mImageView); - } - - public void bind(ResultsBean resultsBean) { - Date date = DateUtils.formatDateFromStr(resultsBean.getPublishedAt()); - String formatDate = DateUtils.getFormatDate(date, DateUtils.MM_DD); - resultsBean.setPublishedAt(formatDate); - mIosBinding.setResult(resultsBean); - } - - @Override - public void onClick(View v) { - if (mMeiZiOnClick != null) { - mMeiZiOnClick.onClick(v, mBean); - } - } - - private void bindView(View itemView) { - mIosBinding = DataBindingUtil.bind(itemView); - } - } -} diff --git a/app/src/main/java/com/gank/gankly/ui/main/ios/IosContract.java b/app/src/main/java/com/gank/gankly/ui/main/ios/IosContract.java deleted file mode 100644 index 1027c1e6..00000000 --- a/app/src/main/java/com/gank/gankly/ui/main/ios/IosContract.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.gank.gankly.ui.main.ios; - -import com.gank.gankly.bean.ResultsBean; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; - -import java.util.List; - -/** - * Create by LingYan on 2016-12-20 - * Email:137387869@qq.com - */ - -public interface IosContract { - interface View extends IFetchView { - void refillDate(List list); - - void appendData(List list); - } - - interface Presenter extends IFetchPresenter { - - } -} diff --git a/app/src/main/java/com/gank/gankly/ui/main/ios/IosFragment.java b/app/src/main/java/com/gank/gankly/ui/main/ios/IosFragment.java deleted file mode 100644 index c3ba7199..00000000 --- a/app/src/main/java/com/gank/gankly/ui/main/ios/IosFragment.java +++ /dev/null @@ -1,188 +0,0 @@ -package com.gank.gankly.ui.main.ios; - -import android.content.Context; -import android.os.Bundle; -import android.support.design.widget.Snackbar; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.View; - -import com.gank.gankly.R; -import com.gank.gankly.bean.ResultsBean; -import com.gank.gankly.config.Constants; -import com.gank.gankly.listener.RecyclerOnClick; -import com.gank.gankly.mvp.source.remote.GankDataSource; -import com.gank.gankly.ui.base.LazyFragment; -import com.gank.gankly.ui.main.MainActivity; -import com.gank.gankly.ui.web.normal.WebActivity; -import com.gank.gankly.utils.theme.RecyclerViewColor; -import com.gank.gankly.utils.theme.ThemeColor; -import com.gank.gankly.widget.LySwipeRefreshLayout; -import com.gank.gankly.widget.MultipleStatusView; - -import java.util.List; - -import butterknife.BindView; - -/** - * ios - * Create by LingYan on 2016-4-26 - * Email:137387869@qq.com - */ -public class IosFragment extends LazyFragment implements RecyclerOnClick, IosContract.View { - @BindView(R.id.multiple_status_view) - MultipleStatusView mMultipleStatusView; - @BindView(R.id.swipe_refresh) - LySwipeRefreshLayout mSwipeRefreshLayout; - - private MainActivity mActivity; - private IosAdapter mRecyclerAdapter; - private IosContract.Presenter mPresenter; - private RecyclerView mRecyclerView; - - @Override - protected int getLayoutId() { - return R.layout.layout_swipe_normal; - } - - public static IosFragment newInstance() { - IosFragment fragment = new IosFragment(); - Bundle args = new Bundle(); - fragment.setArguments(args); - return fragment; - } - - @Override - protected void initPresenter() { - mPresenter = new IosPresenter(GankDataSource.getInstance(), this); - } - - @Override - protected void initValues() { - } - - @Override - protected void initViews() { - setSwipeRefreshLayout(mSwipeRefreshLayout); - - mRecyclerAdapter = new IosAdapter(mActivity); - mSwipeRefreshLayout.setAdapter(mRecyclerAdapter); - - mRecyclerView = mSwipeRefreshLayout.getRecyclerView(); - mRecyclerView.setHasFixedSize(true); - mRecyclerAdapter.setOnItemClickListener(this); - mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity)); - } - - @Override - protected void bindListener() { - mMultipleStatusView.setListener(v -> initFetchDate()); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { - @Override - public void onRefresh() { - mPresenter.fetchNew(); - } - - @Override - public void onLoadMore() { - mPresenter.fetchMore(); - } - }); - } - - @Override - protected void initData() { - showLoading(); - initFetchDate(); - } - - private void initFetchDate() { - mPresenter.fetchNew(); - } - - @Override - public void showLoading() { - mMultipleStatusView.showLoading(); - } - - @Override - public void showRefreshError(String errorStr) { - Snackbar.make(mSwipeRefreshLayout, errorStr, Snackbar.LENGTH_LONG) - .setAction(R.string.retry, v -> mPresenter.fetchMore()); - } - - @Override - public void showError() { - mMultipleStatusView.showError(); - } - - @Override - public void showEmpty() { - mMultipleStatusView.showEmpty(); - } - - @Override - public void showRefresh() { - mSwipeRefreshLayout.setRefreshing(true); - } - - @Override - public void hideRefresh() { - mSwipeRefreshLayout.setRefreshing(false); - } - - @Override - public void hasNoMoreDate() { - - } - - @Override - public void showContent() { - mMultipleStatusView.showContent(); - } - - @Override - public void showDisNetWork() { - mMultipleStatusView.showDisNetwork(); - } - - @Override - public void onClick(View view, ResultsBean bean) { - Bundle bundle = new Bundle(); - bundle.putString(WebActivity.TITLE, bean.getDesc()); - bundle.putString(WebActivity.URL, bean.getUrl()); - bundle.putString(WebActivity.TYPE, Constants.IOS); - bundle.putString(WebActivity.AUTHOR, bean.getWho()); - WebActivity.startWebActivity(mActivity, bundle); - } - - @Override - public void onAttach(Context context) { - super.onAttach(context); - this.mActivity = (MainActivity) context; - } - - @Override - protected void callBackRefreshUi() { - ThemeColor themeColor = new ThemeColor(this); - RecyclerViewColor mRecycler = new RecyclerViewColor(mRecyclerView); - mRecycler.setItemColor(R.id.ios_txt_title, R.attr.baseAdapterItemTextColor); - mRecycler.setItemColor(R.id.ios_txt_time, R.attr.textSecondaryColor); - mRecycler.setItemBackgroundColor(R.id.ios_ll, R.attr.lyItemSelectBackground); - - themeColor.setBackgroundResource(R.attr.themeBackground, mRecyclerView); - themeColor.swipeRefresh(mSwipeRefreshLayout); - themeColor.recyclerViewColor(mRecycler); - themeColor.start(); - } - - @Override - public void refillDate(List list) { - mRecyclerAdapter.refillItems(list); - } - - @Override - public void appendData(List list) { - mRecyclerAdapter.appendItems(list); - } -} diff --git a/app/src/main/java/com/gank/gankly/ui/main/ios/IosPresenter.java b/app/src/main/java/com/gank/gankly/ui/main/ios/IosPresenter.java deleted file mode 100644 index faf5c1c9..00000000 --- a/app/src/main/java/com/gank/gankly/ui/main/ios/IosPresenter.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.gank.gankly.ui.main.ios; - -import android.support.annotation.NonNull; - -import com.gank.gankly.bean.GankResult; -import com.gank.gankly.bean.ResultsBean; -import com.gank.gankly.mvp.FetchPresenter; -import com.gank.gankly.mvp.source.remote.GankDataSource; -import com.socks.library.KLog; - -import java.util.List; - -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; - -/** - * Create by LingYan on 2016-12-20 - * Email:137387869@qq.com - */ - -public class IosPresenter extends FetchPresenter implements IosContract.Presenter { - @NonNull - private GankDataSource mTask; - @NonNull - private IosContract.View mModelView; - - public IosPresenter(@NonNull GankDataSource gankDataSource, @NonNull IosContract.View view) { - mTask = gankDataSource; - mModelView = view; - } - - @Override - public void fetchNew() { - fetchData(getInitPage()); - } - - @Override - public void fetchMore() { - if (hasMore()) { - mModelView.showRefresh(); - fetchData(getFetchPage()); - } - } - - private void fetchData(final int page) { - mTask.fetchIos(page, getFetchLimit()) - .subscribe(new Observer() { - @Override - public void onComplete() { - setFetchPage(page + 1); - } - - @Override - public void onError(Throwable e) { - KLog.e(e); - parseError(mModelView); - } - - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onNext(GankResult gankResult) { - List list = filterData(gankResult.getResults(), mModelView); - if (list != null) { - if (page == 1) { - mModelView.refillDate(list); - } else { - mModelView.appendData(list); - } - } - } - }); - } - - @Override - public void subscribe() { - - } - - @Override - public void unSubscribe() { - - } -} diff --git a/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabContract.java b/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabContract.java new file mode 100644 index 00000000..1ba1ae12 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabContract.java @@ -0,0 +1,26 @@ +package com.gank.gankly.ui.main.tab; + +import android.content.Context; +import android.support.annotation.NonNull; + +import com.gank.gankly.mvp.base.BaseView; +import com.gank.gankly.mvp.base.BasePresenter; + +/** + * Create by LingYan on 2017-09-28 + */ + +public interface MainTabContract { + interface View extends BaseView { + + } + + public abstract class Presenter extends BasePresenter { + public Presenter(@NonNull Context context, @NonNull View view) { + super(context, view); + } + + public abstract void loadPicture(); + } + +} diff --git a/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabFragment.java b/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabFragment.java new file mode 100644 index 00000000..ecc791a2 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabFragment.java @@ -0,0 +1,27 @@ +package com.gank.gankly.ui.main.tab; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.view.View; + +import com.gank.gankly.ui.base.fragment.ButterKnifeFragment; + +/** + * Create by LingYan on 2017-09-28 + */ + +public abstract class MainTabFragment extends ButterKnifeFragment implements MainTabContract.View { + private MainTabPresenter mPresenter; + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new MainTabPresenter(getContext(), this); + mPresenter.loadPicture(); + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabPresenter.java b/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabPresenter.java new file mode 100644 index 00000000..a20d0e1b --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabPresenter.java @@ -0,0 +1,22 @@ +package com.gank.gankly.ui.main.tab; + + +import android.content.Context; +import android.support.annotation.NonNull; + +/** + * Create by LingYan on 2017-09-28 + */ + +public class MainTabPresenter extends MainTabContract.Presenter { + + + public MainTabPresenter(@NonNull Context context, @NonNull MainTabContract.View view) { + super(context, view); + } + + @Override + public void loadPicture() { + + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareAdapter.java b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareAdapter.java index f783f1cd..927379c6 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareAdapter.java @@ -24,11 +24,11 @@ import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.transition.Transition; import com.gank.gankly.R; -import com.gank.gankly.bean.ResultsBean; import com.gank.gankly.listener.MeiziOnClick; import com.gank.gankly.utils.AppUtils; import com.gank.gankly.utils.gilde.ImageLoaderUtil; import com.gank.gankly.widget.ImageDefaultView; +import com.leftcoding.http.bean.ResultsBean; import com.socks.library.KLog; import java.util.ArrayList; @@ -73,7 +73,7 @@ public GoodsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { @Override public void onBindViewHolder(final GoodsViewHolder holder, int position) { final ResultsBean bean = mResults.get(position); - final String url = bean.getUrl(); + final String url = bean.url; RequestBuilder requestBuilder = ImageLoaderUtil.getInstance() .glideAsBitmap(mContext, url); requestBuilder @@ -89,7 +89,7 @@ public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, DataSource dataSource, boolean isFirstResource) { holder.imgMeizi.showImage(); - bean.setLoad(true); + bean.isLoaded = true; mResults.set(position, bean); return false; } @@ -114,7 +114,7 @@ public boolean onResourceReady(Bitmap resource, Object model, Target tar } holder.imgMeizi.setOnClickListener(v -> { - if (bean.isLoad()) { + if (bean.isLoaded) { mMeiZiOnClick.onClick(v, position); } else { if (!holder.imgMeizi.isCanLoad()) { @@ -136,7 +136,7 @@ public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, DataSource dataSource, boolean isFirstResource) { holder.imgMeizi.showImage(); - bean.setLoad(true); + bean.isLoaded = true; mResults.set(position, bean); return false; } diff --git a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareContract.java b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareContract.java index 20375032..167c77ab 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareContract.java +++ b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareContract.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.main.welfare; -import com.gank.gankly.bean.ResultsBean; -import com.gank.gankly.mvp.IFetchPresenter; -import com.gank.gankly.mvp.IFetchView; +import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.SupportView; +import com.leftcoding.http.bean.ResultsBean; import java.util.List; @@ -12,12 +12,12 @@ */ public class WelfareContract { - interface View extends IFetchView { + interface View extends SupportView { void refillData(List list); void appendData(List list); } - interface Presenter extends IFetchPresenter { + interface Presenter extends ILoadMorePresenter { } } diff --git a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java index 3ff50e22..d538b8d9 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.v4.app.ActivityOptionsCompat; import android.support.v7.widget.RecyclerView; @@ -12,16 +13,16 @@ import com.gank.gankly.App; import com.gank.gankly.R; -import com.gank.gankly.bean.ResultsBean; import com.gank.gankly.listener.MeiziOnClick; import com.gank.gankly.mvp.source.remote.GankDataSource; -import com.gank.gankly.ui.base.LazyFragment; +import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.gallery.GalleryActivity; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.utils.StyleUtils; import com.gank.gankly.utils.theme.ThemeColor; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; +import com.leftcoding.http.bean.ResultsBean; import java.util.List; @@ -57,12 +58,9 @@ public static WelfareFragment newInstance() { } @Override - protected void initValues() { - } - - @Override - protected void initViews() { - setSwipeRefreshLayout(mSwipeRefreshLayout); + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + // setSwipeRefreshLayout(mSwipeRefreshLayout); mWelfareAdapter = new WelfareAdapter(mActivity); mWelfareAdapter.setMeiZiOnClick(this); @@ -83,10 +81,7 @@ public void onLoadMore() { } }); mSwipeRefreshLayout.setAdapter(mWelfareAdapter); - } - @Override - protected void bindListener() { mMultipleStatusView.setListener(v -> { mMultipleStatusView.showLoading(); fetchNew(); @@ -94,14 +89,15 @@ protected void bindListener() { } @Override - protected void initData() { - mMultipleStatusView.showLoading(); - fetchNew(); + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new WelfarePresenter(GankDataSource.getInstance(), this); } @Override - protected void initPresenter() { - mPresenter = new WelfarePresenter(GankDataSource.getInstance(), this); + protected void initLazy() { + mMultipleStatusView.showLoading(); + fetchNew(); } @Override @@ -127,12 +123,12 @@ private void fetchMore() { } @Override - public void hideRefresh() { + public void hideProgress() { mSwipeRefreshLayout.setRefreshing(false); } @Override - public void showRefresh() { + public void showProgress() { mSwipeRefreshLayout.setRefreshing(true); } @@ -179,7 +175,6 @@ public void onAttach(Context context) { this.mActivity = (MainActivity) context; } - @Override protected void callBackRefreshUi() { ThemeColor themeColor = new ThemeColor(this); int resource = themeColor.getResourceId(R.attr.themeBackground); diff --git a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfarePresenter.java b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfarePresenter.java index c98bcafa..f1511e6c 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfarePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfarePresenter.java @@ -1,10 +1,10 @@ package com.gank.gankly.ui.main.welfare; import com.gank.gankly.bean.GankResult; -import com.gank.gankly.bean.ResultsBean; import com.gank.gankly.config.MeiziArrayList; import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.GankDataSource; +import com.leftcoding.http.bean.ResultsBean; import com.socks.library.KLog; import java.util.List; @@ -68,16 +68,11 @@ public void onComplete() { @Override public void fetchMore() { if (hasMore()) { - mModelView.showRefresh(); + mModelView.showProgress(); fetchData(getFetchPage()); } } - @Override - public void subscribe() { - - } - @Override public void unSubscribe() { diff --git a/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java b/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java index 2cc709ea..b2003324 100644 --- a/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java @@ -6,17 +6,19 @@ import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.v4.widget.NestedScrollView; import android.support.v7.widget.LinearLayoutCompat; import android.support.v7.widget.Toolbar; import android.util.TypedValue; +import android.view.View; import android.widget.TextView; import com.gank.gankly.App; import com.gank.gankly.R; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; -import com.gank.gankly.ui.base.BaseSwipeRefreshFragment; +import com.gank.gankly.ui.base.fragment.ButterKnifeFragment; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.more.MoreActivity; import com.gank.gankly.utils.GanklyPreferences; @@ -39,7 +41,7 @@ * Email:137387869@qq.com */ -public class MineFragment extends BaseSwipeRefreshFragment { +public class MineFragment extends ButterKnifeFragment { public static final String TAG = "MineFragment"; @BindView(R.id.toolbar) @@ -66,25 +68,13 @@ protected int getLayoutId() { } @Override - protected void initPresenter() { - - } - - @Override - protected void initValues() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); selectItemSwitch(); - mNestedScrollView.setNestedScrollingEnabled(false); - } - - @Override - protected void initViews() { mToolbar.setTitle(R.string.navigation_mine); - } - - @Override - protected void bindListener() { themeSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> selectTheme(isChecked)); + mNestedScrollView.setNestedScrollingEnabled(false); } private void selectTheme(boolean isChecked) { @@ -99,7 +89,40 @@ private void selectTheme(boolean isChecked) { themeSwitch.setChecked(isChecked); RxBus_.getInstance().post(new ThemeEvent(isChecked)); refreshStatusBar(); - callBackRefreshUi(); + + TypedValue typeValue = new TypedValue(); + Resources.Theme theme = mActivity.getTheme(); + theme.resolveAttribute(R.attr.themeBackground, typeValue, true); + mNestedScrollView.setBackgroundResource(typeValue.resourceId); + theme.resolveAttribute(R.attr.colorPrimary, typeValue, true); + mToolbar.setBackgroundResource(typeValue.resourceId); + theme.resolveAttribute(R.attr.textPrimaryColor, typeValue, true); + final int itemTextColor = typeValue.resourceId; + theme.resolveAttribute(R.attr.baseAdapterItemBackground, typeValue, true); + final int itemBackground = typeValue.resourceId; + +// setItemBackground(mViewList); + + ButterKnife.apply(mSwitchList, new ButterKnife.Action() { + @Override + public void apply(@NonNull LSwitch view, int index) { + view.changeTheme(); + } + }); + + ButterKnife.apply(mTextViewList, new ButterKnife.Action() { + @Override + public void apply(@NonNull TextView view, int index) { + view.setTextColor(App.getAppColor(itemTextColor)); + } + }); + + ButterKnife.apply(mLinearLayoutCompatList, new ButterKnife.Action() { + @Override + public void apply(@NonNull LinearLayoutCompat view, int index) { + view.setBackgroundResource(itemBackground); + } + }); } private void selectItemSwitch() { @@ -162,41 +185,4 @@ public void onAttach(Context context) { mActivity = (MainActivity) context; } - @Override - protected void callBackRefreshUi() { - - TypedValue typeValue = new TypedValue(); - Resources.Theme theme = mActivity.getTheme(); - theme.resolveAttribute(R.attr.themeBackground, typeValue, true); - mNestedScrollView.setBackgroundResource(typeValue.resourceId); - theme.resolveAttribute(R.attr.colorPrimary, typeValue, true); - mToolbar.setBackgroundResource(typeValue.resourceId); - theme.resolveAttribute(R.attr.textPrimaryColor, typeValue, true); - final int itemTextColor = typeValue.resourceId; - theme.resolveAttribute(R.attr.baseAdapterItemBackground, typeValue, true); - final int itemBackground = typeValue.resourceId; - - setItemBackground(mViewList); - - ButterKnife.apply(mSwitchList, new ButterKnife.Action() { - @Override - public void apply(@NonNull LSwitch view, int index) { - view.changeTheme(); - } - }); - - ButterKnife.apply(mTextViewList, new ButterKnife.Action() { - @Override - public void apply(@NonNull TextView view, int index) { - view.setTextColor(App.getAppColor(itemTextColor)); - } - }); - - ButterKnife.apply(mLinearLayoutCompatList, new ButterKnife.Action() { - @Override - public void apply(@NonNull LinearLayoutCompat view, int index) { - view.setBackgroundResource(itemBackground); - } - }); - } } diff --git a/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java b/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java index 11752213..1cb8cddf 100644 --- a/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java @@ -4,13 +4,16 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; +import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.design.widget.CollapsingToolbarLayout; import android.support.v7.app.ActionBar; import android.support.v7.widget.Toolbar; +import android.view.View; import com.gank.gankly.App; import com.gank.gankly.R; -import com.gank.gankly.ui.base.BaseFragment; +import com.gank.gankly.ui.base.fragment.SupportFragment; import butterknife.BindString; import butterknife.BindView; @@ -21,7 +24,7 @@ * Create by LingYan on 2016-05-10 * Email:137387869@qq.com */ -public class AboutFragment extends BaseFragment { +public class AboutFragment extends SupportFragment { @BindView(R.id.about_toolbar) Toolbar mToolbar; @BindView(R.id.about_collapsing) @@ -42,11 +45,8 @@ public void onAttach(Context context) { } @Override - protected void initValues() { - } - - @Override - protected void initViews() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); mCollapsingToolbarLayout.setTitle(App.getAppString(R.string.navigation_about)); mActivity.setSupportActionBar(mToolbar); ActionBar bar = mActivity.getSupportActionBar(); @@ -57,7 +57,8 @@ protected void initViews() { } @Override - protected void bindListener() { + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/more/MoreActivity.java b/app/src/main/java/com/gank/gankly/ui/more/MoreActivity.java index 0d5b15e6..fda7c4db 100644 --- a/app/src/main/java/com/gank/gankly/ui/more/MoreActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/more/MoreActivity.java @@ -4,7 +4,7 @@ import android.support.v4.app.Fragment; import com.gank.gankly.R; -import com.gank.gankly.ui.base.BaseActivity; +import com.gank.gankly.ui.base.activity.BaseActivity; import com.gank.gankly.ui.collect.CollectFragment; import com.gank.gankly.ui.history.BrowseHistoryFragment; diff --git a/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java b/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java index 843a63f4..b1ac2617 100644 --- a/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java @@ -3,6 +3,7 @@ import android.app.ProgressDialog; import android.content.Context; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.v7.app.ActionBar; import android.support.v7.widget.Toolbar; import android.view.View; @@ -13,8 +14,8 @@ import com.gank.gankly.bean.CheckVersion; import com.gank.gankly.config.Preferences; import com.gank.gankly.listener.DialogOnClick; -import com.gank.gankly.presenter.LauncherPresenter; -import com.gank.gankly.ui.base.BaseSwipeRefreshFragment; +import com.gank.gankly.ui.base.fragment.SupportFragment; +import com.gank.gankly.ui.main.LauncherPresenter; import com.gank.gankly.utils.AppUtils; import com.gank.gankly.utils.GanklyPreferences; import com.gank.gankly.utils.GlideCatchUtil; @@ -36,7 +37,7 @@ * Create by LingYan on 2016-05-10 * Email:137387869@qq.com */ -public class SettingFragment extends BaseSwipeRefreshFragment implements ILauncher { +public class SettingFragment extends SupportFragment implements ILauncher { public static final String TAG = "SettingFragment"; public static final String IS_NIGHT = "isNight"; @@ -76,16 +77,8 @@ public static SettingFragment getInstance() { } @Override - protected void initPresenter() { - mPresenter = new LauncherPresenter(mActivity, this); - } - - @Override - protected void initValues() { - } - - @Override - protected void initViews() { + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); initPreferences(); mToolbar.setTitle(R.string.navigation_settings); @@ -98,8 +91,18 @@ protected void initViews() { String cacheSize = GlideCatchUtil.getInstance().getCacheSize(); itemCleanCache.setTextSummary(mActivity.getResources().getString(R.string.setting_picture_cache, cacheSize)); + + itemCheckSwitch.setSwitchListener(isCheck -> GanklyPreferences.putBoolean(Preferences.SETTING_AUTO_CHECK, isCheck)); + itemOnlyWifi.setSwitchListener(isCheck -> GanklyPreferences.putBoolean(Preferences.SETTING_WIFI_ONLY, isCheck)); + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mPresenter = new LauncherPresenter(mActivity, this); } + private void initPreferences() { String summary = App.getAppResources().getString(R.string.setting_current_version, AppUtils.getVersionName(mActivity)); @@ -116,12 +119,6 @@ private void selectItemSwitch() { itemOnlyWifi.setSwitchChecked(isOnlyWifi); } - @Override - protected void bindListener() { - itemCheckSwitch.setSwitchListener(isCheck -> GanklyPreferences.putBoolean(Preferences.SETTING_AUTO_CHECK, isCheck)); - itemOnlyWifi.setSwitchListener(isCheck -> GanklyPreferences.putBoolean(Preferences.SETTING_WIFI_ONLY, isCheck)); - } - @Override public void callUpdate(CheckVersion checkVersion) { showVersionDialog(checkVersion.getChangelog()); @@ -207,11 +204,6 @@ public void onResume() { super.onResume(); } - @Override - protected void callBackRefreshUi() { - - } - @Override public void showEmpty() { diff --git a/app/src/main/java/com/gank/gankly/ui/main/SplashActivity.java b/app/src/main/java/com/gank/gankly/ui/splash/SplashActivity.java similarity index 95% rename from app/src/main/java/com/gank/gankly/ui/main/SplashActivity.java rename to app/src/main/java/com/gank/gankly/ui/splash/SplashActivity.java index 5cffc641..c713f4c9 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/SplashActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/splash/SplashActivity.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.main; +package com.gank.gankly.ui.splash; import android.animation.Animator; import android.animation.AnimatorSet; @@ -11,7 +11,8 @@ import android.view.WindowManager; import com.gank.gankly.R; -import com.gank.gankly.ui.base.BaseActivity; +import com.gank.gankly.ui.base.activity.BaseActivity; +import com.gank.gankly.ui.main.MainActivity; import java.util.concurrent.TimeUnit; diff --git a/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java b/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java index f9cfbcea..64c5cbfc 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java @@ -23,7 +23,7 @@ import com.gank.gankly.config.Constants; import com.gank.gankly.data.entity.UrlCollect; import com.gank.gankly.data.entity.UrlCollectDao; -import com.gank.gankly.ui.base.BaseActivity; +import com.gank.gankly.ui.base.activity.BaseActivity; import com.gank.gankly.utils.AppUtils; import com.gank.gankly.utils.CrashUtils; import com.gank.gankly.utils.ListUtils; diff --git a/app/src/main/java/com/gank/gankly/ui/web/WebVideoViewActivity.java b/app/src/main/java/com/gank/gankly/ui/web/WebVideoViewActivity.java index c99ed065..7c5cbe65 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/WebVideoViewActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/web/WebVideoViewActivity.java @@ -12,7 +12,7 @@ import android.widget.ProgressBar; import com.gank.gankly.R; -import com.gank.gankly.ui.base.BaseActivity; +import com.gank.gankly.ui.base.activity.BaseActivity; import com.gank.gankly.utils.ToastUtils; import com.socks.library.KLog; import com.tencent.smtt.export.external.interfaces.IX5WebChromeClient; diff --git a/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java b/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java index 696c4b3b..70d95483 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java @@ -24,7 +24,7 @@ import com.gank.gankly.data.entity.ReadHistory; import com.gank.gankly.data.entity.UrlCollect; import com.gank.gankly.mvp.source.LocalDataSource; -import com.gank.gankly.ui.base.BaseActivity; +import com.gank.gankly.ui.base.activity.BaseActivity; import com.gank.gankly.utils.AppUtils; import com.gank.gankly.utils.CircularAnimUtils; import com.gank.gankly.utils.ShareUtils; @@ -82,6 +82,11 @@ public class WebActivity extends BaseActivity implements WebContract.View { private ValueCallback uploadFile; + @Override + public void showShortToast(String string) { + + } + enum CollectStates { NORMAL, COLLECT, UN_COLLECT } @@ -173,8 +178,10 @@ protected void bindListener() { protected void initValues() { isInitCollect = true; if (!TextUtils.isEmpty(mUrl)) { - mPresenter.findCollectUrl(mUrl); - mPresenter.insetHistoryUrl(new ReadHistory(null, mUrl, mTitle, new Date(), mCollectType)); + if (mPresenter != null) { + mPresenter.findCollectUrl(mUrl); + mPresenter.insetHistoryUrl(new ReadHistory(null, mUrl, mTitle, new Date(), mCollectType)); + } } } diff --git a/app/src/main/java/com/gank/gankly/ui/web/normal/WebContract.java b/app/src/main/java/com/gank/gankly/ui/web/normal/WebContract.java index 79be0bb1..efab94f4 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/normal/WebContract.java +++ b/app/src/main/java/com/gank/gankly/ui/web/normal/WebContract.java @@ -4,8 +4,8 @@ import com.gank.gankly.data.entity.ReadHistory; import com.gank.gankly.data.entity.UrlCollect; -import com.gank.gankly.mvp.IBasePresenter; -import com.gank.gankly.mvp.IBaseView; +import com.gank.gankly.mvp.ISubscribePresenter; +import com.gank.gankly.mvp.base.BaseView; /** * Create by LingYan on 2016-10-27 @@ -13,7 +13,7 @@ */ public interface WebContract { - interface View extends IBaseView { + interface View extends BaseView { void onCollect(); void onCancelCollect(); @@ -23,7 +23,7 @@ interface View extends IBaseView { void setCollectIcon(boolean isCollect); } - interface Presenter extends IBasePresenter { + interface Presenter extends ISubscribePresenter { void findCollectUrl(@NonNull String url); void insetHistoryUrl(@NonNull ReadHistory readHistory); diff --git a/app/src/main/java/com/gank/gankly/ui/web/normal/WebPresenter.java b/app/src/main/java/com/gank/gankly/ui/web/normal/WebPresenter.java index 8be87932..39fb6163 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/normal/WebPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/web/normal/WebPresenter.java @@ -6,7 +6,6 @@ import com.gank.gankly.bean.RxCollect; import com.gank.gankly.data.entity.ReadHistory; import com.gank.gankly.data.entity.UrlCollect; -import com.gank.gankly.mvp.BasePresenter; import com.gank.gankly.mvp.source.LocalDataSource; import com.gank.gankly.utils.ListUtils; import com.socks.library.KLog; @@ -28,7 +27,7 @@ * Email:137387869@qq.com */ -public class WebPresenter extends BasePresenter implements WebContract.Presenter { +public class WebPresenter implements WebContract.Presenter { private LocalDataSource mTask; private WebContract.View mView; private long endTime; @@ -64,7 +63,7 @@ public void onSubscribe(Disposable d) { @Override public void onNext(List urlCollects) { mCollects = urlCollects; - boolean isCollect_ = ListUtils.getListSize(urlCollects) > 0; + boolean isCollect_ = ListUtils.getSize(urlCollects) > 0; isCollect = isCollect_; mView.setCollectIcon(isCollect_); } @@ -181,12 +180,6 @@ public void subscribe(ObservableEmitter subscriber) throws Exception { }); } - - @Override - public void subscribe() { - - } - @Override public void unSubscribe() { } diff --git a/app/src/main/java/com/gank/gankly/utils/ListUtils.java b/app/src/main/java/com/gank/gankly/utils/ListUtils.java index 9b92ef23..3c5696d2 100644 --- a/app/src/main/java/com/gank/gankly/utils/ListUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/ListUtils.java @@ -6,7 +6,7 @@ * Create by LingYan on 2016-04-06 */ public class ListUtils { - public static int getListSize(List list) { + public static int getSize(List list) { return list == null ? 0 : list.size(); } diff --git a/app/src/main/java/com/gank/gankly/utils/permission/ActivityUtils.java b/app/src/main/java/com/gank/gankly/utils/permission/ActivityUtils.java index 6808260a..5cd31021 100644 --- a/app/src/main/java/com/gank/gankly/utils/permission/ActivityUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/permission/ActivityUtils.java @@ -4,7 +4,6 @@ /** * Created by Lingyan on 2017/3/22 0022. - * Email:137387869@qq.com */ public class ActivityUtils { diff --git a/app/src/main/java/com/gank/gankly/utils/permission/PermissionUtils.java b/app/src/main/java/com/gank/gankly/utils/permission/PermissionUtils.java index c315f59c..d99b1551 100644 --- a/app/src/main/java/com/gank/gankly/utils/permission/PermissionUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/permission/PermissionUtils.java @@ -19,7 +19,6 @@ /** * Created by Lingyan on 2017/3/22 0022. - * Email:137387869@qq.com */ public class PermissionUtils { diff --git a/app/src/main/java/com/gank/gankly/utils/theme/TextViewResorce.java b/app/src/main/java/com/gank/gankly/utils/theme/TextViewResorce.java index d0e2592e..2c795f90 100644 --- a/app/src/main/java/com/gank/gankly/utils/theme/TextViewResorce.java +++ b/app/src/main/java/com/gank/gankly/utils/theme/TextViewResorce.java @@ -4,7 +4,6 @@ /** * Create by LingYan on 2016-11-25 - * Email:137387869@qq.com */ public class TextViewResorce { diff --git a/app/src/main/java/com/gank/gankly/utils/theme/ThemeColor.java b/app/src/main/java/com/gank/gankly/utils/theme/ThemeColor.java index 56a5ae3e..0fa83df5 100644 --- a/app/src/main/java/com/gank/gankly/utils/theme/ThemeColor.java +++ b/app/src/main/java/com/gank/gankly/utils/theme/ThemeColor.java @@ -17,7 +17,6 @@ /** * 主题控制 * Create by LingYan on 2016-11-25 - * Email:137387869@qq.com */ public final class ThemeColor { diff --git a/app/src/main/java/com/gank/gankly/utils/theme/ViewResorce.java b/app/src/main/java/com/gank/gankly/utils/theme/ViewResorce.java index a184069d..032b5d29 100644 --- a/app/src/main/java/com/gank/gankly/utils/theme/ViewResorce.java +++ b/app/src/main/java/com/gank/gankly/utils/theme/ViewResorce.java @@ -4,7 +4,6 @@ /** * Create by LingYan on 2016-11-25 - * Email:137387869@qq.com */ public class ViewResorce { diff --git a/app/src/main/java/com/gank/gankly/view/ILauncher.java b/app/src/main/java/com/gank/gankly/view/ILauncher.java index 9b2047b9..893261d0 100644 --- a/app/src/main/java/com/gank/gankly/view/ILauncher.java +++ b/app/src/main/java/com/gank/gankly/view/ILauncher.java @@ -1,11 +1,12 @@ package com.gank.gankly.view; import com.gank.gankly.bean.CheckVersion; +import com.gank.gankly.mvp.base.BaseView; /** * Create by LingYan on 2016-06-01 */ -public interface ILauncher extends IBaseView { +public interface ILauncher extends BaseView { void callUpdate(CheckVersion checkVersion); void showDialog(); diff --git a/app/src/main/java/com/gank/gankly/widget/HorizontalLoading.java b/app/src/main/java/com/gank/gankly/widget/HorizontalLoading.java index 608ed511..b2a2f28a 100644 --- a/app/src/main/java/com/gank/gankly/widget/HorizontalLoading.java +++ b/app/src/main/java/com/gank/gankly/widget/HorizontalLoading.java @@ -13,7 +13,6 @@ /** * Create by LingYan on 2017-04-27 - * Email:137387869@qq.com */ public class HorizontalLoading extends View { diff --git a/app/src/main/java/com/gank/gankly/widget/ImageDefaultLoading.java b/app/src/main/java/com/gank/gankly/widget/ImageDefaultLoading.java index e1a6500c..7b3a24c8 100644 --- a/app/src/main/java/com/gank/gankly/widget/ImageDefaultLoading.java +++ b/app/src/main/java/com/gank/gankly/widget/ImageDefaultLoading.java @@ -20,7 +20,6 @@ /** * Create by LingYan on 2017-04-28 - * Email:137387869@qq.com */ public class ImageDefaultLoading extends LinearLayout { diff --git a/app/src/main/java/com/gank/gankly/widget/ImageDefaultView.java b/app/src/main/java/com/gank/gankly/widget/ImageDefaultView.java index 1e135a75..68c72bfa 100644 --- a/app/src/main/java/com/gank/gankly/widget/ImageDefaultView.java +++ b/app/src/main/java/com/gank/gankly/widget/ImageDefaultView.java @@ -18,7 +18,6 @@ /** * Create by LingYan on 2017-04-28 - * Email:137387869@qq.com */ public class ImageDefaultView extends LinearLayout { diff --git a/app/src/main/java/com/gank/gankly/widget/LSwitch.java b/app/src/main/java/com/gank/gankly/widget/LSwitch.java index 8475b885..72c61274 100644 --- a/app/src/main/java/com/gank/gankly/widget/LSwitch.java +++ b/app/src/main/java/com/gank/gankly/widget/LSwitch.java @@ -12,7 +12,6 @@ /** * Create by LingYan on 2016-09-01 - * Email:137387869@qq.com */ public class LSwitch extends SwitchCompat { private int mColor = 1; diff --git a/app/src/main/java/com/gank/gankly/widget/LYRelativeLayoutRipple.java b/app/src/main/java/com/gank/gankly/widget/LYRelativeLayoutRipple.java index ed6e93dd..2b909b18 100644 --- a/app/src/main/java/com/gank/gankly/widget/LYRelativeLayoutRipple.java +++ b/app/src/main/java/com/gank/gankly/widget/LYRelativeLayoutRipple.java @@ -11,7 +11,6 @@ /** * RelativeLayout 水波纹点击背景 * Create by LingYan on 2016-09-23 - * Email:137387869@qq.com */ public class LYRelativeLayoutRipple extends RelativeLayout { diff --git a/app/src/main/java/com/gank/gankly/widget/LyRecyclerView.java b/app/src/main/java/com/gank/gankly/widget/LyRecyclerView.java index 64fe481e..47cc0d45 100644 --- a/app/src/main/java/com/gank/gankly/widget/LyRecyclerView.java +++ b/app/src/main/java/com/gank/gankly/widget/LyRecyclerView.java @@ -17,7 +17,6 @@ /** * reference https://github.com/moodstrikerdd/Test_Android/blob/53ecf70a131e553a68daad2b57bfe3f09722ddc2/sidesliplist/src/main/java/com/example/sidesliplist/MyRecyclerView.java * Create by LingYan on 2016-11-07 - * Email:137387869@qq.com */ public class LyRecyclerView extends RecyclerView { diff --git a/app/src/main/java/com/gank/gankly/widget/MultipleStatusView.java b/app/src/main/java/com/gank/gankly/widget/MultipleStatusView.java index 26ee98d4..cd3ed529 100644 --- a/app/src/main/java/com/gank/gankly/widget/MultipleStatusView.java +++ b/app/src/main/java/com/gank/gankly/widget/MultipleStatusView.java @@ -15,7 +15,6 @@ /** * 包括Loading Empty Error DisNetWork界面 * Create by LingYan on 2016-06-15 - * Email:137387869@qq.com */ public class MultipleStatusView extends RelativeLayout { public static final int STATUS_CONTENT = 0x01; diff --git a/app/src/main/java/com/gank/gankly/widget/NoAlphaItemAnimator.java b/app/src/main/java/com/gank/gankly/widget/NoAlphaItemAnimator.java index 9c76a2dd..307c6e92 100644 --- a/app/src/main/java/com/gank/gankly/widget/NoAlphaItemAnimator.java +++ b/app/src/main/java/com/gank/gankly/widget/NoAlphaItemAnimator.java @@ -14,7 +14,6 @@ /** * Create by LingYan on 2016-11-08 - * Email:137387869@qq.com */ public class NoAlphaItemAnimator extends SimpleItemAnimator { diff --git a/app/src/main/java/com/gank/gankly/widget/UpdateVersionDialog.java b/app/src/main/java/com/gank/gankly/widget/UpdateVersionDialog.java index d993aed3..324e6c17 100644 --- a/app/src/main/java/com/gank/gankly/widget/UpdateVersionDialog.java +++ b/app/src/main/java/com/gank/gankly/widget/UpdateVersionDialog.java @@ -15,7 +15,6 @@ /** * Create by LingYan on 2016-09-09 - * Email:137387869@qq.com */ public class UpdateVersionDialog extends DialogFragment { public static final String UPDATE_CONTENT = "update_content"; diff --git a/app/src/main/res/layout/adapter_android.xml b/app/src/main/res/layout/adapter_android.xml index 04e965d9..2f285aec 100644 --- a/app/src/main/res/layout/adapter_android.xml +++ b/app/src/main/res/layout/adapter_android.xml @@ -1,64 +1,59 @@ - + - - - - - - - - - - - - - - - - - - + android:paddingBottom="10dp" + android:paddingEnd="12dp" + android:paddingStart="12dp" + android:paddingTop="10dp"> - + android:gravity="center_vertical" + android:orientation="horizontal"> + + + + + + - - - \ No newline at end of file + android:lineSpacingExtra="3dp" + android:text="" + android:textColor="@color/text_333333" + android:textSize="@dimen/normalSize" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/adapter_ios.xml b/app/src/main/res/layout/adapter_ios.xml index 277a3cb2..2f285aec 100644 --- a/app/src/main/res/layout/adapter_ios.xml +++ b/app/src/main/res/layout/adapter_ios.xml @@ -1,95 +1,84 @@ - + - - - - - - - - + android:paddingBottom="10dp" + android:paddingEnd="12dp" + android:paddingStart="12dp" + android:paddingTop="10dp"> - - + - - - - - - - + + android:gravity="start" + android:maxLines="1" + android:text="" + android:textColor="#23c5d9" + android:textSize="@dimen/normalSize" /> + - + - + - - - - - - \ No newline at end of file + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 8eaabdbe..5df38822 100644 --- a/build.gradle +++ b/build.gradle @@ -6,21 +6,27 @@ buildscript { } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' - //bugly - classpath 'com.tencent.bugly:symtabfileuploader:1.3.9' // lambda classpath 'me.tatarka:gradle-retrolambda:3.4.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } + ext { - + compileSdkVersion = 25 + buildToolsVersion = "26.0.1" + minSdkVersion = 14 + targetSdkVersion = 25 + + superplayerVersionCode = 1 + superplayerVersionName = "1.0" } allprojects { repositories { jcenter() + maven { url 'https://maven.google.com' } } } diff --git a/gradle.properties b/gradle.properties index 1f8a2499..a9b9bc75 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,10 +16,50 @@ # ʹndk android.useDeprecatedNdk=true # ô -#systemProp.http.proxyHost=127.0.0.1 -#systemProp.http.proxyPort=1080 -#systemProp.https.proxyHost=127.0.0.1 -#systemProp.https.proxyPort=1080 +systemProp.http.proxyHost=127.0.0.1 +systemProp.http.proxyPort=1080 +systemProp.https.proxyHost=127.0.0.1 +systemProp.https.proxyPort=1080 #support version supportVersion=25.3.1 +#klog klogVersion=1.6.0 +#retrofit +retrofitVersion=2.3.0 +retrofitConverters=2.3.0 +retrofitAdapters=2.3.0 +converterGson=2.3.0 +adapterRxjava2=2.3.0 +#gson +gsonVersion=2.7 +#logging-interceptor +loggingInterceptor=3.9.0 +#rxjava2 +rxjava=2.1.3 +rxandroid=2.0.1 +#butterknife +butterknife=8.8.1 +#okhttp +okhttp=3.9.0 +#leakcanary-android +leakcanaryandroid=1.5.4 +#glide +glide=4.1.1 +#greendao +greendao=2.1.0 +#bottom-bar +bottomBar=2.3.1 +#stetho +stethoVersion=1.5.0 +stethoOkhttp3=1.5.0 +#butterknife +butterknifeVersion=8.8.1 +butterknifeCompiler=8.8.1 +#jsoup +jsoup=1.10.3 +#crashreport +crashreportUpgrade=1.3.1 +#subsampling-scale-image-view +subsamplingVersion=3.6.0 +#gank base url +gank_server_url=http\://gank.io/api/data/ diff --git a/javalib/.gitignore b/javalib/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/javalib/.gitignore @@ -0,0 +1 @@ +/build diff --git a/javalib/build.gradle b/javalib/build.gradle new file mode 100644 index 00000000..4373d7f5 --- /dev/null +++ b/javalib/build.gradle @@ -0,0 +1,31 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 25 + buildToolsVersion "26.0.1" + + defaultConfig { + minSdkVersion 14 + targetSdkVersion 25 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + compile 'com.android.support:appcompat-v7:25.3.1' + testCompile 'junit:junit:4.12' +} diff --git a/javalib/proguard-rules.pro b/javalib/proguard-rules.pro new file mode 100644 index 00000000..f3e3ccae --- /dev/null +++ b/javalib/proguard-rules.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in D:\android\sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/javalib/src/androidTest/java/com/example/javalib/ExampleInstrumentedTest.java b/javalib/src/androidTest/java/com/example/javalib/ExampleInstrumentedTest.java new file mode 100644 index 00000000..b330c424 --- /dev/null +++ b/javalib/src/androidTest/java/com/example/javalib/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.example.javalib; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumentation test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.example.javalib.test", appContext.getPackageName()); + } +} diff --git a/javalib/src/main/AndroidManifest.xml b/javalib/src/main/AndroidManifest.xml new file mode 100644 index 00000000..01a150a9 --- /dev/null +++ b/javalib/src/main/AndroidManifest.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/javalib/src/main/res/values/strings.xml b/javalib/src/main/res/values/strings.xml new file mode 100644 index 00000000..64c94c55 --- /dev/null +++ b/javalib/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Javalib + diff --git a/javalib/src/test/java/com/example/javalib/ExampleUnitTest.java b/javalib/src/test/java/com/example/javalib/ExampleUnitTest.java new file mode 100644 index 00000000..a7aca4a1 --- /dev/null +++ b/javalib/src/test/java/com/example/javalib/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package com.example.javalib; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() throws Exception { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 925f4354..c8ca1588 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':app', ':test', ':superplayerlibrary', ':ijkplayerlibrary' +include ':app', ':superplayerlibrary', ':ijkplayerlibrary', ':javalib', ':support-ly-http', ':support-ly-rxbus' diff --git a/superplayerlibrary/build.gradle b/superplayerlibrary/build.gradle index 76450b89..77b45f1a 100644 --- a/superplayerlibrary/build.gradle +++ b/superplayerlibrary/build.gradle @@ -1,14 +1,14 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 24 - buildToolsVersion '25.0.0' + compileSdkVersion rootProject.compileSdkVersion + buildToolsVersion rootProject.buildToolsVersion defaultConfig { - minSdkVersion 14 - targetSdkVersion 24 - versionCode 1 - versionName "1.0" + minSdkVersion rootProject.minSdkVersion + targetSdkVersion rootProject.targetSdkVersion + versionCode rootProject.superplayerVersionCode + versionName rootProject.superplayerVersionName } buildTypes { release { @@ -16,11 +16,15 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + + lintOptions { + abortOnError false + } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:24.2.0' + compile "com.android.support:appcompat-v7:${supportVersion}" compile project(':ijkplayerlibrary') } diff --git a/support-ly-http/.gitignore b/support-ly-http/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/support-ly-http/.gitignore @@ -0,0 +1 @@ +/build diff --git a/support-ly-http/build.gradle b/support-ly-http/build.gradle new file mode 100644 index 00000000..11b03b98 --- /dev/null +++ b/support-ly-http/build.gradle @@ -0,0 +1,50 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion rootProject.compileSdkVersion + buildToolsVersion rootProject.buildToolsVersion + + defaultConfig { + minSdkVersion rootProject.minSdkVersion + targetSdkVersion rootProject.targetSdkVersion + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + + } + buildTypes { + debug { + minifyEnabled false + shrinkResources false + buildConfigField("String", "GANK_SERVER_ULR", "\"${gank_server_url}\"") + } + release { + minifyEnabled false + buildConfigField("String", "GANK_SERVER_ULR", "\"${gank_server_url}\"") + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + + compile "com.google.code.gson:gson:${gsonVersion}" + + compile "com.squareup.okhttp3:logging-interceptor:${loggingInterceptor}" + + compile "com.squareup.retrofit2:retrofit:${retrofitVersion}" + compile "com.squareup.retrofit2:retrofit-converters:${retrofitConverters}" + compile "com.squareup.retrofit2:retrofit-adapters:${retrofitAdapters}" + compile "com.squareup.retrofit2:converter-gson:${converterGson}" + compile "com.squareup.retrofit2:adapter-rxjava2:${adapterRxjava2}" + + compile "io.reactivex.rxjava2:rxjava:${rxjava}" + compile "io.reactivex.rxjava2:rxandroid:${rxandroid}" + + compile "com.facebook.stetho:stetho:${stethoVersion}" + compile "com.facebook.stetho:stetho-okhttp3:${stethoOkhttp3}" + + compile "com.github.zhaokaiqiang.klog:library:${klogVersion}" +} diff --git a/support-ly-http/proguard-rules.pro b/support-ly-http/proguard-rules.pro new file mode 100644 index 00000000..f3e3ccae --- /dev/null +++ b/support-ly-http/proguard-rules.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in D:\android\sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/support-ly-http/src/main/AndroidManifest.xml b/support-ly-http/src/main/AndroidManifest.xml new file mode 100644 index 00000000..ec855eb8 --- /dev/null +++ b/support-ly-http/src/main/AndroidManifest.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/BaseServer.java b/support-ly-http/src/main/java/com/leftcoding/http/api/BaseServer.java new file mode 100644 index 00000000..1e8bf146 --- /dev/null +++ b/support-ly-http/src/main/java/com/leftcoding/http/api/BaseServer.java @@ -0,0 +1,8 @@ +package com.leftcoding.http.api; + +/** + * Create by LingYan on 2017-09-29 + */ + +public abstract class BaseServer { +} diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/GankApi.java b/support-ly-http/src/main/java/com/leftcoding/http/api/GankApi.java new file mode 100644 index 00000000..7ec403d7 --- /dev/null +++ b/support-ly-http/src/main/java/com/leftcoding/http/api/GankApi.java @@ -0,0 +1,48 @@ +package com.leftcoding.http.api; + +import com.leftcoding.http.bean.ListResult; +import com.leftcoding.http.bean.PageResult; +import com.leftcoding.http.bean.ResultsBean; + +import io.reactivex.Observable; +import retrofit2.Response; +import retrofit2.http.GET; +import retrofit2.http.Path; + +/** + * Create by LingYan on 2017-09-29 + * Email:137387869@qq.com + */ + +public interface GankApi { + @GET("Android/{limit}/{page}") + Observable>> androids( + @Path("page") int page, + @Path("limit") int limit + ); + + @GET("iOS/{limit}/{page}") + Observable>> ios( + @Path("page") int page, + @Path("limit") int limit + + ); + + @GET("all/{limit}/{page}") + Observable>> allGoods( + @Path("page") int page, + @Path("limit") int limit + ); + + @GET("福利/{limit}/{page}") + Observable>> images( + @Path("page") int page, + @Path("limit") int limit + ); + + @GET("休息视频/{limit}/{page}") + Observable>> videos( + @Path("page") int page, + @Path("limit") int limit + ); +} diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/GankManager.java b/support-ly-http/src/main/java/com/leftcoding/http/api/GankManager.java new file mode 100644 index 00000000..82378eb0 --- /dev/null +++ b/support-ly-http/src/main/java/com/leftcoding/http/api/GankManager.java @@ -0,0 +1,52 @@ +package com.leftcoding.http.api; + +import android.content.Context; + +import com.leftcoding.http.bean.ListResult; +import com.leftcoding.http.bean.PageResult; +import com.leftcoding.http.bean.ResultsBean; + +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; +import retrofit2.Response; + +/** + * Create by LingYan on 2017-09-30 + */ + +public class GankManager { + private GankApi mApi; + + private GankManager(Context context) { + mApi = GankServer.with(context).api(); + } + + public static synchronized GankManager with(Context context) { + return new GankManager(context); + } + + public Observable>> androids(int page, int limit) { + return mApi.androids(page, limit) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable>> ios(int page, int limit) { + return mApi.ios(page, limit) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable>> allGoods(int limit, int page) { + return mApi.allGoods(limit, page); + } + + public Observable>> images(int limit, int page) { + return mApi.images(limit, page); + } + + public Observable>> videos(int limit, int page) { + return mApi.videos(limit, page); + } +} diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java b/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java new file mode 100644 index 00000000..94bd7140 --- /dev/null +++ b/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java @@ -0,0 +1,54 @@ +package com.leftcoding.http.api; + +import android.content.Context; + +import com.facebook.stetho.okhttp3.StethoInterceptor; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.leftcoding.http.BuildConfig; + +import okhttp3.OkHttpClient; +import retrofit2.Retrofit; +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; +import retrofit2.converter.gson.GsonConverterFactory; + +/** + * Create by LingYan on 2017-09-29 + * Email:137387869@qq.com + */ + +public class GankServer extends BaseServer { + public static final String GANK_SERVER_URL = BuildConfig.GANK_SERVER_ULR; + + private GankApi mGankApi; + + private GankServer(Context context) { + final Gson gson = new GsonBuilder() + .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") + .serializeNulls() + .create(); + + final OkHttpClient mOkHttpClient = OkHttpBuilder.get() + .addNetworkInterceptor(new StethoInterceptor()) + .addInterceptor(HttpLogging.get().build()) + .build(); + + final Retrofit retrofit = new Retrofit.Builder() + .client(mOkHttpClient) + .addConverterFactory(GsonConverterFactory.create(gson)) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) + .baseUrl(GANK_SERVER_URL) + .build(); + + mGankApi = retrofit.create(GankApi.class); + + } + + public static synchronized GankServer with(Context context) { + return new GankServer(context); + } + + public GankApi api() { + return mGankApi; + } +} diff --git a/httplib/src/main/java/com/leftcoding/http/api/HttpLogging.java b/support-ly-http/src/main/java/com/leftcoding/http/api/HttpLogging.java similarity index 100% rename from httplib/src/main/java/com/leftcoding/http/api/HttpLogging.java rename to support-ly-http/src/main/java/com/leftcoding/http/api/HttpLogging.java diff --git a/httplib/src/main/java/com/leftcoding/http/api/OkHttpBuilder.java b/support-ly-http/src/main/java/com/leftcoding/http/api/OkHttpBuilder.java similarity index 97% rename from httplib/src/main/java/com/leftcoding/http/api/OkHttpBuilder.java rename to support-ly-http/src/main/java/com/leftcoding/http/api/OkHttpBuilder.java index 6a333555..a3902800 100644 --- a/httplib/src/main/java/com/leftcoding/http/api/OkHttpBuilder.java +++ b/support-ly-http/src/main/java/com/leftcoding/http/api/OkHttpBuilder.java @@ -10,7 +10,7 @@ * Create by LingYan on 2017-09-30 * Email:137387869@qq.com */ -class OkHttpBuilder { +public class OkHttpBuilder { private static final int DEFAULT_OUT_TIME = 30; private OkHttpClient.Builder builder; diff --git a/support-ly-http/src/main/java/com/leftcoding/http/bean/BaseResult.java b/support-ly-http/src/main/java/com/leftcoding/http/bean/BaseResult.java new file mode 100644 index 00000000..4ec04b5e --- /dev/null +++ b/support-ly-http/src/main/java/com/leftcoding/http/bean/BaseResult.java @@ -0,0 +1,5 @@ +package com.leftcoding.http.bean; + +public class BaseResult { + public boolean error; +} \ No newline at end of file diff --git a/support-ly-http/src/main/java/com/leftcoding/http/bean/ListResult.java b/support-ly-http/src/main/java/com/leftcoding/http/bean/ListResult.java new file mode 100644 index 00000000..ae29e8e4 --- /dev/null +++ b/support-ly-http/src/main/java/com/leftcoding/http/bean/ListResult.java @@ -0,0 +1,12 @@ +package com.leftcoding.http.bean; + +import java.util.List; + +/** + * Create by LingYan on 2017-09-30 + * Email:137387869@qq.com + */ + +public class ListResult extends BaseResult { + public List results; +} diff --git a/support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java b/support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java new file mode 100644 index 00000000..5f0eb8a2 --- /dev/null +++ b/support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java @@ -0,0 +1,13 @@ +package com.leftcoding.http.bean; + +/** + * Create by LingYan on 2017-10-12 + */ + +public class PageResult extends ListResult { + public int nextPage; + + public int curPage; + + public boolean hasNoMore; +} diff --git a/support-ly-http/src/main/java/com/leftcoding/http/bean/ResultsBean.java b/support-ly-http/src/main/java/com/leftcoding/http/bean/ResultsBean.java new file mode 100644 index 00000000..344b7a02 --- /dev/null +++ b/support-ly-http/src/main/java/com/leftcoding/http/bean/ResultsBean.java @@ -0,0 +1,81 @@ +package com.leftcoding.http.bean; + +import android.os.Parcel; +import android.os.Parcelable; +import android.text.TextUtils; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +public class ResultsBean implements Parcelable { + @SerializedName("_id") + public String id; + public String createdAt; + public String desc; + public String publishedAt; + public String source; + public String type; + public String url; + public boolean used; + public String who; + public boolean isLoaded; + public List images; + + public ResultsBean() { + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.id); + dest.writeString(this.createdAt); + dest.writeString(this.desc); + dest.writeString(this.publishedAt); + dest.writeString(this.source); + dest.writeString(this.type); + dest.writeString(this.url); + dest.writeByte(this.used ? (byte) 1 : (byte) 0); + dest.writeString(this.who); + dest.writeByte(this.isLoaded ? (byte) 1 : (byte) 0); + dest.writeStringList(this.images); + } + + protected ResultsBean(Parcel in) { + this.id = in.readString(); + this.createdAt = in.readString(); + this.desc = in.readString(); + this.publishedAt = in.readString(); + this.source = in.readString(); + this.type = in.readString(); + this.url = in.readString(); + this.used = in.readByte() != 0; + this.who = in.readString(); + this.isLoaded = in.readByte() != 0; + this.images = in.createStringArrayList(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public ResultsBean createFromParcel(Parcel source) { + return new ResultsBean(source); + } + + @Override + public ResultsBean[] newArray(int size) { + return new ResultsBean[size]; + } + }; + + public boolean isImagesEmpty() { + return images == null || images.isEmpty(); + } + + public String getWho() { + return TextUtils.isEmpty(who) ? "佚名" : who; + } +} \ No newline at end of file diff --git a/support-ly-http/src/main/res/values/strings.xml b/support-ly-http/src/main/res/values/strings.xml new file mode 100644 index 00000000..d731f3f8 --- /dev/null +++ b/support-ly-http/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + HttpLib + diff --git a/support-ly-rxbus/.gitignore b/support-ly-rxbus/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/support-ly-rxbus/.gitignore @@ -0,0 +1 @@ +/build diff --git a/support-ly-rxbus/build.gradle b/support-ly-rxbus/build.gradle new file mode 100644 index 00000000..44b66fb7 --- /dev/null +++ b/support-ly-rxbus/build.gradle @@ -0,0 +1,27 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 25 + buildToolsVersion "26.0.2" + + defaultConfig { + minSdkVersion 14 + targetSdkVersion 25 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + compile "io.reactivex.rxjava2:rxjava:${rxjava}" + compile "io.reactivex.rxjava2:rxandroid:${rxandroid}" +} diff --git a/support-ly-rxbus/proguard-rules.pro b/support-ly-rxbus/proguard-rules.pro new file mode 100644 index 00000000..f3e3ccae --- /dev/null +++ b/support-ly-rxbus/proguard-rules.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in D:\android\sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/support-ly-rxbus/src/main/AndroidManifest.xml b/support-ly-rxbus/src/main/AndroidManifest.xml new file mode 100644 index 00000000..f7fa5bd0 --- /dev/null +++ b/support-ly-rxbus/src/main/AndroidManifest.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxBus.java b/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxBus.java new file mode 100644 index 00000000..c4a09596 --- /dev/null +++ b/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxBus.java @@ -0,0 +1,32 @@ +package com.leftcoding.rxbus; + +import io.reactivex.processors.FlowableProcessor; +import io.reactivex.processors.PublishProcessor; + +/** + * Create by LingYan on 2017-10-15 + */ + +public class RxBus { + private final FlowableProcessor mBus; + + private RxBus() { + mBus = PublishProcessor.create().toSerialized(); + } + + public synchronized void onNext(T t) { + mBus.onNext(t); + } + + public synchronized void toObservable(Class t) { + mBus.ofType(t); + } + + public static RxBus get() { + return RxBusHolder.INSTANCE; + } + + private static final class RxBusHolder { + private static final RxBus INSTANCE = new RxBus(); + } +} diff --git a/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxManager.java b/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxManager.java new file mode 100644 index 00000000..45f12d8f --- /dev/null +++ b/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxManager.java @@ -0,0 +1,48 @@ +package com.leftcoding.rxbus; + +import java.util.HashMap; + +import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.disposables.Disposable; + +/** + * Create by LingYan on 2017-10-14 + */ + +public class RxManager { + private final HashMap mDisposableHashMap = new HashMap<>(); + + private RxManager() { + + } + + public static RxManager get() { + return RxMangerHolder.INSTANCE; + } + + private static final class RxMangerHolder { + private static final RxManager INSTANCE = new RxManager(); + } + + public synchronized void add(String key, Disposable disposable) { + CompositeDisposable compositeDisposable; + if (mDisposableHashMap.containsKey(key)) { + compositeDisposable = mDisposableHashMap.get(key); + compositeDisposable.add(disposable); + } else { + compositeDisposable = new CompositeDisposable(); + compositeDisposable.add(disposable); + mDisposableHashMap.put(key, compositeDisposable); + } + } + + public synchronized void clear(String key) { + if (mDisposableHashMap.containsKey(key)) { + CompositeDisposable disposable = mDisposableHashMap.get(key); + if (!disposable.isDisposed()) { + disposable.dispose(); + } + mDisposableHashMap.remove(key); + } + } +} diff --git a/support-ly-rxbus/src/main/res/values/strings.xml b/support-ly-rxbus/src/main/res/values/strings.xml new file mode 100644 index 00000000..0b9f6c92 --- /dev/null +++ b/support-ly-rxbus/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + support-ly-rxbus + From 6f24ecfd57283ad967dfbc6e5d6a93f047616a78 Mon Sep 17 00:00:00 2001 From: leftcoding <137387869@qq.com> Date: Tue, 17 Oct 2017 20:50:04 +0800 Subject: [PATCH 03/27] =?UTF-8?q?1.=E6=95=B4=E4=BD=93=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bg_consulting_placeholder_guest.png | Bin 0 -> 621 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 app/src/main/res/drawable-xxhdpi/bg_consulting_placeholder_guest.png diff --git a/app/src/main/res/drawable-xxhdpi/bg_consulting_placeholder_guest.png b/app/src/main/res/drawable-xxhdpi/bg_consulting_placeholder_guest.png new file mode 100644 index 0000000000000000000000000000000000000000..8aafd54ca470080711217d79ba64d6264d2a46a4 GIT binary patch literal 621 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sT>(BJu0Z<#|Noypefs$E;|Emm z{{4HP0FVSK0Lnrb5Rq@+z5y9PK_GyLynFZV_3PI!U%q_v=FNi#53XOoe(l<|8#it| zdi3b++qbuG-@bS6-isG6Zr!?d_wL;%Po6w~{`}6JJ5QfJy?_7y!-o%Fy?Vu!QtAS9 zjd)3rUoZowU;p;oZ+;3UtpCbY^NBg_ne=J%nC}{YC%j=`V666ZaSZV|K6l#NswM-T zR_*yri$W%ZNwUu6G2i}s|K5c@IkOu|-uqAbd_iq_Cg;V-h;5In_PyWPm#ce%dzzz! zVW$SqG~t)4E6y^!t}van&r`#B;YqgB_m|~NDdGNXd`fM>%z67y-&FbOcRF1^P$cqS z)CBLd$v{0sI+qcvMrWbxIM z7AG-$>Yw_;lF{`7r;|d3IDeL{NZE5$CT=Zu$EC*?v2HxTf9{dzLU!FGe=diWIgc0) zIts~rUEmxOu_V2Y_0$s~{%y-8S>zR-3CeTbax7pplo$Sx_Jw^eL!^*))lv2I6O&@j zOp7l+DA~EgBhvcSMAwScq7Uk9z2q8om8 z`HkHfEG~LsD`Xd}KCt2{vx;nB+`^{GRW3^v51hAnC14%>4Z4C#zS&sx-c^WzE2tV(@hJb6Mw<&;$V6Tubi& literal 0 HcmV?d00001 From 3b5c5a1ec2bc5593a92c8bb4c83cea63a80b5a53 Mon Sep 17 00:00:00 2001 From: leftcoding <137387869@qq.com> Date: Thu, 19 Oct 2017 23:13:16 +0800 Subject: [PATCH 04/27] =?UTF-8?q?1.=E6=95=B4=E4=BD=93=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 8 ++ app/build.gradle | 4 +- app/proguard-rules.pro | 2 +- app/src/main/AndroidManifest.xml | 1 + .../gankly/config/glide/MyGlideModule.java | 6 +- .../glide/OkHttpProgressGlideModule.java | 13 +-- .../gankly/config/glide/OkHttpUrlLoader.java | 84 +++++++++++++++++++ gradle.properties | 10 +-- .../src/main/java/com/example/javalib/A.java | 73 ++++++++++++++++ support-ly-http/build.gradle | 4 +- .../com/leftcoding/http/api/GankServer.java | 1 + .../http/{api => intercept}/HttpLogging.java | 5 +- test.txt | 0 13 files changed, 191 insertions(+), 20 deletions(-) create mode 100644 app/src/main/java/com/gank/gankly/config/glide/OkHttpUrlLoader.java create mode 100644 javalib/src/main/java/com/example/javalib/A.java rename support-ly-http/src/main/java/com/leftcoding/http/{api => intercept}/HttpLogging.java (80%) delete mode 100644 test.txt diff --git a/.gitignore b/.gitignore index c3494e32..fc4475bb 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,11 @@ app/src/main/res/drawable-hdpi/ app/src/main/res/drawable-mdpi/ app/src/main/res/drawable-xhdpi/ projectFilesBackup/ + +/javalib/ +javalib/libs/ +javalib/src/main/res/drawable/ +support-ly-http/libs/ +support-ly-http/src/main/res/drawable/ +support-ly-rxbus/libs/ +support-ly-rxbus/src/main/res/drawable/ diff --git a/app/build.gradle b/app/build.gradle index 8afdb95f..13666abb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,6 +20,8 @@ android { // 设置支持的SO库架构 abiFilters 'armeabi', 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a' } + + buildConfigField("String", "GANK_SERVER_ULR", "\"${gank_server_url}\"") } //执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关闭 @@ -42,7 +44,6 @@ android { debug { minifyEnabled false shrinkResources false - buildConfigField("String", "GANK_SERVER_ULR", "\"${gank_server_url}\"") } release { minifyEnabled true @@ -101,6 +102,7 @@ dependencies { debugCompile "com.squareup.leakcanary:leakcanary-android:${leakcanaryandroid}" releaseCompile "com.squareup.leakcanary:leakcanary-android-no-op:${leakcanaryandroid}" compile "com.github.bumptech.glide:glide:${glide}" + compile "com.github.bumptech.glide:annotations:${glide}" compile "com.github.bumptech.glide:okhttp3-integration:${glide}" annotationProcessor "com.github.bumptech.glide:compiler:${glide}" //greendao 数据库 diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index e223b0e0..0ad9d7cd 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -59,7 +59,7 @@ #################### Glide #################### -keep public class * implements com.bumptech.glide.module.GlideModule --keep public class * extends com.bumptech.glide.AppGlideModule +-keep public class * extends com.bumptech.glide.module.AppGlideModule -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a4cf55a7..1ef6f544 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -107,6 +107,7 @@ + diff --git a/app/src/main/java/com/gank/gankly/config/glide/MyGlideModule.java b/app/src/main/java/com/gank/gankly/config/glide/MyGlideModule.java index 117aadaf..5a6a55b1 100644 --- a/app/src/main/java/com/gank/gankly/config/glide/MyGlideModule.java +++ b/app/src/main/java/com/gank/gankly/config/glide/MyGlideModule.java @@ -1,6 +1,7 @@ package com.gank.gankly.config.glide; import android.content.Context; +import android.util.Log; import com.bumptech.glide.Glide; import com.bumptech.glide.GlideBuilder; @@ -15,6 +16,7 @@ import com.gank.gankly.utils.gilde.WifiOnlyLoader; import java.io.InputStream; + @GlideModule public class MyGlideModule extends AppGlideModule { @Override @@ -27,10 +29,10 @@ public void applyOptions(Context context, GlideBuilder builder) { super.applyOptions(context, builder); String diskCache = FileUtils.getGlideDefaultPath(context); builder.setDiskCache(new DiskLruCacheFactory(diskCache, 100 * 1024 * 1024)); -// builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); builder.setDefaultRequestOptions(new RequestOptions() - .format(DecodeFormat.PREFER_ARGB_8888) + .format(DecodeFormat.PREFER_ARGB_8888) ); + builder.setLogLevel(Log.DEBUG); } @Override diff --git a/app/src/main/java/com/gank/gankly/config/glide/OkHttpProgressGlideModule.java b/app/src/main/java/com/gank/gankly/config/glide/OkHttpProgressGlideModule.java index b1525e1f..674b5269 100644 --- a/app/src/main/java/com/gank/gankly/config/glide/OkHttpProgressGlideModule.java +++ b/app/src/main/java/com/gank/gankly/config/glide/OkHttpProgressGlideModule.java @@ -7,6 +7,7 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.Registry; +import com.bumptech.glide.annotation.GlideModule; import com.bumptech.glide.load.model.GlideUrl; import com.bumptech.glide.module.LibraryGlideModule; @@ -39,8 +40,8 @@ import okio.Source; // TODO add -// TODO add -// or not use 'okhttp@aar' in Gradle depdendencies +// TODO add { + + private final Call.Factory client; + + public OkHttpUrlLoader(Call.Factory client) { + this.client = client; + } + + @Override + public boolean handles(GlideUrl url) { + return true; + } + + @Override + public LoadData buildLoadData(GlideUrl model, int width, int height, + Options options) { + return new LoadData<>(model, new OkHttpStreamFetcher(client, model)); + } + + /** + * The default factory for {@link OkHttpUrlLoader}s. + */ + public static class Factory implements ModelLoaderFactory { + private static volatile Call.Factory internalClient; + private Call.Factory client; + private Context mContext; + + private static Call.Factory getInternalClient() { + if (internalClient == null) { + synchronized (Factory.class) { + if (internalClient == null) { + internalClient = new OkHttpClient(); + } + } + } + return internalClient; + } + + /** + * Constructor for a new Factory that runs requests using a static singleton client. + */ + public Factory(Context context) { + this(getInternalClient()); + } + + /** + * Constructor for a new Factory that runs requests using given client. + * + * @param client this is typically an instance of {@code OkHttpClient}. + */ + public Factory(Call.Factory client) { + this.client = client; + } + + @Override + public ModelLoader build(MultiModelLoaderFactory multiFactory) { + return new OkHttpUrlLoader(client); + } + + @Override + public void teardown() { + // Do nothing, this instance doesn't own the client. + } + } +} diff --git a/gradle.properties b/gradle.properties index a9b9bc75..902f3ad9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,10 +16,10 @@ # ʹndk android.useDeprecatedNdk=true # ô -systemProp.http.proxyHost=127.0.0.1 -systemProp.http.proxyPort=1080 -systemProp.https.proxyHost=127.0.0.1 -systemProp.https.proxyPort=1080 +#systemProp.http.proxyHost=127.0.0.1 +#systemProp.http.proxyPort=1080 +#systemProp.https.proxyHost=127.0.0.1 +#systemProp.https.proxyPort=1080 #support version supportVersion=25.3.1 #klog @@ -44,7 +44,7 @@ okhttp=3.9.0 #leakcanary-android leakcanaryandroid=1.5.4 #glide -glide=4.1.1 +glide=4.2.0 #greendao greendao=2.1.0 #bottom-bar diff --git a/javalib/src/main/java/com/example/javalib/A.java b/javalib/src/main/java/com/example/javalib/A.java new file mode 100644 index 00000000..1a8838cc --- /dev/null +++ b/javalib/src/main/java/com/example/javalib/A.java @@ -0,0 +1,73 @@ +package com.example.javalib; + +/** + * Create by LingYan on 2017-10-17 + */ + +public class A { + public static B mB; + public static A ma; + + public A() { + + } + + public static A getA() { + if (ma == null) { + ma = new A(); + } + return ma; + } + + public B getB() { + return mB; + } + + public class W extends B { + public W() { + + } + + @Override + public void change(String s) { + + } + } + + public class C extends B { + + @Override + public void change(String s) { + System.out.println("s" + s + ".C"); + } + } + + public class D extends B { + + @Override + public void change(String s) { + System.out.println("s" + s + ".D"); + } + } + + public void setA(B b) { + this.mB = b; + b.change("333"); + } + + public class E extends B { + + @Override + public void change(String s) { + System.out.println("s" + s + ".E"); + } + } + + public static void main(String[] args) { + B b = new A().new E(); + A.getA().getB().change("333"); + } +} + + + diff --git a/support-ly-http/build.gradle b/support-ly-http/build.gradle index 11b03b98..7094435c 100644 --- a/support-ly-http/build.gradle +++ b/support-ly-http/build.gradle @@ -11,17 +11,15 @@ android { versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - + buildConfigField("String", "GANK_SERVER_ULR", "\"${gank_server_url}\"") } buildTypes { debug { minifyEnabled false shrinkResources false - buildConfigField("String", "GANK_SERVER_ULR", "\"${gank_server_url}\"") } release { minifyEnabled false - buildConfigField("String", "GANK_SERVER_ULR", "\"${gank_server_url}\"") proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java b/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java index 94bd7140..4306709e 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java +++ b/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java @@ -6,6 +6,7 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.leftcoding.http.BuildConfig; +import com.leftcoding.http.intercept.HttpLogging; import okhttp3.OkHttpClient; import retrofit2.Retrofit; diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/HttpLogging.java b/support-ly-http/src/main/java/com/leftcoding/http/intercept/HttpLogging.java similarity index 80% rename from support-ly-http/src/main/java/com/leftcoding/http/api/HttpLogging.java rename to support-ly-http/src/main/java/com/leftcoding/http/intercept/HttpLogging.java index 519e73f2..4f38e988 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/api/HttpLogging.java +++ b/support-ly-http/src/main/java/com/leftcoding/http/intercept/HttpLogging.java @@ -1,7 +1,8 @@ -package com.leftcoding.http.api; +package com.leftcoding.http.intercept; import android.support.annotation.NonNull; +import com.leftcoding.http.BuildConfig; import com.socks.library.KLog; import okhttp3.logging.HttpLoggingInterceptor; @@ -22,7 +23,7 @@ public void log(@NonNull String message) { } }); - logging.setLevel(HttpLoggingInterceptor.Level.BODY); + logging.setLevel(BuildConfig.DEBUG ? HttpLoggingInterceptor.Level.BODY : HttpLoggingInterceptor.Level.NONE); } public HttpLoggingInterceptor build() { diff --git a/test.txt b/test.txt deleted file mode 100644 index e69de29b..00000000 From fe8c921a94d288dfe29613406c4798a071219e21 Mon Sep 17 00:00:00 2001 From: leftcoding <137387869@qq.com> Date: Sat, 18 Nov 2017 16:41:27 +0800 Subject: [PATCH 05/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 16 - app/build.gradle | 86 +-- .../ui/history/BrowseHistoryFragment.java | 2 - .../gank/gankly/ui/main/IndexFragment.java | 5 +- .../gankly/widget/NoAlphaItemAnimator.java | 663 ------------------ build.gradle | 13 +- gradle.properties | 67 +- gradle/wrapper/gradle-wrapper.properties | 4 +- ijkplayerlibrary/build.gradle | 2 +- .../ijk/media/player/ApplicationTest.java | 13 - .../ijk/media/player/ExampleUnitTest.java | 15 - javalib/build.gradle | 2 +- superplayerlibrary/build.gradle | 1 + support-ly-http/build.gradle | 1 + 14 files changed, 83 insertions(+), 807 deletions(-) delete mode 100644 app/src/main/java/com/gank/gankly/widget/NoAlphaItemAnimator.java delete mode 100644 ijkplayerlibrary/src/androidTest/java/tv/danmaku/ijk/media/player/ApplicationTest.java delete mode 100644 ijkplayerlibrary/src/test/java/tv/danmaku/ijk/media/player/ExampleUnitTest.java diff --git a/.gitignore b/.gitignore index fc4475bb..6396f9f9 100644 --- a/.gitignore +++ b/.gitignore @@ -40,21 +40,5 @@ captures/ # Keystore files *.jks -app/src/androidTest/ -app/src/test/ -app/src/testDebug/ -test/libs/ -/test/ -app/src/main/java/com/gank/gankly/ui/baisi/video/ -app/src/main/res/drawable-hdpi/ -app/src/main/res/drawable-mdpi/ -app/src/main/res/drawable-xhdpi/ projectFilesBackup/ -/javalib/ -javalib/libs/ -javalib/src/main/res/drawable/ -support-ly-http/libs/ -support-ly-http/src/main/res/drawable/ -support-ly-rxbus/libs/ -support-ly-rxbus/src/main/res/drawable/ diff --git a/app/build.gradle b/app/build.gradle index 13666abb..7dbb34e7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,7 +1,5 @@ apply plugin: 'com.android.application' -//rolambda -apply plugin: 'me.tatarka.retrolambda' //findbugs apply plugin: "findbugs" @@ -10,8 +8,8 @@ android { buildToolsVersion rootProject.buildToolsVersion defaultConfig { applicationId "com.gank.gankly" - minSdkVersion 21 - targetSdkVersion 25 + minSdkVersion rootProject.minSdkVersion + targetSdkVersion rootProject.targetSdkVersion versionCode 4 versionName "2.1.1" // 4 2.1.1 @@ -81,52 +79,62 @@ android { } dependencies { - compile fileTree(include: ['*.jar'], dir: 'libs') + implementation fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' - compile project(':superplayerlibrary') - compile "com.android.support:appcompat-v7:${supportVersion}" - compile "com.android.support:design:${supportVersion}" - compile "com.android.support:cardview-v7:${supportVersion}" - compile "com.android.support:recyclerview-v7:${supportVersion}" - compile "com.android.support:support-v4:${supportVersion}" - compile "com.github.zhaokaiqiang.klog:library:${klogVersion}" - compile "com.jakewharton:butterknife:${butterknife}" + + implementation project(':support-ly-http') + implementation project(':support-ly-rxbus') + implementation project(':superplayerlibrary') + + implementation "com.android.support:appcompat-v7:${supportVersion}" + implementation "com.android.support:design:${supportVersion}" + implementation "com.android.support:cardview-v7:${supportVersion}" + implementation "com.android.support:recyclerview-v7:${supportVersion}" + implementation "com.github.zhaokaiqiang.klog:library:${klogVersion}" + + implementation "com.jakewharton:butterknife:${butterknife}" annotationProcessor "com.jakewharton:butterknife-compiler:${butterknife}" - compile "com.squareup.retrofit2:retrofit:${retrofitVersion}" - compile "com.squareup.retrofit2:retrofit-converters:${retrofitConverters}" - compile "com.squareup.retrofit2:retrofit-adapters:${retrofitAdapters}" - compile "com.squareup.retrofit2:converter-gson:${converterGson}" - compile "com.squareup.retrofit2:adapter-rxjava2:${adapterRxjava2}" - compile "com.squareup.okhttp3:okhttp:${okhttp}" - compile "com.squareup.okhttp3:logging-interceptor:${okhttp}" + + implementation "com.squareup.retrofit2:retrofit:${retrofitVersion}" + implementation "com.squareup.retrofit2:retrofit-converters:${retrofitConverters}" + implementation "com.squareup.retrofit2:retrofit-adapters:${retrofitAdapters}" + implementation "com.squareup.retrofit2:converter-gson:${converterGson}" + implementation "com.squareup.retrofit2:adapter-rxjava2:${adapterRxjava2}" + + implementation "com.squareup.okhttp3:okhttp:${okhttp}" + implementation "com.squareup.okhttp3:logging-interceptor:${okhttp}" + debugCompile "com.squareup.leakcanary:leakcanary-android:${leakcanaryandroid}" releaseCompile "com.squareup.leakcanary:leakcanary-android-no-op:${leakcanaryandroid}" - compile "com.github.bumptech.glide:glide:${glide}" - compile "com.github.bumptech.glide:annotations:${glide}" - compile "com.github.bumptech.glide:okhttp3-integration:${glide}" + + implementation "com.github.bumptech.glide:glide:${glide}" + implementation "com.github.bumptech.glide:annotations:${glide}" + implementation "com.github.bumptech.glide:okhttp3-integration:${glide}" annotationProcessor "com.github.bumptech.glide:compiler:${glide}" + //greendao 数据库 - compile "de.greenrobot:greendao:${greendao}" - compile "de.greenrobot:greendao-generator:${greendao}" + implementation "de.greenrobot:greendao:${greendao}" + implementation "de.greenrobot:greendao-generator:${greendao}" + //chrome stetho 数据库查看 - compile "com.facebook.stetho:stetho:${stethoVersion}" - compile "com.facebook.stetho:stetho-okhttp3:${stethoOkhttp3}" + implementation "com.facebook.stetho:stetho:${stethoVersion}" + implementation "com.facebook.stetho:stetho-okhttp3:${stethoOkhttp3}" + // recyclerview-animators - compile 'jp.wasabeef:recyclerview-animators:2.2.3' + implementation 'jp.wasabeef:recyclerview-animators:2.2.3' + //jsoup - compile "org.jsoup:jsoup:${jsoup}" - //底部导航 - compile "com.roughike:bottom-bar:${bottomBar}" - //视频库 + implementation "org.jsoup:jsoup:${jsoup}" - // compile 'com.supercwn.superrecycleview:superlibrary:1.2.0' + //底部导航 + implementation "com.roughike:bottom-bar:${bottomBar}" //大图库 - compile "com.davemorrissey.labs:subsampling-scale-image-view:${subsamplingVersion}" + implementation "com.davemorrissey.labs:subsampling-scale-image-view:${subsamplingVersion}" + //rxjava2 - compile "io.reactivex.rxjava2:rxjava:${rxjava}" - compile "io.reactivex.rxjava2:rxandroid:${rxandroid}" - compile "com.tencent.bugly:crashreport_upgrade:${crashreportUpgrade}" - compile project(':support-ly-http') - compile project(':support-ly-rxbus') + implementation "io.reactivex.rxjava2:rxjava:${rxjava}" + implementation "io.reactivex.rxjava2:rxandroid:${rxandroid}" + implementation "com.tencent.bugly:crashreport_upgrade:${crashreportUpgrade}" + } diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java index 5dbe73b9..6439fab1 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java @@ -21,7 +21,6 @@ import com.gank.gankly.widget.LyRecyclerView; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; -import com.gank.gankly.widget.NoAlphaItemAnimator; import java.util.List; @@ -65,7 +64,6 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { mToolbar.setNavigationOnClickListener(v -> mActivity.onBackPressed()); mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity)); - mSwipeRefreshLayout.getRecyclerView().setItemAnimator(new NoAlphaItemAnimator()); mSwipeRefreshLayout.setILyRecycler(new LyRecyclerView.ILyRecycler() { @Override public void removeRecycle(int pos) { diff --git a/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java b/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java index 4545d908..2cd2fa57 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java @@ -16,9 +16,9 @@ import com.gank.gankly.bean.CheckVersion; import com.gank.gankly.config.Constants; import com.gank.gankly.network.DownloadProgressListener; +import com.gank.gankly.ui.android.AndroidFragment; import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.base.fragment.SupportFragment; -import com.gank.gankly.ui.android.AndroidFragment; import com.gank.gankly.ui.ios.IosFragment; import com.gank.gankly.ui.main.welfare.WelfareFragment; import com.gank.gankly.view.ILauncher; @@ -71,8 +71,7 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { mTitles.add(Constants.IOS); mTitles.add(Constants.WELFRAE); - GankPagerAdapter mPagerAdapter = new GankPagerAdapter(mActivity.getSupportFragmentManager(), - mList, mTitles); + GankPagerAdapter mPagerAdapter = new GankPagerAdapter(getChildFragmentManager(), mList, mTitles); mViewPager.setAdapter(mPagerAdapter); mViewPager.setOffscreenPageLimit(1); mViewPager.addOnPageChangeListener(this); diff --git a/app/src/main/java/com/gank/gankly/widget/NoAlphaItemAnimator.java b/app/src/main/java/com/gank/gankly/widget/NoAlphaItemAnimator.java deleted file mode 100644 index 307c6e92..00000000 --- a/app/src/main/java/com/gank/gankly/widget/NoAlphaItemAnimator.java +++ /dev/null @@ -1,663 +0,0 @@ -package com.gank.gankly.widget; - -import android.support.annotation.NonNull; -import android.support.v4.animation.AnimatorCompatHelper; -import android.support.v4.view.ViewCompat; -import android.support.v4.view.ViewPropertyAnimatorCompat; -import android.support.v4.view.ViewPropertyAnimatorListener; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.SimpleItemAnimator; -import android.view.View; - -import java.util.ArrayList; -import java.util.List; - -/** - * Create by LingYan on 2016-11-08 - */ - -public class NoAlphaItemAnimator extends SimpleItemAnimator { - private static final boolean DEBUG = false; - - private ArrayList mPendingRemovals = new ArrayList<>(); - private ArrayList mPendingAdditions = new ArrayList<>(); - private ArrayList mPendingMoves = new ArrayList<>(); - private ArrayList mPendingChanges = new ArrayList<>(); - - private ArrayList> mAdditionsList = new ArrayList<>(); - private ArrayList> mMovesList = new ArrayList<>(); - private ArrayList> mChangesList = new ArrayList<>(); - - private ArrayList mAddAnimations = new ArrayList<>(); - private ArrayList mMoveAnimations = new ArrayList<>(); - private ArrayList mRemoveAnimations = new ArrayList<>(); - private ArrayList mChangeAnimations = new ArrayList<>(); - - private static class MoveInfo { - public RecyclerView.ViewHolder holder; - public int fromX, fromY, toX, toY; - - private MoveInfo(RecyclerView.ViewHolder holder, int fromX, int fromY, int toX, int toY) { - this.holder = holder; - this.fromX = fromX; - this.fromY = fromY; - this.toX = toX; - this.toY = toY; - } - } - - private static class ChangeInfo { - public RecyclerView.ViewHolder oldHolder, newHolder; - public int fromX, fromY, toX, toY; - - private ChangeInfo(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder) { - this.oldHolder = oldHolder; - this.newHolder = newHolder; - } - - private ChangeInfo(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder, - int fromX, int fromY, int toX, int toY) { - this(oldHolder, newHolder); - this.fromX = fromX; - this.fromY = fromY; - this.toX = toX; - this.toY = toY; - } - - @Override - public String toString() { - return "ChangeInfo{" + - "oldHolder=" + oldHolder + - ", newHolder=" + newHolder + - ", fromX=" + fromX + - ", fromY=" + fromY + - ", toX=" + toX + - ", toY=" + toY + - '}'; - } - } - - @Override - public void runPendingAnimations() { - boolean removalsPending = !mPendingRemovals.isEmpty(); - boolean movesPending = !mPendingMoves.isEmpty(); - boolean changesPending = !mPendingChanges.isEmpty(); - boolean additionsPending = !mPendingAdditions.isEmpty(); - if (!removalsPending && !movesPending && !additionsPending && !changesPending) { - // nothing to animate - return; - } - // First, remove stuff - for (RecyclerView.ViewHolder holder : mPendingRemovals) { - animateRemoveImpl(holder); - } - mPendingRemovals.clear(); - // Next, move stuff - if (movesPending) { - final ArrayList moves = new ArrayList<>(); - moves.addAll(mPendingMoves); - mMovesList.add(moves); - mPendingMoves.clear(); - Runnable mover = new Runnable() { - @Override - public void run() { - for (NoAlphaItemAnimator.MoveInfo moveInfo : moves) { - animateMoveImpl(moveInfo.holder, moveInfo.fromX, moveInfo.fromY, - moveInfo.toX, moveInfo.toY); - } - moves.clear(); - mMovesList.remove(moves); - } - }; - if (removalsPending) { - View view = moves.get(0).holder.itemView; - ViewCompat.postOnAnimationDelayed(view, mover, getRemoveDuration()); - } else { - mover.run(); - } - } - // Next, change stuff, to run in parallel with move animations - if (changesPending) { - final ArrayList changes = new ArrayList<>(); - changes.addAll(mPendingChanges); - mChangesList.add(changes); - mPendingChanges.clear(); - Runnable changer = new Runnable() { - @Override - public void run() { - for (NoAlphaItemAnimator.ChangeInfo change : changes) { - animateChangeImpl(change); - } - changes.clear(); - mChangesList.remove(changes); - } - }; - if (removalsPending) { - RecyclerView.ViewHolder holder = changes.get(0).oldHolder; - ViewCompat.postOnAnimationDelayed(holder.itemView, changer, getRemoveDuration()); - } else { - changer.run(); - } - } - // Next, add stuff - if (additionsPending) { - final ArrayList additions = new ArrayList<>(); - additions.addAll(mPendingAdditions); - mAdditionsList.add(additions); - mPendingAdditions.clear(); - Runnable adder = new Runnable() { - @Override - public void run() { - for (RecyclerView.ViewHolder holder : additions) { - animateAddImpl(holder); - } - additions.clear(); - mAdditionsList.remove(additions); - } - }; - if (removalsPending || movesPending || changesPending) { - long removeDuration = removalsPending ? getRemoveDuration() : 0; - long moveDuration = movesPending ? getMoveDuration() : 0; - long changeDuration = changesPending ? getChangeDuration() : 0; - long totalDelay = removeDuration + Math.max(moveDuration, changeDuration); - View view = additions.get(0).itemView; - ViewCompat.postOnAnimationDelayed(view, adder, totalDelay); - } else { - adder.run(); - } - } - } - - @Override - public boolean animateRemove(final RecyclerView.ViewHolder holder) { - resetAnimation(holder); - mPendingRemovals.add(holder); - return true; - } - - private void animateRemoveImpl(final RecyclerView.ViewHolder holder) { - final View view = holder.itemView; - final ViewPropertyAnimatorCompat animation = ViewCompat.animate(view); - mRemoveAnimations.add(holder); - animation.setDuration(getRemoveDuration()) - .alpha(0).setListener(new NoAlphaItemAnimator.VpaListenerAdapter() { - @Override - public void onAnimationStart(View view) { - dispatchRemoveStarting(holder); - } - - @Override - public void onAnimationEnd(View view) { - animation.setListener(null); - ViewCompat.setAlpha(view, 1); - dispatchRemoveFinished(holder); - mRemoveAnimations.remove(holder); - dispatchFinishedWhenDone(); - } - }).start(); - } - - @Override - public boolean animateAdd(final RecyclerView.ViewHolder holder) { - resetAnimation(holder); - ViewCompat.setAlpha(holder.itemView, 0); - mPendingAdditions.add(holder); - return true; - } - - private void animateAddImpl(final RecyclerView.ViewHolder holder) { - final View view = holder.itemView; - final ViewPropertyAnimatorCompat animation = ViewCompat.animate(view); - mAddAnimations.add(holder); - animation.alpha(1).setDuration(getAddDuration()). - setListener(new NoAlphaItemAnimator.VpaListenerAdapter() { - @Override - public void onAnimationStart(View view) { - dispatchAddStarting(holder); - } - - @Override - public void onAnimationCancel(View view) { - ViewCompat.setAlpha(view, 1); - } - - @Override - public void onAnimationEnd(View view) { - animation.setListener(null); - dispatchAddFinished(holder); - mAddAnimations.remove(holder); - dispatchFinishedWhenDone(); - } - }).start(); - } - - @Override - public boolean animateMove(final RecyclerView.ViewHolder holder, int fromX, int fromY, - int toX, int toY) { - final View view = holder.itemView; - fromX += ViewCompat.getTranslationX(holder.itemView); - fromY += ViewCompat.getTranslationY(holder.itemView); - resetAnimation(holder); - int deltaX = toX - fromX; - int deltaY = toY - fromY; - if (deltaX == 0 && deltaY == 0) { - dispatchMoveFinished(holder); - return false; - } - if (deltaX != 0) { - ViewCompat.setTranslationX(view, -deltaX); - } - if (deltaY != 0) { - ViewCompat.setTranslationY(view, -deltaY); - } - mPendingMoves.add(new NoAlphaItemAnimator.MoveInfo(holder, fromX, fromY, toX, toY)); - return true; - } - - private void animateMoveImpl(final RecyclerView.ViewHolder holder, int fromX, int fromY, int toX, int toY) { - final View view = holder.itemView; - final int deltaX = toX - fromX; - final int deltaY = toY - fromY; - if (deltaX != 0) { - ViewCompat.animate(view).translationX(0); - } - if (deltaY != 0) { - ViewCompat.animate(view).translationY(0); - } - // TODO: make EndActions end listeners instead, since end actions aren't called when - // vpas are canceled (and can't end them. why?) - // need listener functionality in VPACompat for this. Ick. - final ViewPropertyAnimatorCompat animation = ViewCompat.animate(view); - mMoveAnimations.add(holder); - animation.setDuration(getMoveDuration()).setListener(new NoAlphaItemAnimator.VpaListenerAdapter() { - @Override - public void onAnimationStart(View view) { - dispatchMoveStarting(holder); - } - - @Override - public void onAnimationCancel(View view) { - if (deltaX != 0) { - ViewCompat.setTranslationX(view, 0); - } - if (deltaY != 0) { - ViewCompat.setTranslationY(view, 0); - } - } - - @Override - public void onAnimationEnd(View view) { - animation.setListener(null); - dispatchMoveFinished(holder); - mMoveAnimations.remove(holder); - dispatchFinishedWhenDone(); - } - }).start(); - } - - @Override - public boolean animateChange(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder, - int fromX, int fromY, int toX, int toY) { - if (oldHolder == newHolder) { - // Don't know how to run change animations when the same view holder is re-used. - // run a move animation to handle position changes. - return animateMove(oldHolder, fromX, fromY, toX, toY); - } - final float prevTranslationX = ViewCompat.getTranslationX(oldHolder.itemView); - final float prevTranslationY = ViewCompat.getTranslationY(oldHolder.itemView); - final float prevAlpha = ViewCompat.getAlpha(oldHolder.itemView); - resetAnimation(oldHolder); - int deltaX = (int) (toX - fromX - prevTranslationX); - int deltaY = (int) (toY - fromY - prevTranslationY); - // recover prev translation state after ending animation - ViewCompat.setTranslationX(oldHolder.itemView, prevTranslationX); - ViewCompat.setTranslationY(oldHolder.itemView, prevTranslationY); - ViewCompat.setAlpha(oldHolder.itemView, prevAlpha); - if (newHolder != null) { - // carry over translation values - resetAnimation(newHolder); - ViewCompat.setTranslationX(newHolder.itemView, -deltaX); - ViewCompat.setTranslationY(newHolder.itemView, -deltaY); - ViewCompat.setAlpha(newHolder.itemView, 0); - } - mPendingChanges.add(new NoAlphaItemAnimator.ChangeInfo(oldHolder, newHolder, fromX, fromY, toX, toY)); - return true; - } - - private void animateChangeImpl(final NoAlphaItemAnimator.ChangeInfo changeInfo) { - final RecyclerView.ViewHolder holder = changeInfo.oldHolder; - final View view = holder == null ? null : holder.itemView; - final RecyclerView.ViewHolder newHolder = changeInfo.newHolder; - final View newView = newHolder != null ? newHolder.itemView : null; - if (view != null) { - final ViewPropertyAnimatorCompat oldViewAnim = ViewCompat.animate(view).setDuration( - getChangeDuration()); - mChangeAnimations.add(changeInfo.oldHolder); - oldViewAnim.translationX(changeInfo.toX - changeInfo.fromX); - oldViewAnim.translationY(changeInfo.toY - changeInfo.fromY); -// oldViewAnim.alpha(0).setListener(new NoAlphaItemAnimator.VpaListenerAdapter() { - oldViewAnim.setListener(new NoAlphaItemAnimator.VpaListenerAdapter() { - @Override - public void onAnimationStart(View view) { - dispatchChangeStarting(changeInfo.oldHolder, true); - } - - @Override - public void onAnimationEnd(View view) { - oldViewAnim.setListener(null); - ViewCompat.setAlpha(view, 1); - ViewCompat.setTranslationX(view, 0); - ViewCompat.setTranslationY(view, 0); - dispatchChangeFinished(changeInfo.oldHolder, true); - mChangeAnimations.remove(changeInfo.oldHolder); - dispatchFinishedWhenDone(); - } - }).start(); - } - if (newView != null) { - final ViewPropertyAnimatorCompat newViewAnimation = ViewCompat.animate(newView); - mChangeAnimations.add(changeInfo.newHolder); - newViewAnimation.translationX(0).translationY(0).setDuration(getChangeDuration()). -// alpha(1).setListener(new NoAlphaItemAnimator.VpaListenerAdapter() { - setListener(new NoAlphaItemAnimator.VpaListenerAdapter() { - @Override - public void onAnimationStart(View view) { - dispatchChangeStarting(changeInfo.newHolder, false); - } - - @Override - public void onAnimationEnd(View view) { - newViewAnimation.setListener(null); - ViewCompat.setAlpha(newView, 1); - ViewCompat.setTranslationX(newView, 0); - ViewCompat.setTranslationY(newView, 0); - dispatchChangeFinished(changeInfo.newHolder, false); - mChangeAnimations.remove(changeInfo.newHolder); - dispatchFinishedWhenDone(); - } - }).start(); - } - } - - private void endChangeAnimation(List infoList, RecyclerView.ViewHolder item) { - for (int i = infoList.size() - 1; i >= 0; i--) { - NoAlphaItemAnimator.ChangeInfo changeInfo = infoList.get(i); - if (endChangeAnimationIfNecessary(changeInfo, item)) { - if (changeInfo.oldHolder == null && changeInfo.newHolder == null) { - infoList.remove(changeInfo); - } - } - } - } - - private void endChangeAnimationIfNecessary(NoAlphaItemAnimator.ChangeInfo changeInfo) { - if (changeInfo.oldHolder != null) { - endChangeAnimationIfNecessary(changeInfo, changeInfo.oldHolder); - } - if (changeInfo.newHolder != null) { - endChangeAnimationIfNecessary(changeInfo, changeInfo.newHolder); - } - } - - private boolean endChangeAnimationIfNecessary(NoAlphaItemAnimator.ChangeInfo changeInfo, RecyclerView.ViewHolder item) { - boolean oldItem = false; - if (changeInfo.newHolder == item) { - changeInfo.newHolder = null; - } else if (changeInfo.oldHolder == item) { - changeInfo.oldHolder = null; - oldItem = true; - } else { - return false; - } - ViewCompat.setAlpha(item.itemView, 1); - ViewCompat.setTranslationX(item.itemView, 0); - ViewCompat.setTranslationY(item.itemView, 0); - dispatchChangeFinished(item, oldItem); - return true; - } - - @Override - public void endAnimation(RecyclerView.ViewHolder item) { - final View view = item.itemView; - // this will trigger end callback which should set properties to their target values. - ViewCompat.animate(view).cancel(); - // TODO if some other animations are chained to end, how do we cancel them as well? - for (int i = mPendingMoves.size() - 1; i >= 0; i--) { - NoAlphaItemAnimator.MoveInfo moveInfo = mPendingMoves.get(i); - if (moveInfo.holder == item) { - ViewCompat.setTranslationY(view, 0); - ViewCompat.setTranslationX(view, 0); - dispatchMoveFinished(item); - mPendingMoves.remove(i); - } - } - endChangeAnimation(mPendingChanges, item); - if (mPendingRemovals.remove(item)) { - ViewCompat.setAlpha(view, 1); - dispatchRemoveFinished(item); - } - if (mPendingAdditions.remove(item)) { - ViewCompat.setAlpha(view, 1); - dispatchAddFinished(item); - } - - for (int i = mChangesList.size() - 1; i >= 0; i--) { - ArrayList changes = mChangesList.get(i); - endChangeAnimation(changes, item); - if (changes.isEmpty()) { - mChangesList.remove(i); - } - } - for (int i = mMovesList.size() - 1; i >= 0; i--) { - ArrayList moves = mMovesList.get(i); - for (int j = moves.size() - 1; j >= 0; j--) { - NoAlphaItemAnimator.MoveInfo moveInfo = moves.get(j); - if (moveInfo.holder == item) { - ViewCompat.setTranslationY(view, 0); - ViewCompat.setTranslationX(view, 0); - dispatchMoveFinished(item); - moves.remove(j); - if (moves.isEmpty()) { - mMovesList.remove(i); - } - break; - } - } - } - for (int i = mAdditionsList.size() - 1; i >= 0; i--) { - ArrayList additions = mAdditionsList.get(i); - if (additions.remove(item)) { - ViewCompat.setAlpha(view, 1); - dispatchAddFinished(item); - if (additions.isEmpty()) { - mAdditionsList.remove(i); - } - } - } - - // animations should be ended by the cancel above. - //noinspection PointlessBooleanExpression,ConstantConditions - if (mRemoveAnimations.remove(item) && DEBUG) { - throw new IllegalStateException("after animation is cancelled, item should not be in " - + "mRemoveAnimations list"); - } - - //noinspection PointlessBooleanExpression,ConstantConditions - if (mAddAnimations.remove(item) && DEBUG) { - throw new IllegalStateException("after animation is cancelled, item should not be in " - + "mAddAnimations list"); - } - - //noinspection PointlessBooleanExpression,ConstantConditions - if (mChangeAnimations.remove(item) && DEBUG) { - throw new IllegalStateException("after animation is cancelled, item should not be in " - + "mChangeAnimations list"); - } - - //noinspection PointlessBooleanExpression,ConstantConditions - if (mMoveAnimations.remove(item) && DEBUG) { - throw new IllegalStateException("after animation is cancelled, item should not be in " - + "mMoveAnimations list"); - } - dispatchFinishedWhenDone(); - } - - private void resetAnimation(RecyclerView.ViewHolder holder) { - AnimatorCompatHelper.clearInterpolator(holder.itemView); - endAnimation(holder); - } - - @Override - public boolean isRunning() { - return (!mPendingAdditions.isEmpty() || - !mPendingChanges.isEmpty() || - !mPendingMoves.isEmpty() || - !mPendingRemovals.isEmpty() || - !mMoveAnimations.isEmpty() || - !mRemoveAnimations.isEmpty() || - !mAddAnimations.isEmpty() || - !mChangeAnimations.isEmpty() || - !mMovesList.isEmpty() || - !mAdditionsList.isEmpty() || - !mChangesList.isEmpty()); - } - - /** - * Check the state of currently pending and running animations. If there are none - * pending/running, call {@link #dispatchAnimationsFinished()} to notify any - * listeners. - */ - private void dispatchFinishedWhenDone() { - if (!isRunning()) { - dispatchAnimationsFinished(); - } - } - - @Override - public void endAnimations() { - int count = mPendingMoves.size(); - for (int i = count - 1; i >= 0; i--) { - NoAlphaItemAnimator.MoveInfo item = mPendingMoves.get(i); - View view = item.holder.itemView; - ViewCompat.setTranslationY(view, 0); - ViewCompat.setTranslationX(view, 0); - dispatchMoveFinished(item.holder); - mPendingMoves.remove(i); - } - count = mPendingRemovals.size(); - for (int i = count - 1; i >= 0; i--) { - RecyclerView.ViewHolder item = mPendingRemovals.get(i); - dispatchRemoveFinished(item); - mPendingRemovals.remove(i); - } - count = mPendingAdditions.size(); - for (int i = count - 1; i >= 0; i--) { - RecyclerView.ViewHolder item = mPendingAdditions.get(i); - View view = item.itemView; - ViewCompat.setAlpha(view, 1); - dispatchAddFinished(item); - mPendingAdditions.remove(i); - } - count = mPendingChanges.size(); - for (int i = count - 1; i >= 0; i--) { - endChangeAnimationIfNecessary(mPendingChanges.get(i)); - } - mPendingChanges.clear(); - if (!isRunning()) { - return; - } - - int listCount = mMovesList.size(); - for (int i = listCount - 1; i >= 0; i--) { - ArrayList moves = mMovesList.get(i); - count = moves.size(); - for (int j = count - 1; j >= 0; j--) { - NoAlphaItemAnimator.MoveInfo moveInfo = moves.get(j); - RecyclerView.ViewHolder item = moveInfo.holder; - View view = item.itemView; - ViewCompat.setTranslationY(view, 0); - ViewCompat.setTranslationX(view, 0); - dispatchMoveFinished(moveInfo.holder); - moves.remove(j); - if (moves.isEmpty()) { - mMovesList.remove(moves); - } - } - } - listCount = mAdditionsList.size(); - for (int i = listCount - 1; i >= 0; i--) { - ArrayList additions = mAdditionsList.get(i); - count = additions.size(); - for (int j = count - 1; j >= 0; j--) { - RecyclerView.ViewHolder item = additions.get(j); - View view = item.itemView; - ViewCompat.setAlpha(view, 1); - dispatchAddFinished(item); - additions.remove(j); - if (additions.isEmpty()) { - mAdditionsList.remove(additions); - } - } - } - listCount = mChangesList.size(); - for (int i = listCount - 1; i >= 0; i--) { - ArrayList changes = mChangesList.get(i); - count = changes.size(); - for (int j = count - 1; j >= 0; j--) { - endChangeAnimationIfNecessary(changes.get(j)); - if (changes.isEmpty()) { - mChangesList.remove(changes); - } - } - } - - cancelAll(mRemoveAnimations); - cancelAll(mMoveAnimations); - cancelAll(mAddAnimations); - cancelAll(mChangeAnimations); - - dispatchAnimationsFinished(); - } - - void cancelAll(List viewHolders) { - for (int i = viewHolders.size() - 1; i >= 0; i--) { - ViewCompat.animate(viewHolders.get(i).itemView).cancel(); - } - } - - /** - * {@inheritDoc} - *

- * If the payload list is not empty, NoAlphaItemAnimator returns true. - * When this is the case: - *

    - *
  • If you override {@link #animateChange(RecyclerView.ViewHolder, RecyclerView.ViewHolder, int, int, int, int)}, both - * ViewHolder arguments will be the same instance. - *
  • - *
  • - * If you are not overriding {@link #animateChange(RecyclerView.ViewHolder, RecyclerView.ViewHolder, int, int, int, int)}, - * then NoAlphaItemAnimator will call {@link #animateMove(RecyclerView.ViewHolder, int, int, int, int)} and - * run a move animation instead. - *
  • - *
- */ - @Override - public boolean canReuseUpdatedViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, - @NonNull List payloads) { - return !payloads.isEmpty() || super.canReuseUpdatedViewHolder(viewHolder, payloads); - } - - private static class VpaListenerAdapter implements ViewPropertyAnimatorListener { - @Override - public void onAnimationStart(View view) { - } - - @Override - public void onAnimationEnd(View view) { - } - - @Override - public void onAnimationCancel(View view) { - } - } -} diff --git a/build.gradle b/build.gradle index 5df38822..882ea1b6 100644 --- a/build.gradle +++ b/build.gradle @@ -3,20 +3,19 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' - // lambda - classpath 'me.tatarka:gradle-retrolambda:3.4.0' + classpath 'com.android.tools.build:gradle:3.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } ext { - compileSdkVersion = 25 - buildToolsVersion = "26.0.1" - minSdkVersion = 14 + compileSdkVersion = 26 + buildToolsVersion = "26.0.2" + minSdkVersion = 21 targetSdkVersion = 25 superplayerVersionCode = 1 @@ -26,7 +25,7 @@ ext { allprojects { repositories { jcenter() - maven { url 'https://maven.google.com' } + google() } } diff --git a/gradle.properties b/gradle.properties index 902f3ad9..d69b593a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,61 +5,38 @@ # # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -# Default value: -Xmx10248m -XX:MaxPermSize=256m +# Default value: -Xmx1024m -XX:MaxPermSize=256m # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -#Mon Jul 11 16:48:27 CST 2016 -# ʹndk -android.useDeprecatedNdk=true -# ô -#systemProp.http.proxyHost=127.0.0.1 -#systemProp.http.proxyPort=1080 -#systemProp.https.proxyHost=127.0.0.1 -#systemProp.https.proxyPort=1080 -#support version -supportVersion=25.3.1 -#klog -klogVersion=1.6.0 -#retrofit -retrofitVersion=2.3.0 +#Sun Nov 12 20:58:46 CST 2017 +butterknife=8.8.1 +greendao=2.1.0 +supportV4=25.3.1 +butterknifeVersion=8.8.1 +supportVersion=27.0.1 retrofitConverters=2.3.0 -retrofitAdapters=2.3.0 -converterGson=2.3.0 -adapterRxjava2=2.3.0 -#gson -gsonVersion=2.7 -#logging-interceptor +retrofitVersion=2.3.0 loggingInterceptor=3.9.0 -#rxjava2 -rxjava=2.1.3 -rxandroid=2.0.1 -#butterknife -butterknife=8.8.1 -#okhttp +converterGson=2.3.0 +stethoOkhttp3=1.5.0 +subsamplingVersion=3.6.0 +jsoup=1.10.3 okhttp=3.9.0 -#leakcanary-android +butterknifeCompiler=8.8.1 +gank_server_url=http\://gank.io/api/data/ +gsonVersion=2.7 +android.useDeprecatedNdk=true leakcanaryandroid=1.5.4 -#glide +rxjava=2.1.3 +adapterRxjava2=2.3.0 glide=4.2.0 -#greendao -greendao=2.1.0 -#bottom-bar bottomBar=2.3.1 -#stetho -stethoVersion=1.5.0 -stethoOkhttp3=1.5.0 -#butterknife -butterknifeVersion=8.8.1 -butterknifeCompiler=8.8.1 -#jsoup -jsoup=1.10.3 -#crashreport +retrofitAdapters=2.3.0 +rxandroid=2.0.1 crashreportUpgrade=1.3.1 -#subsampling-scale-image-view -subsamplingVersion=3.6.0 -#gank base url -gank_server_url=http\://gank.io/api/data/ +klogVersion=1.6.0 +stethoVersion=1.5.0 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6dfbf250..20628a7b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Mar 03 12:41:37 CST 2017 +#Sun Nov 12 15:25:43 CST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip diff --git a/ijkplayerlibrary/build.gradle b/ijkplayerlibrary/build.gradle index f455127d..8f9b1625 100644 --- a/ijkplayerlibrary/build.gradle +++ b/ijkplayerlibrary/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' android { compileSdkVersion 24 - buildToolsVersion '25.0.0' + buildToolsVersion '26.0.2' defaultConfig { minSdkVersion 14 diff --git a/ijkplayerlibrary/src/androidTest/java/tv/danmaku/ijk/media/player/ApplicationTest.java b/ijkplayerlibrary/src/androidTest/java/tv/danmaku/ijk/media/player/ApplicationTest.java deleted file mode 100644 index 60d1d732..00000000 --- a/ijkplayerlibrary/src/androidTest/java/tv/danmaku/ijk/media/player/ApplicationTest.java +++ /dev/null @@ -1,13 +0,0 @@ -package tv.danmaku.ijk.media.player; - -import android.app.Application; -import android.test.ApplicationTestCase; - -/** - * Testing Fundamentals - */ -public class ApplicationTest extends ApplicationTestCase { - public ApplicationTest() { - super(Application.class); - } -} \ No newline at end of file diff --git a/ijkplayerlibrary/src/test/java/tv/danmaku/ijk/media/player/ExampleUnitTest.java b/ijkplayerlibrary/src/test/java/tv/danmaku/ijk/media/player/ExampleUnitTest.java deleted file mode 100644 index 34d6ea38..00000000 --- a/ijkplayerlibrary/src/test/java/tv/danmaku/ijk/media/player/ExampleUnitTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package tv.danmaku.ijk.media.player; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * To work on unit tests, switch the Test Artifact in the Build Variants view. - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() throws Exception { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file diff --git a/javalib/build.gradle b/javalib/build.gradle index 4373d7f5..fecd8bed 100644 --- a/javalib/build.gradle +++ b/javalib/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' android { compileSdkVersion 25 - buildToolsVersion "26.0.1" + buildToolsVersion '26.0.2' defaultConfig { minSdkVersion 14 diff --git a/superplayerlibrary/build.gradle b/superplayerlibrary/build.gradle index 77b45f1a..5404ae2c 100644 --- a/superplayerlibrary/build.gradle +++ b/superplayerlibrary/build.gradle @@ -20,6 +20,7 @@ android { lintOptions { abortOnError false } + buildToolsVersion '26.0.2' } dependencies { diff --git a/support-ly-http/build.gradle b/support-ly-http/build.gradle index 7094435c..b5bfe498 100644 --- a/support-ly-http/build.gradle +++ b/support-ly-http/build.gradle @@ -23,6 +23,7 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + buildToolsVersion '26.0.2' } dependencies { From 34c751cf950896da573ccb7b14b75f97a50ac66e Mon Sep 17 00:00:00 2001 From: leftcoding <137387869@qq.com> Date: Sat, 18 Nov 2017 22:28:44 +0800 Subject: [PATCH 06/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=20an?= =?UTF-8?q?droid=20presenter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 1 + .../gank/gankly/listener/RecyclerOnClick.java | 2 +- .../gank/gankly/mvp/base/BasePresenter.java | 2 +- .../gankly/mvp/base/LoadMorePresenter.java | 19 --- .../gankly/mvp/observer/BaseObserver.java | 25 +++- .../mvp/observer/ILoadMoreException.java | 11 -- .../gankly/mvp/observer/PageObserver.java | 37 +++--- .../mvp/source/remote/GankDataSource.java | 1 - .../gankly/ui/android/AndroidAdapter.java | 64 +++++----- .../gankly/ui/android/AndroidFragment.java | 59 +++++----- .../gankly/ui/android/AndroidPresenter.java | 109 ++++++++---------- .../ui/baisi/image/BaiSiGalleryFragment.java | 3 +- .../gankly/ui/base/fragment/BaseFragment.java | 19 ++- .../ui/base/fragment/ButterKnifeFragment.java | 5 +- .../ui/base/fragment/SupportFragment.java | 3 +- .../gankly/ui/collect/CollectAdapter.java | 2 +- .../gankly/ui/girls/pure/PurePresenter.java | 9 +- .../com/gank/gankly/ui/ios/IosAdapter.java | 6 +- .../com/gank/gankly/ui/ios/IosFragment.java | 2 +- .../com/gank/gankly/ui/ios/IosPresenter.java | 19 ++- .../java/com/gank/gankly/utils/DateUtils.java | 79 +++++-------- app/src/main/res/values/strings.xml | 2 + .../src/main/java/com/example/javalib/B.java | 21 ++++ .../com/leftcoding/http/api/GankManager.java | 25 +++- .../com/leftcoding/http/api/GankServer.java | 2 - .../com/leftcoding/http/bean/PageConfig.java | 37 ++++++ .../com/leftcoding/http/bean/PageResult.java | 11 +- .../src/main/res/values/strings.xml | 1 + 28 files changed, 314 insertions(+), 262 deletions(-) delete mode 100644 app/src/main/java/com/gank/gankly/mvp/observer/ILoadMoreException.java create mode 100644 javalib/src/main/java/com/example/javalib/B.java create mode 100644 support-ly-http/src/main/java/com/leftcoding/http/bean/PageConfig.java diff --git a/app/build.gradle b/app/build.gradle index 7dbb34e7..d81489e3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -137,4 +137,5 @@ dependencies { implementation "io.reactivex.rxjava2:rxandroid:${rxandroid}" implementation "com.tencent.bugly:crashreport_upgrade:${crashreportUpgrade}" + compile 'org.jetbrains:annotations:15.0' } diff --git a/app/src/main/java/com/gank/gankly/listener/RecyclerOnClick.java b/app/src/main/java/com/gank/gankly/listener/RecyclerOnClick.java index 1341d326..45140b4f 100644 --- a/app/src/main/java/com/gank/gankly/listener/RecyclerOnClick.java +++ b/app/src/main/java/com/gank/gankly/listener/RecyclerOnClick.java @@ -5,5 +5,5 @@ import com.leftcoding.http.bean.ResultsBean; public interface RecyclerOnClick { - void onClick(View view, ResultsBean bean); + void onClick(View view, int position, ResultsBean bean); } \ No newline at end of file diff --git a/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java b/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java index 40e72b6d..630ccb1f 100644 --- a/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java @@ -19,7 +19,7 @@ public BasePresenter(@NonNull Context context, E view) { this.mContext = context; } - private static T checkNotNull(T reference) { + protected static T checkNotNull(T reference) { if (reference == null) { throw new NullPointerException(); } diff --git a/app/src/main/java/com/gank/gankly/mvp/base/LoadMorePresenter.java b/app/src/main/java/com/gank/gankly/mvp/base/LoadMorePresenter.java index d5ea1aa7..2854878a 100644 --- a/app/src/main/java/com/gank/gankly/mvp/base/LoadMorePresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/base/LoadMorePresenter.java @@ -8,26 +8,7 @@ */ public abstract class LoadMorePresenter extends BasePresenter { - private int mInitPage = 1; - private int mLimit = 20; - public LoadMorePresenter(@NonNull Context context, E view) { super(context, view); } - - public int getInitPage() { - return mInitPage; - } - - public void setInitPage(int initPage) { - mInitPage = initPage; - } - - public int getLimit() { - return mLimit; - } - - public void setLimit(int limit) { - mLimit = limit; - } } diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java index 2b7c1370..1cf8260d 100644 --- a/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java +++ b/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java @@ -1,6 +1,7 @@ package com.gank.gankly.mvp.observer; import com.leftcoding.rxbus.RxManager; +import com.socks.library.KLog; import io.reactivex.Observer; import io.reactivex.annotations.NonNull; @@ -11,19 +12,33 @@ */ public abstract class BaseObserver implements Observer { - protected static final String REQUEST_ERROR = "网络请求错误."; - private final String mKey; + private final String mTag; - public BaseObserver(String key) { - this.mKey = key; + BaseObserver(String tag) { + this.mTag = tag; } @Override public void onSubscribe(@NonNull Disposable d) { - RxManager.get().add(mKey, d); + RxManager.get().add(mTag, d); } @Override public void onError(@NonNull Throwable e) { + KLog.e(e); } + + protected abstract void onSuccessEmpty(); + + protected abstract void refreshEmpty(); + + protected abstract void appendEmpty(); + + protected abstract void onErrorException(); + + protected abstract void refreshError(); + + protected abstract void appendError(); + + } diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/ILoadMoreException.java b/app/src/main/java/com/gank/gankly/mvp/observer/ILoadMoreException.java deleted file mode 100644 index b122ec43..00000000 --- a/app/src/main/java/com/gank/gankly/mvp/observer/ILoadMoreException.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.gank.gankly.mvp.observer; - -/** - * Create by LingYan on 2017-10-12 - */ - -public interface ILoadMoreException { - void refreshError(String str); - - void appendError(String str); -} diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java index 2e30febc..30037078 100644 --- a/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java +++ b/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java @@ -8,25 +8,20 @@ * Create by LingYan on 2017-10-12 */ -public abstract class PageObserver extends BaseObserver implements ILoadMoreException { +public abstract class PageObserver extends BaseObserver { private boolean isFirst; - public PageObserver(String key, boolean isFirst) { - super(key); + public PageObserver(String tag, boolean isFirst) { + super(tag); this.isFirst = isFirst; } @Override public void onNext(@NonNull T t) { - if (t == null) { - onException(); - return; - } - if (t instanceof PageResult) { PageResult result = (PageResult) t; - if (result.results == null) { - onException(); + if (result.results == null || result.results.isEmpty()) { + onSuccessEmpty(); } } } @@ -34,24 +29,34 @@ public void onNext(@NonNull T t) { @Override public void onError(@NonNull Throwable e) { super.onError(e); - onException(); + onErrorException(); } @Override - public void refreshError(String str) { + protected void refreshError() { } @Override - public void appendError(String str) { + protected void appendError() { } - private void onException() { + @Override + protected void onErrorException() { + if (isFirst) { + refreshError(); + } else { + appendError(); + } + } + + @Override + protected void onSuccessEmpty() { if (isFirst) { - refreshError(REQUEST_ERROR); + refreshEmpty(); } else { - appendError(REQUEST_ERROR); + appendEmpty(); } } } diff --git a/app/src/main/java/com/gank/gankly/mvp/source/remote/GankDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/remote/GankDataSource.java index 07890c1e..a526e54b 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/remote/GankDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/remote/GankDataSource.java @@ -11,7 +11,6 @@ /** * 干货远程请求 * Create by LingYan on 2016-10-25 - * Email:137387869@qq.com */ public class GankDataSource extends BaseDataSourceModel { diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java index 762eac7b..def195e4 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java @@ -5,7 +5,6 @@ import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; -import android.view.View; import android.view.ViewGroup; import android.widget.TextView; @@ -32,17 +31,16 @@ * Create by LingYan on 2016-04-25 */ class AndroidAdapter extends BaseAdapter { - private RecyclerOnClick mMeiZiOnClick; - @NonNull + private RecyclerOnClick mRecyclerOnClick; private Context mContext; - private List mBeanList; + private List mResultsBeans; private List mItemList; AndroidAdapter(@NonNull Context context) { setHasStableIds(true); - mBeanList = new ArrayList<>(); mContext = context; + mResultsBeans = new ArrayList<>(); mItemList = new ArrayList<>(); registerAdapterDataObserver(dataObserver); } @@ -54,8 +52,10 @@ public void onChanged() { mItemList.clear(); int size = getItemCount(); if (size > 0) { - for (ResultsBean resultsBean : mBeanList) { - mItemList.add(new TextItem(resultsBean)); + for (ResultsBean resultsBean : mResultsBeans) { + if (resultsBean != null) { + mItemList.add(new TextItem(resultsBean)); + } } } } @@ -86,7 +86,7 @@ public DefaultHolder onCreateViewHolder(ViewGroup parent, int viewType) { @SuppressWarnings("unchecked") @Override public void onBindViewHolder(DefaultHolder holder, int position) { - if (mItemList != null && !mItemList.isEmpty()) { + if (holder instanceof TextHolder) { holder.bindItem(mContext, mItemList.get(position)); } } @@ -99,7 +99,7 @@ public void onViewRecycled(DefaultHolder holder) { @Override public int getItemCount() { - return mBeanList == null ? 0 : mBeanList.size(); + return mResultsBeans == null ? 0 : mResultsBeans.size(); } @Override @@ -108,18 +108,17 @@ public long getItemId(int position) { } void fillItems(List results) { + mResultsBeans.clear(); appendItems(results); } public void appendItems(List results) { - if (mBeanList != null) { - mBeanList.addAll(results); - this.notifyDataSetChanged(); - } + mResultsBeans.addAll(results); + this.notifyDataSetChanged(); } public void setOnItemClickListener(RecyclerOnClick onItemClickListener) { - mMeiZiOnClick = onItemClickListener; + mRecyclerOnClick = onItemClickListener; } @Override @@ -129,10 +128,11 @@ public void destroy() { mItemList = null; } - if (mBeanList != null) { - mBeanList.clear(); - mBeanList = null; + if (mResultsBeans != null) { + mResultsBeans.clear(); + mResultsBeans = null; } + unregisterAdapterDataObserver(dataObserver); } @@ -152,6 +152,11 @@ public int getType() { ResultsBean getResultsBean() { return mResultsBean; } + + public String getTime() { + Date date = DateUtils.formatToDate(mResultsBean.publishedAt); + return DateUtils.formatString(date, DateUtils.MM_DD); + } } class TextHolder extends DefaultHolder { @@ -164,8 +169,6 @@ class TextHolder extends DefaultHolder { @BindView(R.id.title) TextView title; - private ResultsBean mResultsBean; - TextHolder(Context context, ViewGroup parent) { super(context, parent, R.layout.adapter_android); } @@ -173,28 +176,17 @@ class TextHolder extends DefaultHolder { @Override public void bindItem(Context context, TextItem item) { final ResultsBean resultsBean = item.getResultsBean(); - if (resultsBean == null) { - return; - } - mResultsBean = resultsBean; - itemView.setOnClickListener(clickListener); - - Date date = DateUtils.formatDateFromStr(resultsBean.publishedAt); - String formatDate = DateUtils.getFormatDate(date, DateUtils.MM_DD); - time.setText(formatDate); + time.setText(item.getTime()); title.setText(resultsBean.desc); authorName.setText(resultsBean.getWho()); - } - View.OnClickListener clickListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - if (mMeiZiOnClick != null) { - mMeiZiOnClick.onClick(v, mResultsBean); + itemView.setOnClickListener(v -> { + if (mRecyclerOnClick != null) { + mRecyclerOnClick.onClick(v, getAdapterPosition(), resultsBean); } - } - }; + }); + } } static abstract class DefaultHolder extends ButterHolder { diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java index 920ec591..deecf5b4 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java @@ -5,6 +5,7 @@ import android.content.res.ColorStateList; import android.graphics.Color; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.v4.widget.SwipeRefreshLayout; @@ -39,10 +40,10 @@ public class AndroidFragment extends LazyFragment implements SwipeRefreshLayout.OnRefreshListener, RecyclerOnClick, AndroidContract.View { @BindView(R.id.multiple_status_view) - MultipleStatusView mMultipleStatusView; + MultipleStatusView multipleStatusView; @BindView(R.id.swipe_refresh) - LySwipeRefreshLayout mSwipeRefreshLayout; + LySwipeRefreshLayout swipeRefreshLayout; private RecyclerView mRecyclerView; @@ -64,15 +65,15 @@ public void onAttach(Context context) { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initAdapter(); initRecycler(); mAdapter.setOnItemClickListener(this); - mSwipeRefreshLayout.setOnRefreshListener(this); - mMultipleStatusView.setListener(v -> { + swipeRefreshLayout.setOnRefreshListener(this); + multipleStatusView.setListener(v -> { showLoading(); mPresenter.refreshAndroid(); }); @@ -81,7 +82,7 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mPresenter = new AndroidPresenter(getContext(), this); + mPresenter = new AndroidPresenter(mContext, this); mPresenter.refreshAndroid(); } @@ -90,9 +91,9 @@ protected void initLazy() { } private void initRecycler() { - mRecyclerView = mSwipeRefreshLayout.getRecyclerView(); - mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity)); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + mRecyclerView = swipeRefreshLayout.getRecyclerView(); + swipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity)); + swipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { @Override public void onRefresh() { mPresenter.refreshAndroid(); @@ -106,18 +107,18 @@ public void onLoadMore() { } private void initAdapter() { - mAdapter = new AndroidAdapter(mActivity); - mSwipeRefreshLayout.setAdapter(mAdapter); + mAdapter = new AndroidAdapter(mContext); + swipeRefreshLayout.setAdapter(mAdapter); } @Override public void onRefresh() { - mSwipeRefreshLayout.setRefreshing(true); + swipeRefreshLayout.setRefreshing(true); mPresenter.refreshAndroid(); } @Override - public void onClick(View view, ResultsBean bean) { + public void onClick(View view, int position, ResultsBean bean) { Bundle bundle = new Bundle(); bundle.putString(WebActivity.TITLE, bean.desc); bundle.putString(WebActivity.URL, bean.url); @@ -155,8 +156,8 @@ public void showProgress() { return; } - if (mSwipeRefreshLayout != null) { - mSwipeRefreshLayout.setRefreshing(true); + if (swipeRefreshLayout != null) { + swipeRefreshLayout.setRefreshing(true); } } @@ -167,48 +168,48 @@ public void hideProgress() { return; } - if (mSwipeRefreshLayout != null) { - mSwipeRefreshLayout.setRefreshing(false); + if (swipeRefreshLayout != null) { + swipeRefreshLayout.setRefreshing(false); } } @Override public void hasNoMoreDate() { - Snackbar.make(mSwipeRefreshLayout, R.string.loading_all_over, Snackbar.LENGTH_SHORT).show(); + Snackbar.make(swipeRefreshLayout, R.string.loading_all_over, Snackbar.LENGTH_SHORT).show(); } @Override public void showContent() { - if (mMultipleStatusView != null) { - mMultipleStatusView.showContent(); + if (multipleStatusView != null) { + multipleStatusView.showContent(); } } @Override public void showEmpty() { - if (mMultipleStatusView != null) { - mMultipleStatusView.showEmpty(); + if (multipleStatusView != null) { + multipleStatusView.showEmpty(); } } @Override public void showDisNetWork() { - if (mMultipleStatusView != null) { - mMultipleStatusView.showDisNetwork(); + if (multipleStatusView != null) { + multipleStatusView.showDisNetwork(); } } @Override public void showError() { - if (mMultipleStatusView != null) { - mMultipleStatusView.showError(); + if (multipleStatusView != null) { + multipleStatusView.showError(); } } @Override public void showLoading() { - if (mMultipleStatusView != null) { - mMultipleStatusView.showLoading(); + if (multipleStatusView != null) { + multipleStatusView.showLoading(); } } @@ -279,7 +280,7 @@ protected void callBackRefreshUi() { mRecycler.setItemBackgroundColor(R.id.android_rl, R.attr.lyItemSelectBackground); themeColor.setBackgroundResource(R.attr.themeBackground, mRecyclerView); - themeColor.swipeRefresh(mSwipeRefreshLayout); + themeColor.swipeRefresh(swipeRefreshLayout); themeColor.recyclerViewColor(mRecycler); themeColor.start(); } diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java index fb8c0a48..baab6924 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java @@ -1,59 +1,54 @@ package com.gank.gankly.ui.android; import android.content.Context; -import android.support.annotation.NonNull; import com.gank.gankly.mvp.observer.PageObserver; import com.gank.gankly.ui.android.AndroidContract.Presenter; import com.leftcoding.http.api.GankManager; +import com.leftcoding.http.bean.PageConfig; import com.leftcoding.http.bean.PageResult; import com.leftcoding.http.bean.ResultsBean; import com.leftcoding.rxbus.RxManager; -import java.util.concurrent.atomic.AtomicBoolean; - -import io.reactivex.Observable; -import io.reactivex.ObservableSource; -import io.reactivex.functions.Function; -import retrofit2.Response; - /** * Create by LingYan on 2016-10-25 */ class AndroidPresenter extends Presenter { private static final String TAG = "android_presenter"; + private static final int INIT_PAGE = 1; private PageResult mPageResult; + private PageConfig mPageConfig; - private final AtomicBoolean first = new AtomicBoolean(true); - - AndroidPresenter(@NonNull Context context, @NonNull AndroidContract.View view) { + AndroidPresenter(Context context, AndroidContract.View view) { super(context, view); + mPageConfig = new PageConfig(); } @Override protected void refreshAndroid() { - fetchAndroid(getInitPage()); + fetchAndroid(INIT_PAGE); } @Override protected void appendAndroid() { - if (mPageResult != null) { - fetchAndroid(mPageResult.nextPage); + if (mPageResult != null && !mPageResult.hasNoMore(mPageConfig.mLimit)) { + fetchAndroid(mPageResult.mNextPage); } } @Override public void unSubscribe() { super.unSubscribe(); - first.set(true); mPageResult = null; RxManager.get().clear(TAG); } - private void fetchAndroid(final int page) { + private void fetchAndroid(final int curPage) { + mPageConfig.mCurPage = curPage; + GankManager.with(mContext) - .androids(page, getLimit()) + .androids(curPage, mPageConfig.mLimit) .doOnSubscribe(disposable -> { if (isActivity()) { mView.showProgress(); @@ -64,39 +59,12 @@ private void fetchAndroid(final int page) { mView.hideProgress(); } }) - .flatMap(new Function>, ObservableSource>>() { - @Override - public ObservableSource> apply(Response> pageResultResponse) throws Exception { - if (pageResultResponse == null - || !pageResultResponse.isSuccessful() - || pageResultResponse.body() == null) { - return Observable.error(new Throwable()); - } - return Observable.create(e -> e.onNext(pageResultResponse.body())); - } - }) - .map(pageResult -> { - if (pageResult != null) { - pageResult.curPage = page; - return pageResult; - } - return null; - }) - .flatMap(new Function, ObservableSource>>() { - @Override - public ObservableSource> apply(PageResult result) throws Exception { - if (result == null) { - return Observable.error(new Throwable()); - } - return Observable.create(e -> e.onNext(result)); - } - }) .subscribe(new PageSubscribe()); } private class PageSubscribe extends PageObserver> { PageSubscribe() { - this(first.get()); + this(isRefreshRequest()); } PageSubscribe(boolean isFirst) { @@ -110,34 +78,43 @@ public void onNext(PageResult results) { } @Override - public void onError(@NonNull Throwable e) { + public void onError(Throwable e) { super.onError(e); + } + + @Override + protected void refreshEmpty() { if (isActivity()) { - if (isFirst()) { - mView.showEmpty(); - } else { - mView.appendAndroidFailure("网络请求失败."); - } + mView.showEmpty(); + } + } + + @Override + protected void appendEmpty() { + if (isActivity()) { + mView.hasNoMoreDate(); } } @Override public void onComplete() { - first.set(false); + } @Override - public void refreshError(String str) { - super.refreshError(str); + protected void refreshError() { + super.refreshError(); if (isActivity()) { - mView.showEmpty(); + mView.showError(); } } @Override - public void appendError(String str) { - super.appendError(str); - showShortToast(str); + protected void appendError() { + super.appendError(); + if (isActivity()) { + mView.showShortToast("请求数据出错"); + } } } @@ -147,19 +124,23 @@ private void parseAndroidData(final PageResult result) { } mPageResult = result; - mPageResult.nextPage = getNextPage(mPageResult.curPage); - if (first.get()) { + mPageResult.mNextPage = getNextPage(); + if (isRefreshRequest()) { mView.refreshAndroidSuccess(result.results); } else { mView.appendAndroidSuccess(result.results); } } - private int getNextPage(int curPage) { - return curPage + 1; + private int getNextPage() { + return getCurPage() + 1; + } + + private boolean isRefreshRequest() { + return mPageConfig.isFirstRequest(); } - private boolean isFirst() { - return first.get(); + private int getCurPage() { + return mPageConfig.mCurPage; } } diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java index 8966a7b7..fa9f5371 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java @@ -3,6 +3,7 @@ import android.graphics.PointF; import android.net.Uri; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.View; import android.view.ViewGroup; @@ -59,7 +60,7 @@ protected int getLayoutId() { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); sliderIv.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP); sliderIv.setDoubleTapZoomStyle(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER); diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java index d6742a31..573759ce 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java @@ -1,8 +1,11 @@ package com.gank.gankly.ui.base.fragment; +import android.content.Context; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; +import android.support.v7.app.AppCompatActivity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -15,15 +18,24 @@ * Email:137387869@qq.com */ public abstract class BaseFragment extends Fragment { + protected Context mContext; + protected AppCompatActivity mActivity; + + @Override + public void onAttach(Context context) { + super.onAttach(context); + mContext = context; + mActivity = (AppCompatActivity) context; + } @Nullable @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return super.onCreateView(inflater, container, savedInstanceState); } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } @@ -32,10 +44,9 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } - @Override public void onDestroyView() { super.onDestroyView(); - ((App) getActivity().getApplication()).getRefWatcher().watch(this); + ((App) mActivity.getApplication()).getRefWatcher().watch(this); } } diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/ButterKnifeFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/ButterKnifeFragment.java index ecfbe7b4..64950946 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/fragment/ButterKnifeFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/ButterKnifeFragment.java @@ -1,6 +1,7 @@ package com.gank.gankly.ui.base.fragment; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; @@ -18,12 +19,12 @@ public abstract class ButterKnifeFragment extends BaseFragment { @Nullable @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(getLayoutId(), container, false); } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); unBinder = ButterKnife.bind(this, view); } diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java index 13722d0d..e3aa97ea 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java @@ -1,6 +1,7 @@ package com.gank.gankly.ui.base.fragment; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.TextUtils; import android.view.View; @@ -14,7 +15,7 @@ public abstract class SupportFragment extends ButterKnifeFragment implements SupportView { @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } diff --git a/app/src/main/java/com/gank/gankly/ui/collect/CollectAdapter.java b/app/src/main/java/com/gank/gankly/ui/collect/CollectAdapter.java index b3d4b152..19354bc7 100644 --- a/app/src/main/java/com/gank/gankly/ui/collect/CollectAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/collect/CollectAdapter.java @@ -51,7 +51,7 @@ public void onBindViewHolder(CollectHolderView holder, int position) { holder.title.setText(urlCollect.getComment()); Date date = urlCollect.getDate(); - holder.time.setText(DateUtils.getFormatDate(date, DateUtils.YY_MM_DD_)); + holder.time.setText(DateUtils.formatString(date, DateUtils.YY_MM_DD_HORIZONTAL)); holder.type.setText(urlCollect.getG_type()); holder.author.setText(urlCollect.getG_author()); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java b/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java index e9a4bbb5..98d2adc3 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java @@ -6,6 +6,7 @@ import com.gank.gankly.bean.GiftBean; import com.gank.gankly.utils.CrashUtils; import com.gank.gankly.utils.StringUtils; +import com.leftcoding.http.bean.PageConfig; import com.socks.library.KLog; import org.jsoup.nodes.Document; @@ -25,20 +26,22 @@ public class PurePresenter extends PureContract.Presenter { private String nextUrl = BASE_URL + "/page/"; private int mMaxPageNumber; + private PageConfig mPageConfig; public PurePresenter(Context context, PureContract.View view) { super(context, view); + mPageConfig = new PageConfig(); + mPageConfig.mLimit = 24; } @Override public void refreshPure() { - setLimit(24); - fetchData(getInitPage()); + fetchData(mPageConfig.mCurPage); } @Override public void appendPure() { - fetchData(getInitPage()); + fetchData(mPageConfig.mCurPage); } private void fetchData(final int page) { diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java index 6023082c..9343adf5 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java @@ -143,8 +143,8 @@ class GankViewHolder extends DefaultHolder { public void bindItem(Fragment fragment, TextItem item) { final Context context = fragment.getContext(); final ResultsBean resultsBean = item.getResultsBean(); - Date date = DateUtils.formatDateFromStr(resultsBean.publishedAt); - String formatDate = DateUtils.getFormatDate(date, DateUtils.MM_DD); + Date date = DateUtils.formatToDate(resultsBean.publishedAt); + String formatDate = DateUtils.formatString(date, DateUtils.MM_DD); time.setText(formatDate); title.setText(resultsBean.desc); @@ -154,7 +154,7 @@ public void bindItem(Fragment fragment, TextItem item) { @Override public void onClick(View v) { if (mMeiZiOnClick != null) { - mMeiZiOnClick.onClick(v, resultsBean); + mMeiZiOnClick.onClick(v, getAdapterPosition(), resultsBean); } } }); diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java index fdfe37ce..93abb882 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java @@ -94,7 +94,7 @@ public void onLoadMore() { private RecyclerOnClick mRecyclerOnClick = new RecyclerOnClick() { @Override - public void onClick(View view, ResultsBean bean) { + public void onClick(View view, int position, ResultsBean bean) { Bundle bundle = new Bundle(); bundle.putString(WebActivity.TITLE, bean.desc); bundle.putString(WebActivity.URL, bean.url); diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java index b543efc1..822916f5 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java @@ -4,6 +4,7 @@ import android.support.annotation.NonNull; import com.leftcoding.http.api.GankManager; +import com.leftcoding.http.bean.PageConfig; import com.leftcoding.http.bean.PageResult; import com.leftcoding.http.bean.ResultsBean; import com.socks.library.KLog; @@ -29,25 +30,30 @@ public class IosPresenter extends IosContract.Presenter { private PageResult mPageResult; private AtomicBoolean first = new AtomicBoolean(true); + private PageConfig mPageConfig; + public IosPresenter(@NonNull Context context, IosContract.View view) { super(context, view); + mPageConfig = new PageConfig(); } @Override void refreshIos() { - fetchData(getInitPage()); + fetchData(1); } @Override void appendIos() { if (mPageResult != null) { - fetchData(mPageResult.nextPage); + fetchData(mPageResult.mNextPage); } } private void fetchData(final int page) { + mPageConfig.mCurPage = page; + GankManager.with(mContext) - .ios(page, getLimit()) + .ios(page, 20) .doOnSubscribe(new Consumer() { @Override public void accept(Disposable disposable) throws Exception { @@ -81,7 +87,6 @@ public ObservableSource> apply(@io.reactivex.annotations @Override public PageResult apply(@io.reactivex.annotations.NonNull PageResult result) throws Exception { if (result != null) { - result.curPage = page; return result; } return null; @@ -105,7 +110,7 @@ public void onSubscribe(Disposable d) { @Override public void onNext(PageResult result) { mPageResult = result; - mPageResult.nextPage = mPageResult.curPage + 1; + mPageResult.mNextPage = getNextPage(); if (isActivity()) { if (isFirst()) { @@ -137,4 +142,8 @@ public void unSubscribe() { private boolean isFirst() { return first.get(); } + + private int getNextPage() { + return mPageConfig.mCurPage + 1; + } } diff --git a/app/src/main/java/com/gank/gankly/utils/DateUtils.java b/app/src/main/java/com/gank/gankly/utils/DateUtils.java index fb8d25f4..602e67cb 100644 --- a/app/src/main/java/com/gank/gankly/utils/DateUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/DateUtils.java @@ -1,84 +1,63 @@ package com.gank.gankly.utils; import android.text.TextUtils; +import android.util.Log; -import java.text.DateFormat; +import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.TimeZone; + /** * 日期转换 * Create by LingYan on 2016-04-28 */ public class DateUtils { private static final String GMT_8 = "GMT+8"; - public static final String YY_MM_DD = "yyyy/MM/dd"; - public static final String YY_MM_DD_ = "yyyy-MM-dd"; + public static final String YY_MM_DD_SLASH = "yyyy/MM/dd"; + public static final String YY_MM_DD_HORIZONTAL = "yyyy-MM-dd"; public static final String MM_DD = "MM-dd"; + public static final String YMD_S = "yyyy-MM-dd'T'HH:mm:ss.sss'Z'"; - - public static String getFormatDateStr(final Date date) { - if (null == date) { + public static String formatString(final Date date, final String format) { + if (null == date || TextUtils.isEmpty(format)) { return null; } - return DateFormat.getDateInstance(DateFormat.DEFAULT).format(date); + SimpleDateFormat simpleDateFormat = getDateFormat(format); + return getSimpleFormat(simpleDateFormat, date); } - public static String getFormatDate(final Date date, String type) { - if (null == date || TextUtils.isEmpty(type)) { - return null; - } - - SimpleDateFormat sdf; - try { - sdf = new SimpleDateFormat(type, Locale.SIMPLIFIED_CHINESE); - } catch (Exception e) { - sdf = new SimpleDateFormat(YY_MM_DD_, Locale.SIMPLIFIED_CHINESE); - } - TimeZone timeZone = TimeZone.getTimeZone(GMT_8); - sdf.setTimeZone(timeZone); - return sdf.format(date); + private static String getSimpleFormat(SimpleDateFormat simpleDateFormat, final Date date) { + return simpleDateFormat == null ? "" : simpleDateFormat.format(date); } - public static Date formatDateFromStr(final String dateStr) { + public static Date formatToDate(final String dateStr) { Date date = new Date(); if (!TextUtils.isEmpty(dateStr)) { - String format = "yyyy-MM-dd'T'HH:mm:ss.sss'Z'"; - SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.SIMPLIFIED_CHINESE); - TimeZone timeZone = TimeZone.getTimeZone(GMT_8); - sdf.setTimeZone(timeZone); - try { - date = sdf.parse(dateStr); - } catch (Exception e) { - System.out.print("Error,format Date error"); + SimpleDateFormat dateFormat = getDateFormat(YMD_S); + if (dateFormat != null) { + try { + return dateFormat.parse(dateStr); + } catch (ParseException e) { + e.printStackTrace(); + } } } return date; } - public static String getMonth(final Date date) { - if (date != null) { - Calendar calendar = Calendar.getInstance(); - TimeZone timeZone = TimeZone.getTimeZone(GMT_8); - calendar.setTimeZone(timeZone); - calendar.setTime(date); - return String.valueOf(calendar.get(Calendar.MONTH) + 1); - } - return "0"; - } - - public static String getDay(final Date date) { - if (date != null) { - Calendar calendar = Calendar.getInstance(); + private static SimpleDateFormat getDateFormat(String format) { + SimpleDateFormat dateFormat; + try { TimeZone timeZone = TimeZone.getTimeZone(GMT_8); - calendar.setTimeZone(timeZone); - calendar.setTime(date); - return String.valueOf(calendar.get(Calendar.DATE)); + dateFormat = new SimpleDateFormat(format, Locale.SIMPLIFIED_CHINESE); + dateFormat.setTimeZone(timeZone); + } catch (Exception e) { + dateFormat = null; + Log.e("", e.toString()); } - return "0"; + return dateFormat; } - } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9731e62b..651f7f2c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -36,6 +36,8 @@ Wi-Fi和移动数据已断开 全部加载完毕 + 网络请求出错 + 确定 取消 更新 diff --git a/javalib/src/main/java/com/example/javalib/B.java b/javalib/src/main/java/com/example/javalib/B.java new file mode 100644 index 00000000..561f0d6a --- /dev/null +++ b/javalib/src/main/java/com/example/javalib/B.java @@ -0,0 +1,21 @@ +package com.example.javalib; + +/** + * Create by LingYan on 2017-10-17 + */ + +abstract class B { + public B() { + A.getA().setA(this); + } + + public void HH() { + + } + + public abstract void change(String s); + + public static void main(String[] args) { + + } +} diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/GankManager.java b/support-ly-http/src/main/java/com/leftcoding/http/api/GankManager.java index 82378eb0..b0eb792a 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/api/GankManager.java +++ b/support-ly-http/src/main/java/com/leftcoding/http/api/GankManager.java @@ -2,12 +2,15 @@ import android.content.Context; +import com.leftcoding.http.R; import com.leftcoding.http.bean.ListResult; import com.leftcoding.http.bean.PageResult; import com.leftcoding.http.bean.ResultsBean; import io.reactivex.Observable; +import io.reactivex.ObservableSource; import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; import retrofit2.Response; @@ -16,20 +19,23 @@ */ public class GankManager { + private final String serverError; private GankApi mApi; private GankManager(Context context) { mApi = GankServer.with(context).api(); + serverError = context.getResources().getString(R.string.network_request_error); } public static synchronized GankManager with(Context context) { return new GankManager(context); } - public Observable>> androids(int page, int limit) { + public Observable> androids(final int page, final int limit) { return mApi.androids(page, limit) .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); + .observeOn(AndroidSchedulers.mainThread()) + .flatMap(pageResultFunction); } public Observable>> ios(int page, int limit) { @@ -49,4 +55,19 @@ public Observable>> images(int limit, int page) public Observable>> videos(int limit, int page) { return mApi.videos(limit, page); } + + private Function>, ObservableSource>> pageResultFunction = new Function>, ObservableSource>>() { + @Override + public ObservableSource> apply + (Response> response) throws Exception { + if (response != null) { + if (response.isSuccessful()) { + if (response.body() != null) { + return Observable.just(response.body()); + } + } + } + return Observable.error(new Throwable(serverError)); + } + }; } diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java b/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java index 4306709e..67817526 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java +++ b/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java @@ -15,9 +15,7 @@ /** * Create by LingYan on 2017-09-29 - * Email:137387869@qq.com */ - public class GankServer extends BaseServer { public static final String GANK_SERVER_URL = BuildConfig.GANK_SERVER_ULR; diff --git a/support-ly-http/src/main/java/com/leftcoding/http/bean/PageConfig.java b/support-ly-http/src/main/java/com/leftcoding/http/bean/PageConfig.java new file mode 100644 index 00000000..4698b204 --- /dev/null +++ b/support-ly-http/src/main/java/com/leftcoding/http/bean/PageConfig.java @@ -0,0 +1,37 @@ +package com.leftcoding.http.bean; + +/** + * Create by LingYan on 2017-11-18 + * Email:137387869@qq.com + */ + +public class PageConfig { + /** + * 分页个数 默认20 + */ + public int mLimit = 20; + + /** + * 初始化请求页数 + */ + public int mInitPage = 1; + + /** + * 当前请求页数 + */ + public int mCurPage = 1; + + public PageConfig() { + + } + + public PageConfig(int limit, int initPage, int curPage) { + mLimit = limit; + mInitPage = initPage; + mCurPage = curPage; + } + + public boolean isFirstRequest() { + return mCurPage == mInitPage; + } +} diff --git a/support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java b/support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java index 5f0eb8a2..f767e88a 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java +++ b/support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java @@ -5,9 +5,12 @@ */ public class PageResult extends ListResult { - public int nextPage; + public int mNextPage; - public int curPage; - - public boolean hasNoMore; + public boolean hasNoMore(int limit) { + if (results != null && !results.isEmpty()) { + return results.size() < limit; + } + return false; + } } diff --git a/support-ly-http/src/main/res/values/strings.xml b/support-ly-http/src/main/res/values/strings.xml index d731f3f8..af91b420 100644 --- a/support-ly-http/src/main/res/values/strings.xml +++ b/support-ly-http/src/main/res/values/strings.xml @@ -1,3 +1,4 @@ HttpLib + 网络请求出错 From 1fb6a48b6d6e12d680306363e9606200ad8d2fa2 Mon Sep 17 00:00:00 2001 From: leftcoding <137387869@qq.com> Date: Sun, 19 Nov 2017 14:55:26 +0800 Subject: [PATCH 07/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gank/gankly/mvp/FetchPresenter.java | 10 ++-- .../gank/gankly/mvp/base/BasePresenter.java | 3 +- .../com/gank/gankly/mvp/base/SupportView.java | 4 -- .../gankly/mvp/observer/BaseObserver.java | 2 - .../gankly/mvp/observer/PageObserver.java | 12 +---- .../gankly/mvp/observer/RefreshObserver.java | 52 +++++++++++++++++++ .../gankly/ui/android/AndroidFragment.java | 19 +++---- .../gankly/ui/android/AndroidPresenter.java | 4 +- .../ui/base/fragment/SupportFragment.java | 10 ---- .../gankly/ui/collect/CollectFragment.java | 11 ++-- .../discovered/jiandan/JiandanFragment.java | 12 ++--- .../technology/TechnologyFragment.java | 6 --- .../ui/discovered/video/VideoFragment.java | 7 +-- .../gankly/ui/gallery/GalleryActivity.java | 10 ---- .../gankly/ui/girls/cure/CureFragment.java | 10 ---- .../girls/dailymeizi/DailyMeiziFragment.java | 12 ++--- .../gankly/ui/girls/pure/PureFragment.java | 12 ++--- .../ui/history/BrowseHistoryFragment.java | 12 ++--- .../com/gank/gankly/ui/ios/IosFragment.java | 27 ++++++---- .../com/gank/gankly/ui/ios/IosPresenter.java | 27 ++++------ .../ui/main/welfare/WelfareContract.java | 7 ++- .../ui/main/welfare/WelfareFragment.java | 36 ++++++++----- .../ui/main/welfare/WelfarePresenter.java | 2 +- .../gank/gankly/ui/more/SettingFragment.java | 5 -- .../com/leftcoding/http/api/GankServer.java | 3 +- 25 files changed, 155 insertions(+), 160 deletions(-) create mode 100644 app/src/main/java/com/gank/gankly/mvp/observer/RefreshObserver.java diff --git a/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java b/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java index 3bbe6969..33a9b86f 100644 --- a/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java @@ -79,7 +79,7 @@ public List filterData(GankResult gankResult, SupportView view) { } } else { if (fetchPage > 1) { - view.showRefreshError(App.getAppString(R.string.loading_error)); + view.showShortToast(App.getAppString(R.string.loading_error)); } else { view.showError(); } @@ -109,7 +109,7 @@ public List filterData(List t, SupportView view) { } } else { if (fetchPage > 1) { - view.showRefreshError(App.getAppString(R.string.loading_error)); + view.showShortToast(App.getAppString(R.string.loading_error)); } else { view.showError(); } @@ -146,7 +146,7 @@ public List filterDataBase(List t, SupportView view) { } } else { if (offSetPage > 0) { - view.showRefreshError(App.getAppString(R.string.loading_error)); + view.showShortToast(App.getAppString(R.string.loading_error)); } else { view.showError(); } @@ -163,13 +163,13 @@ public void parseError(SupportView view) { view.hideProgress(); if (App.isNetConnect()) { if (fetchPage > 1) { - view.showRefreshError(App.getAppString(R.string.loading_error)); + view.showShortToast(App.getAppString(R.string.loading_error)); } else { view.showError(); } } else { if (fetchPage > 1) { - view.showRefreshError(App.getAppString(R.string.loading_network_failure)); + view.showShortToast(App.getAppString(R.string.loading_network_failure)); } else { view.showDisNetWork(); } diff --git a/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java b/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java index 630ccb1f..22ff2e69 100644 --- a/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java @@ -1,7 +1,6 @@ package com.gank.gankly.mvp.base; import android.content.Context; -import android.support.annotation.NonNull; import com.gank.gankly.mvp.ISubscribePresenter; @@ -12,7 +11,7 @@ public abstract class BasePresenter extends BaseContract.Pre protected E mView; protected Context mContext; - public BasePresenter(@NonNull Context context, E view) { + public BasePresenter(Context context, E view) { checkNotNull(context); checkNotNull(view); this.mView = view; diff --git a/app/src/main/java/com/gank/gankly/mvp/base/SupportView.java b/app/src/main/java/com/gank/gankly/mvp/base/SupportView.java index eecee051..bb0024ff 100644 --- a/app/src/main/java/com/gank/gankly/mvp/base/SupportView.java +++ b/app/src/main/java/com/gank/gankly/mvp/base/SupportView.java @@ -19,8 +19,4 @@ public interface SupportView extends BaseView { void showDisNetWork(); void showError(); - - void showLoading(); - - void showRefreshError(String errorStr); } diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java index 1cf8260d..4b27eb3c 100644 --- a/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java +++ b/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java @@ -39,6 +39,4 @@ public void onError(@NonNull Throwable e) { protected abstract void refreshError(); protected abstract void appendError(); - - } diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java index 30037078..66038843 100644 --- a/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java +++ b/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java @@ -8,7 +8,7 @@ * Create by LingYan on 2017-10-12 */ -public abstract class PageObserver extends BaseObserver { +public abstract class PageObserver extends RefreshObserver { private boolean isFirst; public PageObserver(String tag, boolean isFirst) { @@ -32,16 +32,6 @@ public void onError(@NonNull Throwable e) { onErrorException(); } - @Override - protected void refreshError() { - - } - - @Override - protected void appendError() { - - } - @Override protected void onErrorException() { if (isFirst) { diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/RefreshObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/RefreshObserver.java new file mode 100644 index 00000000..802ce59b --- /dev/null +++ b/app/src/main/java/com/gank/gankly/mvp/observer/RefreshObserver.java @@ -0,0 +1,52 @@ +package com.gank.gankly.mvp.observer; + +/** + * Create by LingYan on 2017-11-19 + * Email:137387869@qq.com + */ + +public abstract class RefreshObserver extends BaseObserver { + public RefreshObserver(String tag) { + super(tag); + } + + @Override + protected void onSuccessEmpty() { + + } + + @Override + protected void refreshEmpty() { + + } + + @Override + protected void appendEmpty() { + + } + + @Override + protected void onErrorException() { + + } + + @Override + protected void refreshError() { + + } + + @Override + protected void appendError() { + + } + + @Override + public void onNext(T t) { + + } + + @Override + public void onComplete() { + + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java index deecf5b4..77040fe0 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java @@ -11,7 +11,6 @@ import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.text.TextUtils; import android.view.View; import com.gank.gankly.App; @@ -51,7 +50,7 @@ public class AndroidFragment extends LazyFragment implements SwipeRefreshLayout. private AndroidAdapter mAdapter; private AndroidContract.Presenter mPresenter; - private AtomicBoolean firstLoad = new AtomicBoolean(true); + private AtomicBoolean firstRefresh = new AtomicBoolean(true); @Override protected int getLayoutId() { @@ -88,6 +87,7 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { @Override protected void initLazy() { + } private void initRecycler() { @@ -151,7 +151,7 @@ public void appendAndroidFailure(String msg) { @Override public void showProgress() { - if (firstLoad.get()) { + if (firstRefresh.get()) { showLoading(); return; } @@ -163,11 +163,6 @@ public void showProgress() { @Override public void hideProgress() { - if (firstLoad.compareAndSet(true, false)) { - showContent(); - return; - } - if (swipeRefreshLayout != null) { swipeRefreshLayout.setRefreshing(false); } @@ -180,6 +175,10 @@ public void hasNoMoreDate() { @Override public void showContent() { + if (firstRefresh.get()) { + firstRefresh.set(false); + } + if (multipleStatusView != null) { multipleStatusView.showContent(); } @@ -206,8 +205,7 @@ public void showError() { } } - @Override - public void showLoading() { + private void showLoading() { if (multipleStatusView != null) { multipleStatusView.showLoading(); } @@ -215,7 +213,6 @@ public void showLoading() { @Override public void showShortToast(String str) { - str = TextUtils.isEmpty(str) ? getContext().getString(R.string.loading_error) : str; ToastUtils.showToast(str); } diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java index baab6924..2615539c 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java @@ -2,6 +2,7 @@ import android.content.Context; +import com.gank.gankly.R; import com.gank.gankly.mvp.observer.PageObserver; import com.gank.gankly.ui.android.AndroidContract.Presenter; import com.leftcoding.http.api.GankManager; @@ -113,7 +114,7 @@ protected void refreshError() { protected void appendError() { super.appendError(); if (isActivity()) { - mView.showShortToast("请求数据出错"); + mView.showShortToast(mContext.getString(R.string.loading_error)); } } } @@ -125,6 +126,7 @@ private void parseAndroidData(final PageResult result) { mPageResult = result; mPageResult.mNextPage = getNextPage(); + mView.showContent(); if (isRefreshRequest()) { mView.refreshAndroidSuccess(result.results); } else { diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java index e3aa97ea..4d74f31a 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java @@ -59,20 +59,10 @@ public void showError() { } - @Override - public void showLoading() { - - } - @Override public void showShortToast(String str) { if(!TextUtils.isEmpty(str)){ ToastUtils.showToast(str); } } - - @Override - public void showRefreshError(String errorStr) { - - } } diff --git a/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java b/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java index 8bc0ccb7..06b73099 100644 --- a/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java @@ -212,13 +212,10 @@ public void showError() { mMultipleStatusView.showError(); } - @Override - public void showLoading() { - mMultipleStatusView.showLoading(); - } - - @Override - public void showRefreshError(String errorStr) { + private void showLoading() { + if (mMultipleStatusView != null) { + mMultipleStatusView.showLoading(); + } } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java index b0156f01..eba93555 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java @@ -147,11 +147,6 @@ public void hideProgress() { mSwipeRefreshLayout.setRefreshing(false); } - @Override - public void showRefreshError(String errorStr) { - - } - @Override public void showContent() { mMultipleStatusView.showContent(); @@ -172,9 +167,10 @@ public void showError() { mMultipleStatusView.showError(); } - @Override - public void showLoading() { - mMultipleStatusView.showLoading(); + private void showLoading() { + if (mMultipleStatusView != null) { + mMultipleStatusView.showLoading(); + } } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java index 8ebd92f4..d5c54af7 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java @@ -100,12 +100,6 @@ public void hideProgress() { mSwipeRefreshLayout.setRefreshing(false); } - - @Override - public void showRefreshError(String errorStr) { - - } - @Override public void refillData(List list) { mAdapter.updateItem(list); diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java index 8e78548f..2871e7a5 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java @@ -180,8 +180,9 @@ public void showError() { mMultipleStatusView.showError(); } - @Override - public void showLoading() { - mMultipleStatusView.showLoading(); + private void showLoading() { + if (mMultipleStatusView != null) { + mMultipleStatusView.showLoading(); + } } } diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java index 01b3502c..633c91e9 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java @@ -321,16 +321,6 @@ public void showError() { } - @Override - public void showLoading() { - - } - - @Override - public void showRefreshError(String errorStr) { - - } - @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.meizi_menu, menu); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java index 4b4db14d..3414ddc7 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java @@ -158,11 +158,6 @@ public void showProgress() { mSwipeRefreshLayout.setRefreshing(true); } - @Override - public void showRefreshError(String errorStr) { - - } - @Override public void showContent() { mMultipleStatusView.showContent(); @@ -183,11 +178,6 @@ public void showError() { } - @Override - public void showLoading() { - - } - @Override public void onClick(int position, Object object) { DailyMeiziBean dailyMeiziBean = (DailyMeiziBean) object; diff --git a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java index 2b6cd146..5c44fc67 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java @@ -157,11 +157,6 @@ public void showProgress() { } - @Override - public void showRefreshError(String errorStr) { - - } - @Override public void showContent() { mMultipleStatusView.showContent(); @@ -182,9 +177,10 @@ public void showError() { } - @Override - public void showLoading() { - mSwipeRefreshLayout.setRefreshing(true); + private void showLoading() { + if (mSwipeRefreshLayout != null) { + mSwipeRefreshLayout.setRefreshing(true); + } } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java index 7caef056..84374d14 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java @@ -226,14 +226,10 @@ public void showError() { mMultipleStatusView.showError(); } - @Override - public void showLoading() { - mMultipleStatusView.showLoading(); - } - - @Override - public void showRefreshError(String errorStr) { - + private void showLoading() { + if (mMultipleStatusView != null) { + mMultipleStatusView.showLoading(); + } } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java index 6439fab1..bfbe3122 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java @@ -156,14 +156,10 @@ public void showError() { mMultipleStatusView.showError(); } - @Override - public void showLoading() { - mMultipleStatusView.showLoading(); - } - - @Override - public void showRefreshError(String errorStr) { - + private void showLoading() { + if (mMultipleStatusView != null) { + mMultipleStatusView.showLoading(); + } } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java index 93abb882..9be7df5c 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java @@ -21,6 +21,7 @@ import com.leftcoding.http.bean.ResultsBean; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; import butterknife.BindView; @@ -40,6 +41,8 @@ public class IosFragment extends LazyFragment implements IosContract.View { private IosContract.Presenter mPresenter; private RecyclerView mRecyclerView; + private final AtomicBoolean first = new AtomicBoolean(true); + @Override protected int getLayoutId() { return R.layout.layout_swipe_normal; @@ -75,7 +78,6 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { @Override protected void initLazy() { - showLoading(); initRefreshIos(); } @@ -104,12 +106,6 @@ public void onClick(View view, int position, ResultsBean bean) { } }; - @Override - public void showRefreshError(String errorStr) { - Snackbar.make(mSwipeRefreshLayout, errorStr, Snackbar.LENGTH_LONG) - .setAction(R.string.retry, v -> loadMoreIos()); - } - @Override public void showError() { mMultipleStatusView.showError(); @@ -122,6 +118,12 @@ public void showEmpty() { @Override public void showProgress() { + if (first.get()) { + if (mMultipleStatusView != null) { + mMultipleStatusView.showLoading(); + } + } + if (mSwipeRefreshLayout != null) { mSwipeRefreshLayout.setRefreshing(true); } @@ -136,7 +138,7 @@ public void hideProgress() { @Override public void hasNoMoreDate() { - + showSnackBar(mContext.getString(R.string.loading_all_over)); } @Override @@ -158,7 +160,14 @@ public void refreshIosSuccess(List list) { @Override public void refreshIosFailure(String msg) { + showSnackBar(msg); + } + private void showSnackBar(String msg) { + if (mSwipeRefreshLayout != null) { + Snackbar.make(mSwipeRefreshLayout, msg, Snackbar.LENGTH_LONG) + .setAction(R.string.retry, v -> loadMoreIos()); + } } @Override @@ -170,7 +179,7 @@ public void appendIosSuccess(List list) { @Override public void appendIosFailure(String msg) { - + showSnackBar(msg); } public static IosFragment newInstance() { diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java index 822916f5..1b0792e1 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java @@ -7,6 +7,7 @@ import com.leftcoding.http.bean.PageConfig; import com.leftcoding.http.bean.PageResult; import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.rxbus.RxManager; import com.socks.library.KLog; import java.util.concurrent.atomic.AtomicBoolean; @@ -15,8 +16,6 @@ import io.reactivex.ObservableSource; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; -import io.reactivex.functions.Action; -import io.reactivex.functions.Consumer; import io.reactivex.functions.Function; import retrofit2.Response; @@ -26,6 +25,7 @@ public class IosPresenter extends IosContract.Presenter { private static final String TAG = "ios_presenter"; + private static final int INIT_PAGE = 1; private PageResult mPageResult; private AtomicBoolean first = new AtomicBoolean(true); @@ -39,7 +39,7 @@ public IosPresenter(@NonNull Context context, IosContract.View view) { @Override void refreshIos() { - fetchData(1); + fetchData(INIT_PAGE); } @Override @@ -53,21 +53,15 @@ private void fetchData(final int page) { mPageConfig.mCurPage = page; GankManager.with(mContext) - .ios(page, 20) - .doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable disposable) throws Exception { - if (isActivity()) { - mView.showProgress(); - } + .ios(page, mPageConfig.mLimit) + .doOnSubscribe(disposable -> { + if (isActivity()) { + mView.showProgress(); } }) - .doFinally(new Action() { - @Override - public void run() throws Exception { - if (isActivity()) { - mView.hideProgress(); - } + .doFinally(() -> { + if (isActivity()) { + mView.hideProgress(); } }) .flatMap(new Function>, ObservableSource>>() { @@ -137,6 +131,7 @@ public void onComplete() { public void unSubscribe() { super.unSubscribe(); mPageResult = null; + RxManager.get().clear(TAG); } private boolean isFirst() { diff --git a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareContract.java b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareContract.java index 167c77ab..92d22d58 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareContract.java +++ b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareContract.java @@ -13,11 +13,16 @@ public class WelfareContract { interface View extends SupportView { - void refillData(List list); + void refreshData(List list); void appendData(List list); + + void refershDataFailure(String msg); + + void appendWelfareFailure(String msg); } interface Presenter extends ILoadMorePresenter { + } } diff --git a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java index d538b8d9..bacef45b 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java @@ -65,7 +65,7 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { mWelfareAdapter = new WelfareAdapter(mActivity); mWelfareAdapter.setMeiZiOnClick(this); mRecyclerView = mSwipeRefreshLayout.getRecyclerView(); - ((SimpleItemAnimator)mRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false); + ((SimpleItemAnimator) mRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false); mSwipeRefreshLayout.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { @@ -107,13 +107,6 @@ public void hasNoMoreDate() { .show(); } - @Override - public void showRefreshError(String errorStr) { - Snackbar.make(mSwipeRefreshLayout, errorStr, Snackbar.LENGTH_LONG) - .setActionTextColor(App.getAppColor(R.color.Blue)) - .setAction(R.string.retry, v -> fetchMore()).show(); - } - private void fetchNew() { mPresenter.fetchNew(); } @@ -152,9 +145,10 @@ public void showError() { mMultipleStatusView.showError(); } - @Override - public void showLoading() { - mMultipleStatusView.showLoading(); + private void showLoading() { + if (mMultipleStatusView != null) { + mMultipleStatusView.showLoading(); + } } @Override @@ -185,7 +179,7 @@ protected void callBackRefreshUi() { } @Override - public void refillData(List list) { + public void refreshData(List list) { mWelfareAdapter.refillItems(list); } @@ -193,4 +187,22 @@ public void refillData(List list) { public void appendData(List list) { mWelfareAdapter.appendItems(list); } + + @Override + public void refershDataFailure(String msg) { + showSnackbar(msg); + } + + @Override + public void appendWelfareFailure(String msg) { + showSnackbar(msg); + } + + private void showSnackbar(String msg) { + if (mSwipeRefreshLayout != null) { + Snackbar.make(mSwipeRefreshLayout, msg, Snackbar.LENGTH_LONG) + .setActionTextColor(App.getAppColor(R.color.Blue)) + .setAction(R.string.retry, v -> fetchMore()).show(); + } + } } diff --git a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfarePresenter.java b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfarePresenter.java index f1511e6c..a12f6e7a 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfarePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfarePresenter.java @@ -44,7 +44,7 @@ public void onNext(GankResult gankResult) { List list = filterData(gankResult.getResults(), mModelView); if (list != null) { if (page == 1) { - mModelView.refillData(list); + mModelView.refreshData(list); } else { mModelView.appendData(list); } diff --git a/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java b/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java index b1ac2617..a2fcaf16 100644 --- a/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java @@ -223,9 +223,4 @@ public void showContent() { public void showError() { } - - @Override - public void showLoading() { - - } } diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java b/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java index 67817526..26e06668 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java +++ b/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java @@ -17,7 +17,7 @@ * Create by LingYan on 2017-09-29 */ public class GankServer extends BaseServer { - public static final String GANK_SERVER_URL = BuildConfig.GANK_SERVER_ULR; + private static final String GANK_SERVER_URL = BuildConfig.GANK_SERVER_ULR; private GankApi mGankApi; @@ -40,7 +40,6 @@ private GankServer(Context context) { .build(); mGankApi = retrofit.create(GankApi.class); - } public static synchronized GankServer with(Context context) { From feb93e7efd928be7b631a2ddd83297451070e626 Mon Sep 17 00:00:00 2001 From: leftcoding <137387869@qq.com> Date: Mon, 27 Nov 2017 22:42:48 +0800 Subject: [PATCH 08/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 10 +- app/src/main/AndroidManifest.xml | 2 +- .../gank/gankly/{App.java => AppConfig.java} | 17 +- .../ButterKnifeFragment.java | 4 +- .../gankly/butterknife/ButterKnifeHolder.java | 19 +++ .../gankly/config/glide/ProgressTarget.java | 4 +- .../gank/gankly/listener/ItemCallBack.java | 7 + .../gank/gankly/listener/RecyclerOnClick.java | 9 -- .../com/gank/gankly/mvp/FetchPresenter.java | 14 +- .../gankly/mvp/source/LocalDataSource.java | 6 +- .../gankly/ui/android/AndroidAdapter.java | 148 ++++++++---------- .../gankly/ui/android/AndroidFragment.java | 122 +++++---------- .../gankly/ui/android/AndroidPresenter.java | 4 +- .../gankly/ui/baisi/BaiSiMainFragment.java | 9 +- .../gankly/ui/baisi/BaiSiVideoFragment.java | 3 +- .../ui/baisi/image/BaiSiImageFragment.java | 3 +- .../ui/base/BaseSwipeRefreshFragment.java | 3 +- .../gankly/ui/base/BaseThemeFragment.java | 4 +- .../com/gank/gankly/ui/base/BasicHolder.java | 19 --- .../com/gank/gankly/ui/base/ButterHolder.java | 18 --- .../gankly/ui/base/activity/BaseActivity.java | 6 +- .../gankly/ui/base/fragment/BaseFragment.java | 17 +- .../gankly/ui/base/fragment/LazyFragment.java | 3 - .../ui/base/fragment/SupportFragment.java | 1 + .../ui/base/fragment/ThemeFragment.java | 3 +- .../gankly/ui/collect/CollectFragment.java | 3 +- .../ui/discovered/DiscoveredFragment.java | 9 +- .../discovered/jiandan/JiandanFragment.java | 3 +- .../discovered/teamBlog/TeamBlogFragment.java | 3 +- .../technology/TechnologyFragment.java | 3 +- .../ui/discovered/video/VideoFragment.java | 3 +- .../gankly/ui/gallery/GalleryFragment.java | 3 +- .../gank/gankly/ui/girls/GirlsFragment.java | 7 +- .../gankly/ui/girls/cure/CureFragment.java | 6 +- .../girls/dailymeizi/DailyMeiziFragment.java | 6 +- .../gankly/ui/girls/pure/PureFragment.java | 7 +- .../ui/history/BrowseHistoryFragment.java | 3 +- .../com/gank/gankly/ui/ios/IosAdapter.java | 145 +++++++---------- .../com/gank/gankly/ui/ios/IosFragment.java | 131 ++++++++-------- .../com/gank/gankly/ui/ios/IosPresenter.java | 4 +- .../gank/gankly/ui/main/IndexFragment.java | 7 +- .../gankly/ui/main/tab/MainTabFragment.java | 5 +- .../ui/main/welfare/WelfareFragment.java | 9 +- .../com/gank/gankly/ui/mine/MineFragment.java | 14 +- .../gank/gankly/ui/more/AboutFragment.java | 7 +- .../gank/gankly/ui/more/SettingFragment.java | 9 +- .../gankly/ui/web/JiandanWebActivity.java | 4 +- .../gankly/ui/web/normal/WebActivity.java | 15 +- .../java/com/gank/gankly/utils/AppUtils.java | 6 +- .../com/gank/gankly/utils/DisplayUtils.java | 6 +- .../gank/gankly/utils/GanklyPreferences.java | 4 +- .../com/gank/gankly/utils/GlideCatchUtil.java | 12 +- .../com/gank/gankly/utils/NetworkUtils.java | 10 +- .../com/gank/gankly/utils/ShareUtils.java | 4 +- .../com/gank/gankly/utils/StyleUtils.java | 8 +- .../com/gank/gankly/utils/ToastUtils.java | 8 +- .../com/gank/gankly/widget/ItemTextView.java | 6 +- .../java/com/gank/gankly/widget/LSwitch.java | 12 +- settings.gradle | 2 +- support-ly-http/build.gradle | 25 ++- .../com/leftcoding/http/api/BaseServer.java | 8 - .../com/leftcoding/http/api/GankServer.java | 52 ------ ...ankManager.java => GankServerManager.java} | 17 +- .../http/base/GankServerHelper.java | 89 +++++++++++ .../HttpBuilderControl.java} | 19 ++- .../http/base/MyGsonConverterFactory.java | 73 +++++++++ .../http/base/MyGsonRequestBodyConverter.java | 41 +++++ .../base/MyGsonResponseBodyConverter.java | 34 ++++ .../http/intercept/HttpLogging.java | 22 ++- support-ly-rxbus/build.gradle | 8 +- support-ly-ui/.gitignore | 1 + support-ly-ui/build.gradle | 26 +++ support-ly-ui/proguard-rules.pro | 21 +++ support-ly-ui/src/main/AndroidManifest.xml | 2 + .../main/java/android/lectcoding/ui/M.java | 8 + .../lectcoding/ui/adapter}/BaseAdapter.java | 2 +- .../lectcoding/ui/adapter/BasicHolder.java | 18 +++ .../lectcoding/ui/adapter/BasicItem.java | 19 +++ .../android/lectcoding/ui/adapter/Item.java | 12 ++ support-ly-ui/src/main/res/values/strings.xml | 3 + 80 files changed, 821 insertions(+), 618 deletions(-) rename app/src/main/java/com/gank/gankly/{App.java => AppConfig.java} (84%) rename app/src/main/java/com/gank/gankly/{ui/base/fragment => butterknife}/ButterKnifeFragment.java (92%) create mode 100644 app/src/main/java/com/gank/gankly/butterknife/ButterKnifeHolder.java create mode 100644 app/src/main/java/com/gank/gankly/listener/ItemCallBack.java delete mode 100644 app/src/main/java/com/gank/gankly/listener/RecyclerOnClick.java delete mode 100644 app/src/main/java/com/gank/gankly/ui/base/BasicHolder.java delete mode 100644 app/src/main/java/com/gank/gankly/ui/base/ButterHolder.java delete mode 100644 support-ly-http/src/main/java/com/leftcoding/http/api/BaseServer.java delete mode 100644 support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java rename support-ly-http/src/main/java/com/leftcoding/http/api/{GankManager.java => GankServerManager.java} (81%) create mode 100644 support-ly-http/src/main/java/com/leftcoding/http/base/GankServerHelper.java rename support-ly-http/src/main/java/com/leftcoding/http/{api/OkHttpBuilder.java => base/HttpBuilderControl.java} (60%) create mode 100644 support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonConverterFactory.java create mode 100644 support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonRequestBodyConverter.java create mode 100644 support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonResponseBodyConverter.java create mode 100644 support-ly-ui/.gitignore create mode 100644 support-ly-ui/build.gradle create mode 100644 support-ly-ui/proguard-rules.pro create mode 100644 support-ly-ui/src/main/AndroidManifest.xml create mode 100644 support-ly-ui/src/main/java/android/lectcoding/ui/M.java rename {app/src/main/java/com/gank/gankly/ui/base => support-ly-ui/src/main/java/android/lectcoding/ui/adapter}/BaseAdapter.java (85%) create mode 100644 support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java create mode 100644 support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicItem.java create mode 100644 support-ly-ui/src/main/java/android/lectcoding/ui/adapter/Item.java create mode 100644 support-ly-ui/src/main/res/values/strings.xml diff --git a/app/build.gradle b/app/build.gradle index d81489e3..2dfe7a02 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,32 +81,25 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' - implementation project(':support-ly-http') implementation project(':support-ly-rxbus') implementation project(':superplayerlibrary') - implementation "com.android.support:appcompat-v7:${supportVersion}" implementation "com.android.support:design:${supportVersion}" implementation "com.android.support:cardview-v7:${supportVersion}" implementation "com.android.support:recyclerview-v7:${supportVersion}" implementation "com.github.zhaokaiqiang.klog:library:${klogVersion}" - implementation "com.jakewharton:butterknife:${butterknife}" annotationProcessor "com.jakewharton:butterknife-compiler:${butterknife}" - implementation "com.squareup.retrofit2:retrofit:${retrofitVersion}" implementation "com.squareup.retrofit2:retrofit-converters:${retrofitConverters}" implementation "com.squareup.retrofit2:retrofit-adapters:${retrofitAdapters}" implementation "com.squareup.retrofit2:converter-gson:${converterGson}" implementation "com.squareup.retrofit2:adapter-rxjava2:${adapterRxjava2}" - implementation "com.squareup.okhttp3:okhttp:${okhttp}" implementation "com.squareup.okhttp3:logging-interceptor:${okhttp}" - debugCompile "com.squareup.leakcanary:leakcanary-android:${leakcanaryandroid}" releaseCompile "com.squareup.leakcanary:leakcanary-android-no-op:${leakcanaryandroid}" - implementation "com.github.bumptech.glide:glide:${glide}" implementation "com.github.bumptech.glide:annotations:${glide}" implementation "com.github.bumptech.glide:okhttp3-integration:${glide}" @@ -136,6 +129,5 @@ dependencies { implementation "io.reactivex.rxjava2:rxjava:${rxjava}" implementation "io.reactivex.rxjava2:rxandroid:${rxandroid}" implementation "com.tencent.bugly:crashreport_upgrade:${crashreportUpgrade}" - - compile 'org.jetbrains:annotations:15.0' + implementation project(':support-ly-ui') } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1ef6f544..8e73410a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,7 +23,7 @@ extends BasicHolder { + public ButterKnifeHolder(ViewGroup parent, @LayoutRes int layoutRes) { + super(parent, layoutRes); + ButterKnife.bind(this, itemView); + } +} diff --git a/app/src/main/java/com/gank/gankly/config/glide/ProgressTarget.java b/app/src/main/java/com/gank/gankly/config/glide/ProgressTarget.java index a692b248..8c516d74 100644 --- a/app/src/main/java/com/gank/gankly/config/glide/ProgressTarget.java +++ b/app/src/main/java/com/gank/gankly/config/glide/ProgressTarget.java @@ -6,7 +6,7 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.transition.Transition; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; public abstract class ProgressTarget extends WrappingTarget implements OkHttpProgressGlideModule.UIProgressListener { private T model; @@ -26,7 +26,7 @@ public final T getModel() { } public final void setModel(T model) { - Glide.get(App.getGankContext()).clearMemory(); + Glide.get(AppConfig.getGankContext()).clearMemory(); this.model = model; } diff --git a/app/src/main/java/com/gank/gankly/listener/ItemCallBack.java b/app/src/main/java/com/gank/gankly/listener/ItemCallBack.java new file mode 100644 index 00000000..97723084 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/listener/ItemCallBack.java @@ -0,0 +1,7 @@ +package com.gank.gankly.listener; + +import android.view.View; + +public interface ItemCallBack { + void onClick(View view, int position, Object object); +} \ No newline at end of file diff --git a/app/src/main/java/com/gank/gankly/listener/RecyclerOnClick.java b/app/src/main/java/com/gank/gankly/listener/RecyclerOnClick.java deleted file mode 100644 index 45140b4f..00000000 --- a/app/src/main/java/com/gank/gankly/listener/RecyclerOnClick.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gank.gankly.listener; - -import android.view.View; - -import com.leftcoding.http.bean.ResultsBean; - -public interface RecyclerOnClick { - void onClick(View view, int position, ResultsBean bean); -} \ No newline at end of file diff --git a/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java b/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java index 33a9b86f..3c85ba03 100644 --- a/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java @@ -1,6 +1,6 @@ package com.gank.gankly.mvp; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.bean.GankResult; import com.gank.gankly.mvp.base.SupportView; @@ -79,7 +79,7 @@ public List filterData(GankResult gankResult, SupportView view) { } } else { if (fetchPage > 1) { - view.showShortToast(App.getAppString(R.string.loading_error)); + view.showShortToast(AppConfig.getAppString(R.string.loading_error)); } else { view.showError(); } @@ -109,7 +109,7 @@ public List filterData(List t, SupportView view) { } } else { if (fetchPage > 1) { - view.showShortToast(App.getAppString(R.string.loading_error)); + view.showShortToast(AppConfig.getAppString(R.string.loading_error)); } else { view.showError(); } @@ -146,7 +146,7 @@ public List filterDataBase(List t, SupportView view) { } } else { if (offSetPage > 0) { - view.showShortToast(App.getAppString(R.string.loading_error)); + view.showShortToast(AppConfig.getAppString(R.string.loading_error)); } else { view.showError(); } @@ -161,15 +161,15 @@ public List filterDataBase(List t, SupportView view) { */ public void parseError(SupportView view) { view.hideProgress(); - if (App.isNetConnect()) { + if (AppConfig.isNetConnect()) { if (fetchPage > 1) { - view.showShortToast(App.getAppString(R.string.loading_error)); + view.showShortToast(AppConfig.getAppString(R.string.loading_error)); } else { view.showError(); } } else { if (fetchPage > 1) { - view.showShortToast(App.getAppString(R.string.loading_network_failure)); + view.showShortToast(AppConfig.getAppString(R.string.loading_network_failure)); } else { view.showDisNetWork(); } diff --git a/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java index 274ff3a5..1329c734 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java @@ -2,7 +2,7 @@ import android.support.annotation.NonNull; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.data.entity.ReadHistory; import com.gank.gankly.data.entity.ReadHistoryDao; import com.gank.gankly.data.entity.UrlCollect; @@ -46,8 +46,8 @@ public static LocalDataSource getInstance() { } private LocalDataSource() { - mUrlCollectDao = App.getDaoSession().getUrlCollectDao(); - mReadHistoryDao = App.getDaoSession().getReadHistoryDao(); + mUrlCollectDao = AppConfig.getDaoSession().getUrlCollectDao(); + mReadHistoryDao = AppConfig.getDaoSession().getReadHistoryDao(); } public Observable> getCollect(final int offset, final int limit) { diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java index def195e4..219751a3 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java @@ -1,8 +1,9 @@ package com.gank.gankly.ui.android; import android.content.Context; -import android.support.annotation.IntDef; -import android.support.annotation.LayoutRes; +import android.lectcoding.ui.adapter.BaseAdapter; +import android.lectcoding.ui.adapter.BasicItem; +import android.lectcoding.ui.adapter.Item; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.ViewGroup; @@ -10,38 +11,31 @@ import com.bumptech.glide.Glide; import com.gank.gankly.R; -import com.gank.gankly.listener.RecyclerOnClick; -import com.gank.gankly.ui.base.BaseAdapter; -import com.gank.gankly.ui.base.ButterHolder; +import com.gank.gankly.listener.ItemCallBack; +import com.gank.gankly.butterknife.ButterKnifeHolder; import com.gank.gankly.utils.DateUtils; import com.leftcoding.http.bean.ResultsBean; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Date; import java.util.List; import butterknife.BindView; -import static com.gank.gankly.ui.android.AndroidAdapter.DefaultItem.VIEW_DEFAULT; - /** * Create by LingYan on 2016-04-25 */ -class AndroidAdapter extends BaseAdapter { - private RecyclerOnClick mRecyclerOnClick; - private Context mContext; +class AndroidAdapter extends BaseAdapter { + private ItemCallBack itemCallBack; + private Context context; - private List mResultsBeans; - private List mItemList; + private final List resultsBeans = new ArrayList<>(); + private final List itemList = new ArrayList<>(); AndroidAdapter(@NonNull Context context) { + this.context = context; setHasStableIds(true); - mContext = context; - mResultsBeans = new ArrayList<>(); - mItemList = new ArrayList<>(); registerAdapterDataObserver(dataObserver); } @@ -49,12 +43,11 @@ class AndroidAdapter extends BaseAdapter { @Override public void onChanged() { super.onChanged(); - mItemList.clear(); - int size = getItemCount(); - if (size > 0) { - for (ResultsBean resultsBean : mResultsBeans) { + itemList.clear(); + if (!resultsBeans.isEmpty()) { + for (ResultsBean resultsBean : resultsBeans) { if (resultsBean != null) { - mItemList.add(new TextItem(resultsBean)); + itemList.add(new TextItem(resultsBean)); } } } @@ -63,18 +56,18 @@ public void onChanged() { @Override public int getItemViewType(int position) { - if (mItemList != null && !mItemList.isEmpty()) { - return mItemList.get(position).getType(); + if (!itemList.isEmpty()) { + return itemList.get(position).getViewType(); } - return -1; + return RecyclerView.INVALID_TYPE; } @Override - public DefaultHolder onCreateViewHolder(ViewGroup parent, int viewType) { - DefaultHolder defaultHolder; + public ButterKnifeHolder onCreateViewHolder(ViewGroup parent, int viewType) { + ButterKnifeHolder defaultHolder; switch (viewType) { - case VIEW_DEFAULT: - defaultHolder = new TextHolder(mContext, parent); + case TextKnifeHolder.LAYOUT: + defaultHolder = new TextKnifeHolder(parent, itemCallBack); break; default: defaultHolder = null; @@ -83,23 +76,25 @@ public DefaultHolder onCreateViewHolder(ViewGroup parent, int viewType) { return defaultHolder; } - @SuppressWarnings("unchecked") @Override - public void onBindViewHolder(DefaultHolder holder, int position) { - if (holder instanceof TextHolder) { - holder.bindItem(mContext, mItemList.get(position)); + public void onBindViewHolder(ButterKnifeHolder holder, int position) { + final Item item = itemList.get(position); + switch (holder.getItemViewType()) { + case TextKnifeHolder.LAYOUT: + ((TextKnifeHolder) holder).bindItem((TextItem) item); + break; } } @Override - public void onViewRecycled(DefaultHolder holder) { + public void onViewRecycled(ButterKnifeHolder holder) { super.onViewRecycled(holder); - Glide.get(mContext).clearMemory(); + Glide.get(context).clearMemory(); } @Override public int getItemCount() { - return mResultsBeans == null ? 0 : mResultsBeans.size(); + return resultsBeans == null ? 0 : resultsBeans.size(); } @Override @@ -108,58 +103,57 @@ public long getItemId(int position) { } void fillItems(List results) { - mResultsBeans.clear(); + resultsBeans.clear(); appendItems(results); } public void appendItems(List results) { - mResultsBeans.addAll(results); + resultsBeans.addAll(results); this.notifyDataSetChanged(); } - public void setOnItemClickListener(RecyclerOnClick onItemClickListener) { - mRecyclerOnClick = onItemClickListener; + public void setOnItemClickListener(ItemCallBack itemCallBack) { + this.itemCallBack = itemCallBack; } @Override public void destroy() { - if (mItemList != null) { - mItemList.clear(); - mItemList = null; + if (itemList != null) { + itemList.clear(); } - if (mResultsBeans != null) { - mResultsBeans.clear(); - mResultsBeans = null; + if (resultsBeans != null) { + resultsBeans.clear(); } unregisterAdapterDataObserver(dataObserver); } - private class TextItem implements DefaultItem { - - private ResultsBean mResultsBean; - - @Override - public int getType() { - return VIEW_DEFAULT; - } + private class TextItem extends BasicItem { + private ResultsBean resultsBean; TextItem(ResultsBean resultsBean) { - this.mResultsBean = resultsBean; + this.resultsBean = resultsBean; } ResultsBean getResultsBean() { - return mResultsBean; + return resultsBean; } public String getTime() { - Date date = DateUtils.formatToDate(mResultsBean.publishedAt); + Date date = DateUtils.formatToDate(resultsBean.publishedAt); return DateUtils.formatString(date, DateUtils.MM_DD); } + + @Override + public int getViewType() { + return TextKnifeHolder.LAYOUT; + } } - class TextHolder extends DefaultHolder { + static class TextKnifeHolder extends ButterKnifeHolder { + static final int LAYOUT = R.layout.adapter_android; + @BindView(R.id.author_name) TextView authorName; @@ -169,12 +163,16 @@ class TextHolder extends DefaultHolder { @BindView(R.id.title) TextView title; - TextHolder(Context context, ViewGroup parent) { - super(context, parent, R.layout.adapter_android); + final ItemCallBack itemCallBack; + + TextKnifeHolder(ViewGroup parent, ItemCallBack itemCallBack) { + super(parent, R.layout.adapter_android); + this.itemCallBack = itemCallBack; } @Override - public void bindItem(Context context, TextItem item) { + public void bindItem(TextItem item) { + item.setContext(itemView.getContext()); final ResultsBean resultsBean = item.getResultsBean(); time.setText(item.getTime()); @@ -182,34 +180,10 @@ public void bindItem(Context context, TextItem item) { authorName.setText(resultsBean.getWho()); itemView.setOnClickListener(v -> { - if (mRecyclerOnClick != null) { - mRecyclerOnClick.onClick(v, getAdapterPosition(), resultsBean); + if (itemCallBack != null) { + itemCallBack.onClick(v, getAdapterPosition(), resultsBean); } }); } } - - static abstract class DefaultHolder extends ButterHolder { - - DefaultHolder(Context context, ViewGroup parent, @LayoutRes int layoutID) { - super(context, parent, layoutID); - } - - public abstract void bindItem(Context context, II item); - } - - interface DefaultItem { - int VIEW_DEFAULT = 0; - - @IntDef({ - VIEW_DEFAULT - }) - - @Retention(RetentionPolicy.SOURCE) - @interface ViewType { - } - - @ViewType - int getType(); - } } diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java index 77040fe0..e16a5db9 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java @@ -2,21 +2,17 @@ import android.content.Context; import android.content.Intent; -import android.content.res.ColorStateList; -import android.graphics.Color; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; -import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; -import com.gank.gankly.App; import com.gank.gankly.R; import com.gank.gankly.config.Constants; -import com.gank.gankly.listener.RecyclerOnClick; +import com.gank.gankly.listener.ItemCallBack; import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.web.normal.WebActivity; @@ -36,8 +32,7 @@ /** * Create by LingYan on 2016-4-26 */ -public class AndroidFragment extends LazyFragment implements SwipeRefreshLayout.OnRefreshListener, - RecyclerOnClick, AndroidContract.View { +public class AndroidFragment extends LazyFragment implements AndroidContract.View { @BindView(R.id.multiple_status_view) MultipleStatusView multipleStatusView; @@ -66,22 +61,16 @@ public void onAttach(Context context) { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - - initAdapter(); initRecycler(); - mAdapter.setOnItemClickListener(this); - swipeRefreshLayout.setOnRefreshListener(this); - multipleStatusView.setListener(v -> { - showLoading(); - mPresenter.refreshAndroid(); - }); + mAdapter.setOnItemClickListener(itemCallBack); + multipleStatusView.setListener(onMultipleClick); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mPresenter = new AndroidPresenter(mContext, this); + mPresenter = new AndroidPresenter(getBaseContext(), this); mPresenter.refreshAndroid(); } @@ -91,43 +80,46 @@ protected void initLazy() { } private void initRecycler() { + mAdapter = new AndroidAdapter(getBaseContext()); + swipeRefreshLayout.setAdapter(mAdapter); mRecyclerView = swipeRefreshLayout.getRecyclerView(); - swipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity)); - swipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { - @Override - public void onRefresh() { - mPresenter.refreshAndroid(); - } - - @Override - public void onLoadMore() { - mPresenter.appendAndroid(); - } - }); - } + swipeRefreshLayout.setLayoutManager(new LinearLayoutManager(getContext())); + swipeRefreshLayout.setOnScrollListener(onRefreshListener); + } + + private final ItemCallBack itemCallBack = (view, position, object) -> { + if (object instanceof ResultsBean) { + ResultsBean resultsBean = (ResultsBean) object; + Bundle bundle = new Bundle(); + bundle.putString(WebActivity.TITLE, resultsBean.desc); + bundle.putString(WebActivity.URL, resultsBean.url); + bundle.putString(WebActivity.TYPE, Constants.ANDROID); + bundle.putString(WebActivity.AUTHOR, resultsBean.who); + Intent intent = new Intent(mActivity, WebActivity.class); + intent.putExtras(bundle); + CircularAnimUtils.startActivity(mActivity, intent, view, R.color.white_half); + } + }; - private void initAdapter() { - mAdapter = new AndroidAdapter(mContext); - swipeRefreshLayout.setAdapter(mAdapter); - } + private final LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener onRefreshListener = new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + @Override + public void onRefresh() { + mPresenter.refreshAndroid(); + } - @Override - public void onRefresh() { - swipeRefreshLayout.setRefreshing(true); - mPresenter.refreshAndroid(); - } + @Override + public void onLoadMore() { + mPresenter.appendAndroid(); + } + }; - @Override - public void onClick(View view, int position, ResultsBean bean) { - Bundle bundle = new Bundle(); - bundle.putString(WebActivity.TITLE, bean.desc); - bundle.putString(WebActivity.URL, bean.url); - bundle.putString(WebActivity.TYPE, Constants.ANDROID); - bundle.putString(WebActivity.AUTHOR, bean.who); - Intent intent = new Intent(mActivity, WebActivity.class); - intent.putExtras(bundle); - CircularAnimUtils.startActivity(mActivity, intent, view, R.color.white_half); - } + private final MultipleStatusView.OnMultipleClick onMultipleClick = new MultipleStatusView.OnMultipleClick() { + @Override + public void retry(View v) { + showLoading(); + mPresenter.refreshAndroid(); + } + }; @Override public void refreshAndroidSuccess(List list) { @@ -237,38 +229,6 @@ public void onDestroyView() { } } - private ColorStateList getSwitchThumbColorStateList() { - int mSelectColor; - int unSelectColor; - - if (App.isNight()) { - mSelectColor = R.color.switch_thumb_disabled_dark; - unSelectColor = R.color.navigation_item_icon; - } else { - mSelectColor = R.color.colorAccent; - unSelectColor = R.color.gray; - } - - final int[][] states = new int[3][]; - final int[] colors = new int[3]; - - // Disabled state - states[0] = new int[]{-android.R.attr.state_enabled}; - colors[0] = (Color.DKGRAY); - - // Checked state - states[1] = new int[]{android.R.attr.state_checked}; - - colors[1] = App.getAppColor(mSelectColor); - - // Unchecked enabled state state - states[2] = new int[0]; - - colors[2] = App.getAppColor(unSelectColor); - - return new ColorStateList(states, colors); - } - protected void callBackRefreshUi() { ThemeColor themeColor = new ThemeColor(this); RecyclerViewColor mRecycler = new RecyclerViewColor(mRecyclerView); diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java index 2615539c..86de5766 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java @@ -5,7 +5,7 @@ import com.gank.gankly.R; import com.gank.gankly.mvp.observer.PageObserver; import com.gank.gankly.ui.android.AndroidContract.Presenter; -import com.leftcoding.http.api.GankManager; +import com.leftcoding.http.api.GankServerManager; import com.leftcoding.http.bean.PageConfig; import com.leftcoding.http.bean.PageResult; import com.leftcoding.http.bean.ResultsBean; @@ -48,7 +48,7 @@ public void unSubscribe() { private void fetchAndroid(final int curPage) { mPageConfig.mCurPage = curPage; - GankManager.with(mContext) + GankServerManager.with(mContext) .androids(curPage, mPageConfig.mLimit) .doOnSubscribe(disposable -> { if (isActivity()) { diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java index 35b3ff76..cd3f68c7 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.res.Resources; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; @@ -11,11 +12,11 @@ import android.util.TypedValue; import android.view.View; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.ui.baisi.image.BaiSiImageFragment; import com.gank.gankly.ui.base.fragment.LazyFragment; -import com.gank.gankly.ui.base.fragment.ButterKnifeFragment; +import com.gank.gankly.butterknife.ButterKnifeFragment; import com.gank.gankly.ui.main.GankPagerAdapter; import java.util.ArrayList; @@ -57,7 +58,7 @@ public void onAttach(Context context) { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mToolbar.setTitle(R.string.baisi_leisure_time); mActivity.setSupportActionBar(mToolbar); @@ -98,7 +99,7 @@ private void initTabLayout() { mTabLayout.setupWithViewPager(mViewPager); mTabLayout.setTabMode(TabLayout.MODE_FIXED); - mTabLayout.setSelectedTabIndicatorColor(App.getAppColor(R.color.white)); + mTabLayout.setSelectedTabIndicatorColor(AppConfig.getAppColor(R.color.white)); } /** diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java index 4df40fb9..d67e82d0 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.view.View; @@ -47,7 +48,7 @@ public void onAttach(Context context) { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initViews(); } diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java index 86a9cc1e..d866547d 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java @@ -2,6 +2,7 @@ import android.content.Context; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.view.View; @@ -47,7 +48,7 @@ protected void initLazy() { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); int spacingInPixels = getResources().getDimensionPixelSize(R.dimen.recycler_view_space); mSwipeRefreshLayout.getRecyclerView().addItemDecoration(new SpaceItemDecoration(spacingInPixels)); diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseSwipeRefreshFragment.java b/app/src/main/java/com/gank/gankly/ui/base/BaseSwipeRefreshFragment.java index a700bf01..a5cfdb05 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseSwipeRefreshFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/BaseSwipeRefreshFragment.java @@ -1,6 +1,7 @@ package com.gank.gankly.ui.base; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.View; @@ -12,7 +13,7 @@ public abstract class BaseSwipeRefreshFragment extends BaseThemeFragment { @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { initPresenter(); super.onViewCreated(view, savedInstanceState); } diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseThemeFragment.java b/app/src/main/java/com/gank/gankly/ui/base/BaseThemeFragment.java index e508e1ea..86afe05b 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseThemeFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/BaseThemeFragment.java @@ -10,7 +10,7 @@ import com.gank.gankly.R; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; -import com.gank.gankly.ui.base.fragment.ButterKnifeFragment; +import com.gank.gankly.butterknife.ButterKnifeFragment; import com.gank.gankly.utils.ListUtils; import com.gank.gankly.widget.LYRelativeLayoutRipple; @@ -28,7 +28,7 @@ public abstract class BaseThemeFragment extends ButterKnifeFragment { private Disposable mDisposable; @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mDisposable = RxBus_.getInstance().toObservable(ThemeEvent.class) .subscribe(themeEvent -> callBackRefreshUi()); diff --git a/app/src/main/java/com/gank/gankly/ui/base/BasicHolder.java b/app/src/main/java/com/gank/gankly/ui/base/BasicHolder.java deleted file mode 100644 index c840b9fe..00000000 --- a/app/src/main/java/com/gank/gankly/ui/base/BasicHolder.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.gank.gankly.ui.base; - -import android.content.Context; -import android.support.annotation.LayoutRes; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.ViewGroup; - -/** - * Create by LingYan on 2017-10-14 - */ - -public abstract class BasicHolder extends RecyclerView.ViewHolder { - - public BasicHolder(Context context, ViewGroup parent, @LayoutRes int layoutID) { - super(LayoutInflater.from(context).inflate(layoutID, parent, false)); - - } -} diff --git a/app/src/main/java/com/gank/gankly/ui/base/ButterHolder.java b/app/src/main/java/com/gank/gankly/ui/base/ButterHolder.java deleted file mode 100644 index 17ea6982..00000000 --- a/app/src/main/java/com/gank/gankly/ui/base/ButterHolder.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.gank.gankly.ui.base; - -import android.content.Context; -import android.support.annotation.LayoutRes; -import android.view.ViewGroup; - -import butterknife.ButterKnife; - -/** - * Create by LingYan on 2017-10-13 - */ - -public abstract class ButterHolder extends BasicHolder { - public ButterHolder(Context context, ViewGroup parent, @LayoutRes int layoutID) { - super(context, parent, layoutID); - ButterKnife.bind(this, itemView); - } -} diff --git a/app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java b/app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java index 5d995717..81a4a828 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java @@ -17,7 +17,7 @@ import android.view.View; import android.widget.TextView; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import butterknife.ButterKnife; @@ -193,7 +193,7 @@ private void addFragment(Fragment fragment, Bundle bundle, String tag) { protected void initPresenter() {} protected void initTheme() { - if (App.isNight()) { + if (AppConfig.isNight()) { setTheme(R.style.AppTheme_Night); } else { setTheme(R.style.AppTheme_light); @@ -230,7 +230,7 @@ public void showSnackbar(View view, int rexText, int resColor) { @Override protected void onDestroy() { super.onDestroy(); - ((App) this.getApplication()).getRefWatcher().watch(this); + ((AppConfig) this.getApplication()).getRefWatcher().watch(this); if (mUnBinder != null) { mUnBinder.unbind(); mUnBinder = null; diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java index 573759ce..4ec4d290 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java @@ -10,22 +10,21 @@ import android.view.View; import android.view.ViewGroup; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; /** * Create by LingYan on 2016-04-05 - * Email:137387869@qq.com */ public abstract class BaseFragment extends Fragment { - protected Context mContext; - protected AppCompatActivity mActivity; + protected Context context; + protected AppCompatActivity activity; @Override public void onAttach(Context context) { super.onAttach(context); - mContext = context; - mActivity = (AppCompatActivity) context; + this.context = context; + this.activity = (AppCompatActivity) context; } @Nullable @@ -47,6 +46,10 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { @Override public void onDestroyView() { super.onDestroyView(); - ((App) mActivity.getApplication()).getRefWatcher().watch(this); + ((AppConfig) activity.getApplication()).getRefWatcher().watch(this); + } + + public Context getBaseContext() { + return this.context; } } diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/LazyFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/LazyFragment.java index 0e943526..fa75aba1 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/fragment/LazyFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/LazyFragment.java @@ -3,8 +3,6 @@ import android.os.Bundle; import android.support.annotation.Nullable; -import com.socks.library.KLog; - /** * Create by LingYan on 2016-5-12 */ @@ -33,7 +31,6 @@ public void setUserVisibleHint(boolean isVisibleToUser) { protected abstract void initLazy(); private void lazyLoadData() { - KLog.d("isVisible:" + isVisible + ",isFirstLoad:" + isFirstLoad + ",isView:" + isView); if (!isVisible || !isFirstLoad || !isView) { return; } diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java index 4d74f31a..4e342867 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java @@ -6,6 +6,7 @@ import android.text.TextUtils; import android.view.View; +import com.gank.gankly.butterknife.ButterKnifeFragment; import com.gank.gankly.mvp.base.SupportView; import com.gank.gankly.utils.ToastUtils; diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java index af962d0d..744784ae 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java @@ -8,6 +8,7 @@ import android.view.View; import com.gank.gankly.R; +import com.gank.gankly.butterknife.ButterKnifeFragment; import com.gank.gankly.utils.ListUtils; import com.gank.gankly.widget.LYRelativeLayoutRipple; @@ -24,7 +25,7 @@ public abstract class ThemeFragment extends ButterKnifeFragment { private SwipeRefreshLayout mSwipeRefreshLayout; @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } diff --git a/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java b/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java index 06b73099..08a11fcc 100644 --- a/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java @@ -2,6 +2,7 @@ import android.content.Context; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; @@ -62,7 +63,7 @@ public void onAttach(Context context) { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mToolbar.setTitle(R.string.mine_my_collect); mActivity.setSupportActionBar(mToolbar); diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java index 8d929f41..15515974 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java @@ -3,18 +3,19 @@ import android.content.Context; import android.content.res.Resources; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.util.TypedValue; import android.view.View; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; import com.gank.gankly.ui.base.fragment.LazyFragment; -import com.gank.gankly.ui.base.fragment.ButterKnifeFragment; +import com.gank.gankly.butterknife.ButterKnifeFragment; import com.gank.gankly.ui.discovered.jiandan.JiandanFragment; import com.gank.gankly.ui.discovered.more.DiscoveredAdapter; import com.gank.gankly.ui.discovered.more.DiscoveredMoreFragment; @@ -57,7 +58,7 @@ protected int getLayoutId() { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mDisposable = RxBus_.getInstance().toObservable(ThemeEvent.class) .subscribe(themeEvent -> { @@ -94,7 +95,7 @@ private void initTabLayout() { mTabLayout.setupWithViewPager(mViewPager); mTabLayout.setTabMode(TabLayout.MODE_FIXED); - mTabLayout.setSelectedTabIndicatorColor(App.getAppColor(R.color.white)); + mTabLayout.setSelectedTabIndicatorColor(AppConfig.getAppColor(R.color.white)); } private void refreshUi() { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java index eba93555..b0b3c75e 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.res.Resources; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -64,7 +65,7 @@ protected void initLazy() { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mAdapter = new JiandanAdapter(); mAdapter.setListener(this); diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java index 8b94b27a..520fe9d0 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -56,7 +57,7 @@ protected void initLazy() { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initValues(); } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java index d5c54af7..191da8fe 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -59,7 +60,7 @@ protected void initLazy() { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initValues(); } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java index 2871e7a5..554ce0b9 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.res.Resources; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.v4.widget.SwipeRefreshLayout; @@ -57,7 +58,7 @@ public void onAttach(Context context) { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mSwipeRefreshLayout.setRefreshing(true); // setSwipeRefreshLayout(mSwipeRefreshLayout); diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java index dd93d326..dfaa6d77 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java @@ -2,6 +2,7 @@ import android.content.Context; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.View; @@ -42,7 +43,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mProgressImageView.load(mUrl, GalleryFragment.this); mProgressImageView.setImageViewOnClick(this); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java index d2ab849d..18d0d7d4 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java @@ -3,13 +3,14 @@ import android.content.Context; import android.content.res.Resources; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.util.TypedValue; import android.view.View; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.config.Constants; import com.gank.gankly.rxjava.RxBus_; @@ -49,7 +50,7 @@ protected int getLayoutId() { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); List mList = new ArrayList<>(); mList.add(new PureFragment()); @@ -85,7 +86,7 @@ private void initTabLayout() { mTabLayout.setupWithViewPager(mViewPager); mTabLayout.setTabMode(TabLayout.MODE_FIXED); - mTabLayout.setSelectedTabIndicatorColor(App.getAppColor(R.color.white)); + mTabLayout.setSelectedTabIndicatorColor(AppConfig.getAppColor(R.color.white)); } private void refreshUi() { diff --git a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java index 3414ddc7..75014f02 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java @@ -14,7 +14,7 @@ import android.view.ViewGroup; import android.widget.TextView; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.bean.DailyMeiziBean; import com.gank.gankly.bean.GiftBean; @@ -59,7 +59,7 @@ protected int getLayoutId() { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mCureAdapter = new CureAdapter(); mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)); @@ -124,7 +124,7 @@ private void showLoadingDialog() { mDialog = new ProgressDialog(mActivity); } mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); - mDialog.setMessage(App.getAppString(R.string.loading_meizi_images)); + mDialog.setMessage(AppConfig.getAppString(R.string.loading_meizi_images)); mDialog.setIndeterminate(true); mDialog.setCanceledOnTouchOutside(true); mDialog.setOnCancelListener(dialog -> mPresenter.unSubscribe()); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java index 5c44fc67..6d2fa93c 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java @@ -14,7 +14,7 @@ import android.view.ViewGroup; import android.widget.TextView; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; @@ -59,7 +59,7 @@ protected int getLayoutId() { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mDailyMeiziAdapter = new DailyMeiziAdapter(); mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)); @@ -123,7 +123,7 @@ private void showLoadingDialog() { mDialog = new ProgressDialog(mActivity); } mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); - mDialog.setMessage(App.getAppString(R.string.loading_meizi_images)); + mDialog.setMessage(AppConfig.getAppString(R.string.loading_meizi_images)); mDialog.setIndeterminate(true); mDialog.setCanceledOnTouchOutside(true); mDialog.setOnCancelListener(dialog -> mPresenter.unSubscribe()); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java index 84374d14..092ea678 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java @@ -5,6 +5,7 @@ import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.ActivityOptionsCompat; import android.support.v7.widget.RecyclerView; @@ -14,7 +15,7 @@ import android.view.ViewGroup; import android.widget.TextView; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.bean.GiftBean; import com.gank.gankly.listener.ItemClick; @@ -67,7 +68,7 @@ public static PureFragment getInstance() { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initRecycler(); @@ -149,7 +150,7 @@ private void showDialog() { } mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); - mDialog.setMessage(App.getAppString(R.string.loading_meizi_images)); + mDialog.setMessage(AppConfig.getAppString(R.string.loading_meizi_images)); mDialog.setIndeterminate(true); mDialog.setCanceledOnTouchOutside(true); mDialog.setOnCancelListener(dialog -> mPresenter.unSubscribe()); diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java index bfbe3122..234b5831 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; @@ -53,7 +54,7 @@ public void onAttach(Context context) { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mToolbar.setTitle(R.string.mine_browse); mActivity.setSupportActionBar(mToolbar); diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java index 9343adf5..e9f73ff5 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java @@ -1,78 +1,63 @@ package com.gank.gankly.ui.ios; import android.content.Context; -import android.support.annotation.IntDef; -import android.support.annotation.LayoutRes; -import android.support.annotation.NonNull; -import android.support.v4.app.Fragment; +import android.lectcoding.ui.adapter.BaseAdapter; +import android.lectcoding.ui.adapter.BasicItem; +import android.lectcoding.ui.adapter.Item; import android.support.v7.widget.RecyclerView; -import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.bumptech.glide.Glide; import com.gank.gankly.R; -import com.gank.gankly.listener.RecyclerOnClick; -import com.gank.gankly.ui.base.BaseAdapter; -import com.gank.gankly.ui.base.ButterHolder; +import com.gank.gankly.butterknife.ButterKnifeHolder; +import com.gank.gankly.listener.ItemCallBack; import com.gank.gankly.utils.DateUtils; import com.leftcoding.http.bean.ResultsBean; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Date; import java.util.List; import butterknife.BindView; -import static com.gank.gankly.ui.ios.IosAdapter.DefaultItem.VIEW_DEFAULT; - /** * Create by LingYan on 2016-04-25 */ -class IosAdapter extends BaseAdapter { - private List mResults; - private List mItemList; +class IosAdapter extends BaseAdapter { + private final List resultsBeans = new ArrayList<>(); + private final List itemList = new ArrayList<>(); - private Fragment mFragment; - private Context mContext; + private Context context; - private RecyclerOnClick mMeiZiOnClick; + private ItemCallBack itemCallBack; IosAdapter(Context context) { - mContext = context; + this.context = context; setHasStableIds(true); - mResults = new ArrayList<>(); - mItemList = new ArrayList<>(); registerAdapterDataObserver(mObserver); } - IosAdapter(@NonNull Fragment fragment) { - this(fragment.getContext()); - mFragment = fragment; - } - private RecyclerView.AdapterDataObserver mObserver = new RecyclerView.AdapterDataObserver() { @Override public void onChanged() { super.onChanged(); - mItemList.clear(); - if (mResults != null && !mResults.isEmpty()) { - for (ResultsBean resultsBean : mResults) { - mItemList.add(new TextItem(resultsBean)); + itemList.clear(); + if (!resultsBeans.isEmpty()) { + for (ResultsBean resultsBean : resultsBeans) { + itemList.add(new TextItem(resultsBean)); } } } }; @Override - public DefaultHolder onCreateViewHolder(ViewGroup parent, int viewType) { - DefaultHolder defaultHolder; + public ButterKnifeHolder onCreateViewHolder(ViewGroup parent, int viewType) { + ButterKnifeHolder defaultHolder; switch (viewType) { - case VIEW_DEFAULT: - defaultHolder = new GankViewHolder(parent.getContext(), parent); + case TextHolder.LAYOUT: + defaultHolder = new TextHolder(parent, itemCallBack); break; default: defaultHolder = null; @@ -82,32 +67,38 @@ public DefaultHolder onCreateViewHolder(ViewGroup parent, int viewType) { } @Override - public void onBindViewHolder(DefaultHolder holder, int position) { - holder.bindItem(mFragment, mItemList.get(position)); + public void onBindViewHolder(ButterKnifeHolder holder, int position) { + final Item item = itemList.get(position); + switch (holder.getItemViewType()) { + case TextHolder.LAYOUT: + ((TextHolder) holder).bindItem((TextItem) item); + break; + } } @Override public int getItemViewType(int position) { - return mItemList.get(position).getType(); + return itemList.get(position).getViewType(); } @Override - public void onViewRecycled(DefaultHolder holder) { + public void onViewRecycled(ButterKnifeHolder holder) { super.onViewRecycled(holder); - Glide.get(mContext).clearMemory(); + Glide.get(context).clearMemory(); } @Override public int getItemCount() { - return mResults == null ? 0 : mResults.size(); + return resultsBeans.size(); } - public void fillItems(List results) { + void fillItems(List results) { + resultsBeans.clear(); appendItems(results); } public void appendItems(List results) { - mResults.addAll(results); + resultsBeans.addAll(results); this.notifyDataSetChanged(); } @@ -121,11 +112,12 @@ public void destroy() { unregisterAdapterDataObserver(mObserver); } - public void setOnItemClickListener(RecyclerOnClick onItemClickListener) { - mMeiZiOnClick = onItemClickListener; + public void setOnItemClickListener(ItemCallBack itemCallBack) { + this.itemCallBack = itemCallBack; } - class GankViewHolder extends DefaultHolder { + static class TextHolder extends ButterKnifeHolder { + static final int LAYOUT = R.layout.adapter_ios; @BindView(R.id.author_name) TextView authorName; @@ -135,71 +127,48 @@ class GankViewHolder extends DefaultHolder { @BindView(R.id.title) TextView title; - GankViewHolder(Context context, ViewGroup parent) { - super(context, parent, R.layout.adapter_ios); + ItemCallBack itemCallBack; + + TextHolder(ViewGroup parent, ItemCallBack itemCallBack) { + super(parent, LAYOUT); + this.itemCallBack = itemCallBack; } @Override - public void bindItem(Fragment fragment, TextItem item) { - final Context context = fragment.getContext(); + public void bindItem(TextItem item) { final ResultsBean resultsBean = item.getResultsBean(); - Date date = DateUtils.formatToDate(resultsBean.publishedAt); - String formatDate = DateUtils.formatString(date, DateUtils.MM_DD); - time.setText(formatDate); + time.setText(item.getTime()); title.setText(resultsBean.desc); authorName.setText(resultsBean.getWho()); - itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (mMeiZiOnClick != null) { - mMeiZiOnClick.onClick(v, getAdapterPosition(), resultsBean); - } + itemView.setOnClickListener(v -> { + if (itemCallBack != null) { + itemCallBack.onClick(v, getAdapterPosition(), resultsBean); } }); } } - abstract class DefaultHolder extends ButterHolder { - - DefaultHolder(Context context, ViewGroup parent, @LayoutRes int layoutID) { - super(context, parent, layoutID); - } - - public abstract void bindItem(Fragment fragment, II item); - } - - class TextItem implements DefaultItem { - private ResultsBean mResultsBean; + class TextItem extends BasicItem { + private ResultsBean resultsBean; TextItem(ResultsBean resultsBean) { - mResultsBean = resultsBean; + this.resultsBean = resultsBean; } ResultsBean getResultsBean() { - return mResultsBean; + return resultsBean; } - @Override - public int getType() { - return VIEW_DEFAULT; + public String getTime() { + Date date = DateUtils.formatToDate(resultsBean.publishedAt); + return DateUtils.formatString(date, DateUtils.MM_DD); } - } - - interface DefaultItem { - int VIEW_DEFAULT = 1; - - @IntDef({ - VIEW_DEFAULT - }) - - @Retention(RetentionPolicy.SOURCE) - @interface ViewType { + @Override + public int getViewType() { + return TextHolder.LAYOUT; } - - @ViewType - int getType(); } } diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java index 9be7df5c..6b0117d5 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java @@ -2,6 +2,7 @@ import android.content.Context; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.v7.widget.LinearLayoutManager; @@ -10,12 +11,9 @@ import com.gank.gankly.R; import com.gank.gankly.config.Constants; -import com.gank.gankly.listener.RecyclerOnClick; +import com.gank.gankly.listener.ItemCallBack; import com.gank.gankly.ui.base.fragment.LazyFragment; -import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.web.normal.WebActivity; -import com.gank.gankly.utils.theme.RecyclerViewColor; -import com.gank.gankly.utils.theme.ThemeColor; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; import com.leftcoding.http.bean.ResultsBean; @@ -31,15 +29,13 @@ */ public class IosFragment extends LazyFragment implements IosContract.View { @BindView(R.id.multiple_status_view) - MultipleStatusView mMultipleStatusView; + MultipleStatusView multipleStatusView; @BindView(R.id.swipe_refresh) - LySwipeRefreshLayout mSwipeRefreshLayout; + LySwipeRefreshLayout swipeRefresh; - private MainActivity mActivity; - private IosAdapter mAdapter; - private IosContract.Presenter mPresenter; - private RecyclerView mRecyclerView; + private IosAdapter iosAdapter; + private IosContract.Presenter iosPresenter; private final AtomicBoolean first = new AtomicBoolean(true); @@ -51,40 +47,39 @@ protected int getLayoutId() { @Override public void onAttach(Context context) { super.onAttach(context); - this.mActivity = (MainActivity) context; } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - mAdapter = new IosAdapter(this); + iosAdapter = new IosAdapter(getBaseContext()); - mSwipeRefreshLayout.setAdapter(mAdapter); - mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity)); - mSwipeRefreshLayout.setOnScrollListener(mSwipeRefRecyclerViewListener); + swipeRefresh.setAdapter(iosAdapter); + swipeRefresh.setLayoutManager(new LinearLayoutManager(getBaseContext())); + swipeRefresh.setOnScrollListener(onSwipeRefRecyclerViewListener); - mRecyclerView = mSwipeRefreshLayout.getRecyclerView(); - mRecyclerView.setHasFixedSize(true); + RecyclerView recyclerView = swipeRefresh.getRecyclerView(); + recyclerView.setHasFixedSize(true); - mAdapter.setOnItemClickListener(mRecyclerOnClick); - mMultipleStatusView.setListener(v -> initRefreshIos()); + iosAdapter.setOnItemClickListener(mItemCallBack); + multipleStatusView.setListener(v -> refreshIos()); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mPresenter = new IosPresenter(getContext(), this); + iosPresenter = new IosPresenter(getBaseContext(), this); } @Override protected void initLazy() { - initRefreshIos(); + refreshIos(); } - private LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener mSwipeRefRecyclerViewListener = new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + private LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener onSwipeRefRecyclerViewListener = new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { @Override public void onRefresh() { - initRefreshIos(); + refreshIos(); } @Override @@ -93,68 +88,75 @@ public void onLoadMore() { } }; - private RecyclerOnClick mRecyclerOnClick = new RecyclerOnClick() { - - @Override - public void onClick(View view, int position, ResultsBean bean) { + private final ItemCallBack mItemCallBack = (view, position, object) -> { + if (object instanceof ResultsBean) { + ResultsBean bean = (ResultsBean) object; Bundle bundle = new Bundle(); bundle.putString(WebActivity.TITLE, bean.desc); bundle.putString(WebActivity.URL, bean.url); bundle.putString(WebActivity.AUTHOR, bean.who); bundle.putString(WebActivity.TYPE, Constants.IOS); - WebActivity.startWebActivity(mActivity, bundle); + WebActivity.startWebActivity(getBaseContext(), bundle); } }; @Override public void showError() { - mMultipleStatusView.showError(); + if (multipleStatusView != null) { + multipleStatusView.showError(); + } } @Override public void showEmpty() { - mMultipleStatusView.showEmpty(); + if (multipleStatusView != null) { + multipleStatusView.showEmpty(); + } } @Override public void showProgress() { if (first.get()) { - if (mMultipleStatusView != null) { - mMultipleStatusView.showLoading(); + if (multipleStatusView != null) { + multipleStatusView.showLoading(); } } - if (mSwipeRefreshLayout != null) { - mSwipeRefreshLayout.setRefreshing(true); + if (swipeRefresh != null) { + swipeRefresh.setRefreshing(true); } } @Override public void hideProgress() { - if (mSwipeRefreshLayout != null) { - mSwipeRefreshLayout.setRefreshing(false); + if (swipeRefresh != null) { + swipeRefresh.setRefreshing(false); } } @Override public void hasNoMoreDate() { - showSnackBar(mContext.getString(R.string.loading_all_over)); + showSnackBar(getBaseContext().getString(R.string.loading_all_over)); } @Override public void showContent() { - mMultipleStatusView.showContent(); + if (multipleStatusView != null) { + multipleStatusView.showContent(); + } } @Override public void showDisNetWork() { - mMultipleStatusView.showDisNetwork(); + if (multipleStatusView != null) { + multipleStatusView.showDisNetwork(); + } } @Override public void refreshIosSuccess(List list) { - if (mAdapter != null) { - mAdapter.fillItems(list); + if (iosAdapter != null) { + iosAdapter.fillItems(list); } } @@ -164,16 +166,16 @@ public void refreshIosFailure(String msg) { } private void showSnackBar(String msg) { - if (mSwipeRefreshLayout != null) { - Snackbar.make(mSwipeRefreshLayout, msg, Snackbar.LENGTH_LONG) + if (swipeRefresh != null) { + Snackbar.make(swipeRefresh, msg, Snackbar.LENGTH_LONG) .setAction(R.string.retry, v -> loadMoreIos()); } } @Override public void appendIosSuccess(List list) { - if (mAdapter != null) { - mAdapter.appendItems(list); + if (iosAdapter != null) { + iosAdapter.appendItems(list); } } @@ -189,36 +191,35 @@ public static IosFragment newInstance() { return fragment; } - private void initRefreshIos() { - if (mPresenter != null) { - mPresenter.refreshIos(); + private void refreshIos() { + if (iosPresenter != null) { + iosPresenter.refreshIos(); } } private void loadMoreIos() { - if (mPresenter != null) { - mPresenter.appendIos(); + if (iosPresenter != null) { + iosPresenter.appendIos(); } } @Override public void onDestroyView() { super.onDestroyView(); - if (mPresenter != null) { - mPresenter.unSubscribe(); + if (iosPresenter != null) { + iosPresenter.unSubscribe(); } } - protected void callBackRefreshUi() { - ThemeColor themeColor = new ThemeColor(this); - RecyclerViewColor mRecycler = new RecyclerViewColor(mRecyclerView); - mRecycler.setItemColor(R.id.title, R.attr.baseAdapterItemTextColor); - mRecycler.setItemColor(R.id.time, R.attr.textSecondaryColor); -// mRecycler.setItemBackgroundColor(R.id.ll, R.attr.lyItemSelectBackground); - - themeColor.setBackgroundResource(R.attr.themeBackground, mRecyclerView); - themeColor.swipeRefresh(mSwipeRefreshLayout); - themeColor.recyclerViewColor(mRecycler); - themeColor.start(); - } +// protected void callBackRefreshUi() { +// ThemeColor themeColor = new ThemeColor(this); +// RecyclerViewColor mRecycler = new RecyclerViewColor(recyclerView); +// mRecycler.setItemColor(R.id.title, R.attr.baseAdapterItemTextColor); +// mRecycler.setItemColor(R.id.time, R.attr.textSecondaryColor); +// +// themeColor.setBackgroundResource(R.attr.themeBackground, recyclerView); +// themeColor.swipeRefresh(swipeRefresh); +// themeColor.recyclerViewColor(mRecycler); +// themeColor.start(); +// } } diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java index 1b0792e1..1b81d34e 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java @@ -3,7 +3,7 @@ import android.content.Context; import android.support.annotation.NonNull; -import com.leftcoding.http.api.GankManager; +import com.leftcoding.http.api.GankServerManager; import com.leftcoding.http.bean.PageConfig; import com.leftcoding.http.bean.PageResult; import com.leftcoding.http.bean.ResultsBean; @@ -52,7 +52,7 @@ void appendIos() { private void fetchData(final int page) { mPageConfig.mCurPage = page; - GankManager.with(mContext) + GankServerManager.with(mContext) .ios(page, mPageConfig.mLimit) .doOnSubscribe(disposable -> { if (isActivity()) { diff --git a/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java b/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java index 2cd2fa57..8c61d6f2 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.res.Resources; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; @@ -11,7 +12,7 @@ import android.util.TypedValue; import android.view.View; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.bean.CheckVersion; import com.gank.gankly.config.Constants; @@ -57,7 +58,7 @@ public void onAttach(Context context) { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); changeThemeBackground(); @@ -100,7 +101,7 @@ private void initTabLayout() { mTabLayout.setupWithViewPager(mViewPager); mTabLayout.setTabMode(TabLayout.MODE_FIXED); - mTabLayout.setSelectedTabIndicatorColor(App.getAppColor(R.color.white)); + mTabLayout.setSelectedTabIndicatorColor(AppConfig.getAppColor(R.color.white)); } /** diff --git a/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabFragment.java b/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabFragment.java index ecc791a2..2f56c961 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabFragment.java @@ -1,10 +1,11 @@ package com.gank.gankly.ui.main.tab; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.View; -import com.gank.gankly.ui.base.fragment.ButterKnifeFragment; +import com.gank.gankly.butterknife.ButterKnifeFragment; /** * Create by LingYan on 2017-09-28 @@ -14,7 +15,7 @@ public abstract class MainTabFragment extends ButterKnifeFragment implements Mai private MainTabPresenter mPresenter; @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } diff --git a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java index bacef45b..c1d60ddf 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.v4.app.ActivityOptionsCompat; @@ -11,7 +12,7 @@ import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.View; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.listener.MeiziOnClick; import com.gank.gankly.mvp.source.remote.GankDataSource; @@ -58,7 +59,7 @@ public static WelfareFragment newInstance() { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); // setSwipeRefreshLayout(mSwipeRefreshLayout); @@ -103,7 +104,7 @@ protected void initLazy() { @Override public void hasNoMoreDate() { Snackbar.make(mSwipeRefreshLayout, R.string.tip_no_more_load, Snackbar.LENGTH_LONG) - .setActionTextColor(App.getAppColor(R.color.Blue)) + .setActionTextColor(AppConfig.getAppColor(R.color.Blue)) .show(); } @@ -201,7 +202,7 @@ public void appendWelfareFailure(String msg) { private void showSnackbar(String msg) { if (mSwipeRefreshLayout != null) { Snackbar.make(mSwipeRefreshLayout, msg, Snackbar.LENGTH_LONG) - .setActionTextColor(App.getAppColor(R.color.Blue)) + .setActionTextColor(AppConfig.getAppColor(R.color.Blue)) .setAction(R.string.retry, v -> fetchMore()).show(); } } diff --git a/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java b/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java index b2003324..5e541a1a 100644 --- a/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java @@ -14,11 +14,11 @@ import android.view.View; import android.widget.TextView; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; -import com.gank.gankly.ui.base.fragment.ButterKnifeFragment; +import com.gank.gankly.butterknife.ButterKnifeFragment; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.more.MoreActivity; import com.gank.gankly.utils.GanklyPreferences; @@ -68,7 +68,7 @@ protected int getLayoutId() { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); selectItemSwitch(); @@ -78,7 +78,7 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { } private void selectTheme(boolean isChecked) { - App.setIsNight(isChecked); + AppConfig.setIsNight(isChecked); GanklyPreferences.putBoolean(IS_NIGHT, isChecked); if (isChecked) { @@ -113,7 +113,7 @@ public void apply(@NonNull LSwitch view, int index) { ButterKnife.apply(mTextViewList, new ButterKnife.Action() { @Override public void apply(@NonNull TextView view, int index) { - view.setTextColor(App.getAppColor(itemTextColor)); + view.setTextColor(AppConfig.getAppColor(itemTextColor)); } }); @@ -126,7 +126,7 @@ public void apply(@NonNull LinearLayoutCompat view, int index) { } private void selectItemSwitch() { - boolean isNight = App.isNight(); + boolean isNight = AppConfig.isNight(); themeSwitch.setChecked(isNight); } @@ -156,7 +156,7 @@ void onSetting() { @OnClick(R.id.mine_rl_night) void onNight() { - isNight = !App.isNight(); + isNight = !AppConfig.isNight(); selectTheme(isNight); } diff --git a/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java b/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java index 1cb8cddf..36751491 100644 --- a/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java @@ -5,13 +5,14 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.CollapsingToolbarLayout; import android.support.v7.app.ActionBar; import android.support.v7.widget.Toolbar; import android.view.View; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.ui.base.fragment.SupportFragment; @@ -45,9 +46,9 @@ public void onAttach(Context context) { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - mCollapsingToolbarLayout.setTitle(App.getAppString(R.string.navigation_about)); + mCollapsingToolbarLayout.setTitle(AppConfig.getAppString(R.string.navigation_about)); mActivity.setSupportActionBar(mToolbar); ActionBar bar = mActivity.getSupportActionBar(); if (bar != null) { diff --git a/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java b/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java index a2fcaf16..5af1df48 100644 --- a/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java @@ -3,13 +3,14 @@ import android.app.ProgressDialog; import android.content.Context; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.ActionBar; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.TextView; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.bean.CheckVersion; import com.gank.gankly.config.Preferences; @@ -77,7 +78,7 @@ public static SettingFragment getInstance() { } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initPreferences(); @@ -104,7 +105,7 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { private void initPreferences() { - String summary = App.getAppResources().getString(R.string.setting_current_version, + String summary = AppConfig.getAppResources().getString(R.string.setting_current_version, AppUtils.getVersionName(mActivity)); itemUpdate.setTextSummary(summary); itemUpdate.setTextName(R.string.setting_check_version); @@ -157,7 +158,7 @@ private void createDialog() { if (mProgressDialog == null) { mProgressDialog = new ProgressDialog(mActivity); } - mProgressDialog.setMessage(App.getAppString(R.string.dialog_checking)); + mProgressDialog.setMessage(AppConfig.getAppString(R.string.dialog_checking)); mProgressDialog.show(); } diff --git a/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java b/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java index 64c5cbfc..ffbda135 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java @@ -18,7 +18,7 @@ import android.widget.FrameLayout; import android.widget.ProgressBar; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.config.Constants; import com.gank.gankly.data.entity.UrlCollect; @@ -158,7 +158,7 @@ protected void initValues() { mFromWay = bundle.getInt(FROM_WAY); } - mUrlCollectDao = App.getDaoSession().getUrlCollectDao(); + mUrlCollectDao = AppConfig.getDaoSession().getUrlCollectDao(); List list = mUrlCollectDao.queryBuilder().where(UrlCollectDao.Properties.Url.eq(mUrl)).list(); if (!ListUtils.isListEmpty(list)) { isInitCollect = true; diff --git a/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java b/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java index 70d95483..2e8ceaf1 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.web.normal; import android.annotation.SuppressLint; -import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; @@ -18,7 +18,7 @@ import android.widget.FrameLayout; import android.widget.ProgressBar; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.config.Constants; import com.gank.gankly.data.entity.ReadHistory; @@ -111,7 +111,7 @@ protected void initPresenter() { @Override protected void initTheme() { super.initTheme(); - if (App.isNight()) { + if (AppConfig.isNight()) { setTheme(R.style.AppTheme_Night_NoActionBar); } else { setTheme(R.style.AppTheme_light_NoActionBar); @@ -194,15 +194,14 @@ private void parseBundle() { mAuthor = bundle.getString(AUTHOR); mFromType = bundle.getInt(FROM_TYPE); } -// KLog.d("mUrl:" + mUrl); } - public static void startWebActivity(Activity activity, Bundle bundle) { - Intent intent = new Intent(activity, WebActivity.class); + public static void startWebActivity(Context context, Bundle bundle) { + Intent intent = new Intent(context, WebActivity.class); if (bundle != null) { intent.putExtras(bundle); } - activity.startActivity(intent); + context.startActivity(intent); } @Override @@ -247,7 +246,7 @@ public boolean onOptionsItemSelected(MenuItem item) { isCollect = !isCollect; mPresenter.collectAction(isCollect); - showSnackbar(mView, resText, App.getAppColor(resColor)); + showSnackbar(mView, resText, AppConfig.getAppColor(resColor)); switchCollectIcon(isCollect); return true; case R.id.welfare_share: diff --git a/app/src/main/java/com/gank/gankly/utils/AppUtils.java b/app/src/main/java/com/gank/gankly/utils/AppUtils.java index d34771e2..28214359 100644 --- a/app/src/main/java/com/gank/gankly/utils/AppUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/AppUtils.java @@ -8,7 +8,7 @@ import android.os.Build; import android.util.DisplayMetrics; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.socks.library.KLog; import java.util.List; @@ -72,12 +72,12 @@ public static String getVersionName(Context context) { } public static int getDisplayWidth() { - DisplayMetrics dm = App.getGankContext().getResources().getDisplayMetrics(); + DisplayMetrics dm = AppConfig.getGankContext().getResources().getDisplayMetrics(); return dm.widthPixels; } public static int getDisplayHeight() { - DisplayMetrics dm = App.getGankContext().getResources().getDisplayMetrics(); + DisplayMetrics dm = AppConfig.getGankContext().getResources().getDisplayMetrics(); return dm.heightPixels; } diff --git a/app/src/main/java/com/gank/gankly/utils/DisplayUtils.java b/app/src/main/java/com/gank/gankly/utils/DisplayUtils.java index e1dc2975..345c6770 100644 --- a/app/src/main/java/com/gank/gankly/utils/DisplayUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/DisplayUtils.java @@ -8,17 +8,17 @@ import android.content.Context; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; public class DisplayUtils { public static float px2dp(final float px) { - return px / App.getAppResources().getDisplayMetrics().density; + return px / AppConfig.getAppResources().getDisplayMetrics().density; } public static float dp2px(final float dp) { - return dp * App.getAppResources().getDisplayMetrics().density; + return dp * AppConfig.getAppResources().getDisplayMetrics().density; } /** diff --git a/app/src/main/java/com/gank/gankly/utils/GanklyPreferences.java b/app/src/main/java/com/gank/gankly/utils/GanklyPreferences.java index caeab2af..f133c6c4 100644 --- a/app/src/main/java/com/gank/gankly/utils/GanklyPreferences.java +++ b/app/src/main/java/com/gank/gankly/utils/GanklyPreferences.java @@ -3,7 +3,7 @@ import android.content.Context; import android.content.SharedPreferences; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import javax.annotation.Nullable; @@ -45,7 +45,7 @@ public static SharedPreferences initPreference(String name) { if (mSharedPreferences == null) { synchronized (GanklyPreferences.class) { if (mSharedPreferences == null) { - mSharedPreferences = App.getGankContext().getSharedPreferences(name, Context.MODE_PRIVATE); + mSharedPreferences = AppConfig.getGankContext().getSharedPreferences(name, Context.MODE_PRIVATE); } } } diff --git a/app/src/main/java/com/gank/gankly/utils/GlideCatchUtil.java b/app/src/main/java/com/gank/gankly/utils/GlideCatchUtil.java index 2629565e..9d5c0e18 100644 --- a/app/src/main/java/com/gank/gankly/utils/GlideCatchUtil.java +++ b/app/src/main/java/com/gank/gankly/utils/GlideCatchUtil.java @@ -3,7 +3,7 @@ import android.os.Looper; import com.bumptech.glide.Glide; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import java.io.File; import java.math.BigDecimal; @@ -21,7 +21,7 @@ public static GlideCatchUtil getInstance() { // 获取Glide磁盘缓存大小 public String getCacheSize() { try { - return getFormatSize(getFolderSize(new File(FileUtils.getGlideDefaultPath(App.getGankContext())))); + return getFormatSize(getFolderSize(new File(FileUtils.getGlideDefaultPath(AppConfig.getGankContext())))); } catch (Exception e) { e.printStackTrace(); return "获取失败"; @@ -30,16 +30,16 @@ public String getCacheSize() { // 清除Glide磁盘缓存,自己获取缓存文件夹并删除方法 public boolean cleanCatchDisk() { - return deleteFolderFile(FileUtils.getGlideDefaultPath(App.getGankContext()), true); + return deleteFolderFile(FileUtils.getGlideDefaultPath(AppConfig.getGankContext()), true); } // 清除图片磁盘缓存,调用Glide自带方法 public boolean clearCacheDiskSelf() { try { if (Looper.myLooper() == Looper.getMainLooper()) { - new Thread(() -> Glide.get(App.getGankContext()).clearDiskCache()).start(); + new Thread(() -> Glide.get(AppConfig.getGankContext()).clearDiskCache()).start(); } else { - Glide.get(App.getGankContext()).clearDiskCache(); + Glide.get(AppConfig.getGankContext()).clearDiskCache(); } return true; } catch (Exception e) { @@ -52,7 +52,7 @@ public boolean clearCacheDiskSelf() { public boolean clearCacheMemory() { try { if (Looper.myLooper() == Looper.getMainLooper()) { //只能在主线程执行 - Glide.get(App.getGankContext()).clearMemory(); + Glide.get(AppConfig.getGankContext()).clearMemory(); return true; } } catch (Exception e) { diff --git a/app/src/main/java/com/gank/gankly/utils/NetworkUtils.java b/app/src/main/java/com/gank/gankly/utils/NetworkUtils.java index 4eeb8f7f..80585128 100644 --- a/app/src/main/java/com/gank/gankly/utils/NetworkUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/NetworkUtils.java @@ -5,7 +5,7 @@ import android.net.NetworkInfo; import android.telephony.TelephonyManager; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; /** * Create by LingYan on 2016-6-3 @@ -16,9 +16,9 @@ public class NetworkUtils { * 判断网络连接是否可用 */ public static boolean isNetworkAvailable() { - return (App.getGankContext().getSystemService(Context.CONNECTIVITY_SERVICE) != + return (AppConfig.getGankContext().getSystemService(Context.CONNECTIVITY_SERVICE) != null) && (( - (ConnectivityManager) App.getGankContext().getSystemService(Context.CONNECTIVITY_SERVICE)) + (ConnectivityManager) AppConfig.getGankContext().getSystemService(Context.CONNECTIVITY_SERVICE)) .getActiveNetworkInfo() != null); } @@ -43,7 +43,7 @@ public static boolean isWiFiEnabled(Context context) { * 判断是否是移动网络 */ public static boolean isMobileNetwork() { - NetworkInfo networkInfo = ((ConnectivityManager) App.getGankContext().getSystemService(Context + NetworkInfo networkInfo = ((ConnectivityManager) AppConfig.getGankContext().getSystemService(Context .CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); return (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_MOBILE); } @@ -52,7 +52,7 @@ public static boolean isMobileNetwork() { * 判断是否是WiFi */ public static boolean isWiFi() { - NetworkInfo networkInfo = ((ConnectivityManager) App.getGankContext().getSystemService(Context + NetworkInfo networkInfo = ((ConnectivityManager) AppConfig.getGankContext().getSystemService(Context .CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); return (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI); } diff --git a/app/src/main/java/com/gank/gankly/utils/ShareUtils.java b/app/src/main/java/com/gank/gankly/utils/ShareUtils.java index 83326239..e4593fe5 100644 --- a/app/src/main/java/com/gank/gankly/utils/ShareUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/ShareUtils.java @@ -5,7 +5,7 @@ import android.net.Uri; import android.text.TextUtils; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; /** @@ -36,7 +36,7 @@ public void shareText(Context context, String title, String share) { shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_TEXT, share); shareIntent.setType("text/plain"); - context.startActivity(Intent.createChooser(shareIntent, App.getAppString(R.string.share_to))); + context.startActivity(Intent.createChooser(shareIntent, AppConfig.getAppString(R.string.share_to))); } public static void shareSingleImage(Context context, Uri result) { diff --git a/app/src/main/java/com/gank/gankly/utils/StyleUtils.java b/app/src/main/java/com/gank/gankly/utils/StyleUtils.java index 6ba53051..419b928e 100644 --- a/app/src/main/java/com/gank/gankly/utils/StyleUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/StyleUtils.java @@ -3,7 +3,7 @@ import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.RecyclerView; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.socks.library.KLog; @@ -24,13 +24,13 @@ public static void changeSwipeRefreshLayout(SwipeRefreshLayout swipeRefreshLayou int progressColor = R.color.white; int schemeColor = R.color.colorAccent; - if (App.isNight()) { + if (AppConfig.isNight()) { progressColor = R.color.baseSwipeRefreshLayoutProgressSchemeColor; schemeColor = R.color.baseSwipeRefreshLayoutSchemeColors; } - swipeRefreshLayout.setProgressBackgroundColorSchemeColor(App.getAppColor(progressColor)); - swipeRefreshLayout.setColorSchemeColors(App.getAppColor(schemeColor)); + swipeRefreshLayout.setProgressBackgroundColorSchemeColor(AppConfig.getAppColor(progressColor)); + swipeRefreshLayout.setColorSchemeColors(AppConfig.getAppColor(schemeColor)); } //让 RecyclerView 缓存在 Pool 中的 Item 失效 diff --git a/app/src/main/java/com/gank/gankly/utils/ToastUtils.java b/app/src/main/java/com/gank/gankly/utils/ToastUtils.java index 8655d4ea..40e9dd7e 100644 --- a/app/src/main/java/com/gank/gankly/utils/ToastUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/ToastUtils.java @@ -3,7 +3,7 @@ import android.view.Gravity; import android.widget.Toast; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; /** * Create by LingYan on 2016-04-01 @@ -36,21 +36,21 @@ public static void longToast(int resText) { private static void show(String msg, int duration) { cancel(); - mToast = Toast.makeText(App.getGankContext(), msg, duration); + mToast = Toast.makeText(AppConfig.getGankContext(), msg, duration); mToast.setGravity(Gravity.CENTER, 0, 0); mToast.show(); } private static void show(int resText, int duration) { cancel(); - mToast = Toast.makeText(App.getGankContext(), resText, duration); + mToast = Toast.makeText(AppConfig.getGankContext(), resText, duration); mToast.setGravity(Gravity.CENTER, 0, 0); mToast.show(); } private static void show(int resText, int duration, int gravity) { cancel(); - mToast = Toast.makeText(App.getGankContext(), resText, duration); + mToast = Toast.makeText(AppConfig.getGankContext(), resText, duration); mToast.setGravity(gravity, 0, 100); mToast.show(); } diff --git a/app/src/main/java/com/gank/gankly/widget/ItemTextView.java b/app/src/main/java/com/gank/gankly/widget/ItemTextView.java index d905fd74..0232bbc4 100644 --- a/app/src/main/java/com/gank/gankly/widget/ItemTextView.java +++ b/app/src/main/java/com/gank/gankly/widget/ItemTextView.java @@ -8,7 +8,7 @@ import android.widget.RelativeLayout; import android.widget.TextView; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; import butterknife.BindView; @@ -54,8 +54,8 @@ public ItemTextView(Context context, AttributeSet attrs, int defStyleAttr) { mSummary = array.getString(R.styleable.ItemTextView_textSummary); mTitleSize = array.getInteger(R.styleable.ItemTextView_textTitleSize, 14); mSummarySize = array.getInteger(R.styleable.ItemTextView_textSummarySize, 12); - mTitleColor = array.getColor(R.styleable.ItemTextView_textTitleColor, App.getAppColor(R.color.text_default)); - mSummaryColor = array.getColor(R.styleable.ItemTextView_textSummaryColor, App.getAppColor(R.color.text_999999)); + mTitleColor = array.getColor(R.styleable.ItemTextView_textTitleColor, AppConfig.getAppColor(R.color.text_default)); + mSummaryColor = array.getColor(R.styleable.ItemTextView_textSummaryColor, AppConfig.getAppColor(R.color.text_999999)); } catch (Exception e) { throw new IllegalArgumentException(e); } diff --git a/app/src/main/java/com/gank/gankly/widget/LSwitch.java b/app/src/main/java/com/gank/gankly/widget/LSwitch.java index 72c61274..9cf17d1d 100644 --- a/app/src/main/java/com/gank/gankly/widget/LSwitch.java +++ b/app/src/main/java/com/gank/gankly/widget/LSwitch.java @@ -7,7 +7,7 @@ import android.support.v7.widget.SwitchCompat; import android.util.AttributeSet; -import com.gank.gankly.App; +import com.gank.gankly.AppConfig; import com.gank.gankly.R; /** @@ -50,12 +50,12 @@ private ColorStateList getSwitchThumbColorStateList() { // Checked state states[1] = new int[]{android.R.attr.state_checked}; - if (App.isNight()) { + if (AppConfig.isNight()) { mColor = R.color.switch_thumb_disabled_dark; } else { mColor = R.color.colorAccent; } - colors[1] = App.getAppColor(mColor); + colors[1] = AppConfig.getAppColor(mColor); // Unchecked enabled state state states[2] = new int[0]; @@ -75,9 +75,9 @@ private ColorStateList getSwitchTrackColorStateList() { // Checked state states[1] = new int[]{android.R.attr.state_checked}; colors[1] = Color.argb(0x4D, // 30% alpha - Color.red(App.getAppColor(mColor)), - Color.green(App.getAppColor(mColor)), - Color.blue(App.getAppColor(mColor))); + Color.red(AppConfig.getAppColor(mColor)), + Color.green(AppConfig.getAppColor(mColor)), + Color.blue(AppConfig.getAppColor(mColor))); // Unchecked enabled state state states[2] = new int[0]; diff --git a/settings.gradle b/settings.gradle index c8ca1588..ef27ebba 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':app', ':superplayerlibrary', ':ijkplayerlibrary', ':javalib', ':support-ly-http', ':support-ly-rxbus' +include ':app', ':superplayerlibrary', ':ijkplayerlibrary', ':javalib', ':support-ly-http', ':support-ly-rxbus', ':support-ly-ui' diff --git a/support-ly-http/build.gradle b/support-ly-http/build.gradle index b5bfe498..b76757c7 100644 --- a/support-ly-http/build.gradle +++ b/support-ly-http/build.gradle @@ -23,27 +23,24 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } - buildToolsVersion '26.0.2' } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) + implementation fileTree(dir: 'libs', include: ['*.jar']) - compile "com.google.code.gson:gson:${gsonVersion}" + implementation "com.google.code.gson:gson:${gsonVersion}" - compile "com.squareup.okhttp3:logging-interceptor:${loggingInterceptor}" + implementation "com.squareup.okhttp3:logging-interceptor:${loggingInterceptor}" - compile "com.squareup.retrofit2:retrofit:${retrofitVersion}" - compile "com.squareup.retrofit2:retrofit-converters:${retrofitConverters}" - compile "com.squareup.retrofit2:retrofit-adapters:${retrofitAdapters}" - compile "com.squareup.retrofit2:converter-gson:${converterGson}" - compile "com.squareup.retrofit2:adapter-rxjava2:${adapterRxjava2}" + implementation "com.squareup.retrofit2:retrofit:${retrofitVersion}" + implementation "com.squareup.retrofit2:converter-gson:${converterGson}" + implementation "com.squareup.retrofit2:adapter-rxjava2:${adapterRxjava2}" - compile "io.reactivex.rxjava2:rxjava:${rxjava}" - compile "io.reactivex.rxjava2:rxandroid:${rxandroid}" + implementation "io.reactivex.rxjava2:rxjava:${rxjava}" + implementation "io.reactivex.rxjava2:rxandroid:${rxandroid}" - compile "com.facebook.stetho:stetho:${stethoVersion}" - compile "com.facebook.stetho:stetho-okhttp3:${stethoOkhttp3}" + implementation "com.facebook.stetho:stetho:${stethoVersion}" + implementation "com.facebook.stetho:stetho-okhttp3:${stethoOkhttp3}" - compile "com.github.zhaokaiqiang.klog:library:${klogVersion}" + implementation "com.github.zhaokaiqiang.klog:library:${klogVersion}" } diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/BaseServer.java b/support-ly-http/src/main/java/com/leftcoding/http/api/BaseServer.java deleted file mode 100644 index 1e8bf146..00000000 --- a/support-ly-http/src/main/java/com/leftcoding/http/api/BaseServer.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.leftcoding.http.api; - -/** - * Create by LingYan on 2017-09-29 - */ - -public abstract class BaseServer { -} diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java b/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java deleted file mode 100644 index 26e06668..00000000 --- a/support-ly-http/src/main/java/com/leftcoding/http/api/GankServer.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.leftcoding.http.api; - -import android.content.Context; - -import com.facebook.stetho.okhttp3.StethoInterceptor; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.leftcoding.http.BuildConfig; -import com.leftcoding.http.intercept.HttpLogging; - -import okhttp3.OkHttpClient; -import retrofit2.Retrofit; -import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; -import retrofit2.converter.gson.GsonConverterFactory; - -/** - * Create by LingYan on 2017-09-29 - */ -public class GankServer extends BaseServer { - private static final String GANK_SERVER_URL = BuildConfig.GANK_SERVER_ULR; - - private GankApi mGankApi; - - private GankServer(Context context) { - final Gson gson = new GsonBuilder() - .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") - .serializeNulls() - .create(); - - final OkHttpClient mOkHttpClient = OkHttpBuilder.get() - .addNetworkInterceptor(new StethoInterceptor()) - .addInterceptor(HttpLogging.get().build()) - .build(); - - final Retrofit retrofit = new Retrofit.Builder() - .client(mOkHttpClient) - .addConverterFactory(GsonConverterFactory.create(gson)) - .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) - .baseUrl(GANK_SERVER_URL) - .build(); - - mGankApi = retrofit.create(GankApi.class); - } - - public static synchronized GankServer with(Context context) { - return new GankServer(context); - } - - public GankApi api() { - return mGankApi; - } -} diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/GankManager.java b/support-ly-http/src/main/java/com/leftcoding/http/api/GankServerManager.java similarity index 81% rename from support-ly-http/src/main/java/com/leftcoding/http/api/GankManager.java rename to support-ly-http/src/main/java/com/leftcoding/http/api/GankServerManager.java index b0eb792a..21d3e817 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/api/GankManager.java +++ b/support-ly-http/src/main/java/com/leftcoding/http/api/GankServerManager.java @@ -2,7 +2,9 @@ import android.content.Context; +import com.leftcoding.http.BuildConfig; import com.leftcoding.http.R; +import com.leftcoding.http.base.GankServerHelper; import com.leftcoding.http.bean.ListResult; import com.leftcoding.http.bean.PageResult; import com.leftcoding.http.bean.ResultsBean; @@ -18,17 +20,22 @@ * Create by LingYan on 2017-09-30 */ -public class GankManager { +public class GankServerManager { private final String serverError; private GankApi mApi; - private GankManager(Context context) { - mApi = GankServer.with(context).api(); + private GankServerManager(Context context) { + mApi = GankServerHelper.get() +// .addConverterFactory(MyGsonConverterFactory.create()) + .baseUrl(BuildConfig.GANK_SERVER_ULR) + .newRetrofit() + .create(GankApi.class); + serverError = context.getResources().getString(R.string.network_request_error); } - public static synchronized GankManager with(Context context) { - return new GankManager(context); + public static synchronized GankServerManager with(Context context) { + return new GankServerManager(context); } public Observable> androids(final int page, final int limit) { diff --git a/support-ly-http/src/main/java/com/leftcoding/http/base/GankServerHelper.java b/support-ly-http/src/main/java/com/leftcoding/http/base/GankServerHelper.java new file mode 100644 index 00000000..5be074a4 --- /dev/null +++ b/support-ly-http/src/main/java/com/leftcoding/http/base/GankServerHelper.java @@ -0,0 +1,89 @@ +package com.leftcoding.http.base; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import okhttp3.Interceptor; +import okhttp3.OkHttpClient; +import retrofit2.CallAdapter; +import retrofit2.Converter; +import retrofit2.Retrofit; +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; + +/** + * Create by LingYan on 2017-09-29 + */ +public class GankServerHelper { + private String mServerUrl; + + private HttpBuilderControl mHttpBuilderControl; + + private Retrofit.Builder mRetrofitBuilder; + + private OkHttpClient mOkHttpClient; + + private final Gson gson = new GsonBuilder() + .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") + .serializeNulls() + .create(); + + protected GankServerHelper() { + this(HttpBuilderControl.get(), new Retrofit.Builder()); + } + + private GankServerHelper(HttpBuilderControl httpBuilderControl, Retrofit.Builder builder) { + mHttpBuilderControl = httpBuilderControl; + mRetrofitBuilder = builder; + } + + public GankServerHelper addInterceptor(Interceptor interceptor) { + mHttpBuilderControl.addInterceptor(interceptor); + return this; + } + + public GankServerHelper addNetworkInterceptor(Interceptor interceptor) { + mHttpBuilderControl.addNetworkInterceptor(interceptor); + return this; + } + + public GankServerHelper addConverterFactory(Converter.Factory factory) { + mRetrofitBuilder.addConverterFactory(factory); + return this; + } + + public GankServerHelper addCallAdapterFactory(CallAdapter.Factory factory) { + mRetrofitBuilder.addCallAdapterFactory(factory); + return this; + } + + public GankServerHelper baseUrl(String url) { + mServerUrl = url; + return this; + } + + public GankServerHelper client(OkHttpClient client) { + mOkHttpClient = client; + return this; + } + + private OkHttpClient getClient() { + return mOkHttpClient != null ? mOkHttpClient : mHttpBuilderControl.build(); + } + + public Retrofit newRetrofit() { + return mRetrofitBuilder + .client(getClient()) +// .addConverterFactory(GsonConverterFactory.create(gson)) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) + .baseUrl(mServerUrl) + .build(); + } + + private static final class GankServerHelperHolder { + private static final GankServerHelper INSTANCE = new GankServerHelper(); + } + + public static synchronized GankServerHelper get() { + return GankServerHelperHolder.INSTANCE; + } +} diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/OkHttpBuilder.java b/support-ly-http/src/main/java/com/leftcoding/http/base/HttpBuilderControl.java similarity index 60% rename from support-ly-http/src/main/java/com/leftcoding/http/api/OkHttpBuilder.java rename to support-ly-http/src/main/java/com/leftcoding/http/base/HttpBuilderControl.java index a3902800..f6ee6fe7 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/api/OkHttpBuilder.java +++ b/support-ly-http/src/main/java/com/leftcoding/http/base/HttpBuilderControl.java @@ -1,4 +1,4 @@ -package com.leftcoding.http.api; +package com.leftcoding.http.base; import java.util.concurrent.TimeUnit; @@ -8,42 +8,41 @@ /** * Create by LingYan on 2017-09-30 - * Email:137387869@qq.com */ -public class OkHttpBuilder { +public class HttpBuilderControl { private static final int DEFAULT_OUT_TIME = 30; private OkHttpClient.Builder builder; - private OkHttpBuilder() { + private HttpBuilderControl() { builder = new OkHttpClient.Builder(); builder.connectTimeout(DEFAULT_OUT_TIME, TimeUnit.SECONDS); } @SuppressWarnings("unchecked") - public OkHttpBuilder connectTimeout(long timeout, TimeUnit unit) { + public HttpBuilderControl connectTimeout(long timeout, TimeUnit unit) { builder.connectTimeout(timeout, unit); return this; } - OkHttpBuilder addNetworkInterceptor(Interceptor interceptor) { + public HttpBuilderControl addNetworkInterceptor(Interceptor interceptor) { builder.addNetworkInterceptor(interceptor); return this; } - OkHttpBuilder addInterceptor(Interceptor interceptor) { + public HttpBuilderControl addInterceptor(Interceptor interceptor) { builder.addInterceptor(interceptor); return this; } - OkHttpClient build() { + public OkHttpClient build() { return builder.build(); } private static class SingletonHolder { - private static final OkHttpBuilder INSTANCE = new OkHttpBuilder(); + private static final HttpBuilderControl INSTANCE = new HttpBuilderControl(); } - static synchronized OkHttpBuilder get() { + static synchronized HttpBuilderControl get() { return SingletonHolder.INSTANCE; } } diff --git a/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonConverterFactory.java b/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonConverterFactory.java new file mode 100644 index 00000000..95b6ef6b --- /dev/null +++ b/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonConverterFactory.java @@ -0,0 +1,73 @@ +package com.leftcoding.http.base; + +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.reflect.TypeToken; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; + +import okhttp3.RequestBody; +import okhttp3.ResponseBody; +import retrofit2.Converter; +import retrofit2.Retrofit; + +/** + * Create by LingYan on 2017-11-21 + */ + +public class MyGsonConverterFactory extends Converter.Factory { + /* + * Copyright (C) 2015 Square, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /** + * Create an instance using a default {@link Gson} instance for conversion. Encoding to JSON and + * decoding from JSON (when no charset is specified by a header) will use UTF-8. + */ + public static MyGsonConverterFactory create() { + return create(new Gson()); + } + + /** + * Create an instance using {@code gson} for conversion. Encoding to JSON and + * decoding from JSON (when no charset is specified by a header) will use UTF-8. + */ + @SuppressWarnings("ConstantConditions") // Guarding public API nullability. + public static MyGsonConverterFactory create(Gson gson) { + if (gson == null) throw new NullPointerException("gson == null"); + return new MyGsonConverterFactory(gson); + } + + private final Gson gson; + + private MyGsonConverterFactory(Gson gson) { + this.gson = gson; + } + + @Override + public Converter responseBodyConverter(Type type, Annotation[] annotations, + Retrofit retrofit) { + TypeAdapter adapter = gson.getAdapter(TypeToken.get(type)); + return new MyGsonResponseBodyConverter<>(gson, adapter); + } + + @Override + public Converter requestBodyConverter(Type type, + Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) { + TypeAdapter adapter = gson.getAdapter(TypeToken.get(type)); + return new MyGsonRequestBodyConverter<>(gson, adapter); + } +} \ No newline at end of file diff --git a/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonRequestBodyConverter.java b/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonRequestBodyConverter.java new file mode 100644 index 00000000..1048d826 --- /dev/null +++ b/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonRequestBodyConverter.java @@ -0,0 +1,41 @@ +package com.leftcoding.http.base; + +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonWriter; + +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.nio.charset.Charset; + +import okhttp3.MediaType; +import okhttp3.RequestBody; +import okio.Buffer; +import retrofit2.Converter; + +/** + * Create by LingYan on 2017-11-21 + */ + +public class MyGsonRequestBodyConverter implements Converter { + private static final MediaType MEDIA_TYPE = MediaType.parse("application/json; charset=UTF-8"); + private static final Charset UTF_8 = Charset.forName("UTF-8"); + + private final Gson gson; + private final TypeAdapter adapter; + + MyGsonRequestBodyConverter(Gson gson, TypeAdapter adapter) { + this.gson = gson; + this.adapter = adapter; + } + + @Override public RequestBody convert(T value) throws IOException { + Buffer buffer = new Buffer(); + Writer writer = new OutputStreamWriter(buffer.outputStream(), UTF_8); + JsonWriter jsonWriter = gson.newJsonWriter(writer); + adapter.write(jsonWriter, value); + jsonWriter.close(); + return RequestBody.create(MEDIA_TYPE, buffer.readByteString()); + } +} \ No newline at end of file diff --git a/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonResponseBodyConverter.java b/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonResponseBodyConverter.java new file mode 100644 index 00000000..521342ae --- /dev/null +++ b/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonResponseBodyConverter.java @@ -0,0 +1,34 @@ +package com.leftcoding.http.base; + +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; + +import java.io.IOException; + +import okhttp3.ResponseBody; +import retrofit2.Converter; + +/** + * Create by LingYan on 2017-11-21 + */ + +public class MyGsonResponseBodyConverter implements Converter { + private final Gson gson; + private final TypeAdapter adapter; + + MyGsonResponseBodyConverter(Gson gson, TypeAdapter adapter) { + this.gson = gson; + this.adapter = adapter; + } + + @Override + public T convert(ResponseBody value) throws IOException { + JsonReader jsonReader = gson.newJsonReader(value.charStream()); + try { + return adapter.read(jsonReader); + } finally { + value.close(); + } + } +} diff --git a/support-ly-http/src/main/java/com/leftcoding/http/intercept/HttpLogging.java b/support-ly-http/src/main/java/com/leftcoding/http/intercept/HttpLogging.java index 4f38e988..7cc46d2b 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/intercept/HttpLogging.java +++ b/support-ly-http/src/main/java/com/leftcoding/http/intercept/HttpLogging.java @@ -1,33 +1,41 @@ package com.leftcoding.http.intercept; import android.support.annotation.NonNull; +import android.util.Log; import com.leftcoding.http.BuildConfig; -import com.socks.library.KLog; import okhttp3.logging.HttpLoggingInterceptor; /** * Create by LingYan on 2017-09-30 - * Email:137387869@qq.com */ public class HttpLogging { - private HttpLoggingInterceptor logging; + private static final String TAG = "OkHttpLogging"; + private HttpLoggingInterceptor mLogging; + private HttpLoggingInterceptor.Level mLevel; private HttpLogging() { - logging = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + mLogging = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { @Override public void log(@NonNull String message) { - KLog.d(message); + if (BuildConfig.DEBUG) { + Log.d(TAG, message); + } } }); - logging.setLevel(BuildConfig.DEBUG ? HttpLoggingInterceptor.Level.BODY : HttpLoggingInterceptor.Level.NONE); + mLevel = HttpLoggingInterceptor.Level.NONE; + } + + public HttpLogging setLevel(HttpLoggingInterceptor.Level level) { + mLevel = level; + return this; } public HttpLoggingInterceptor build() { - return logging; + return mLogging.setLevel(mLevel); } private static class SingletonHolder { diff --git a/support-ly-rxbus/build.gradle b/support-ly-rxbus/build.gradle index 44b66fb7..9bb9f94c 100644 --- a/support-ly-rxbus/build.gradle +++ b/support-ly-rxbus/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 25 - buildToolsVersion "26.0.2" + compileSdkVersion rootProject.compileSdkVersion + buildToolsVersion rootProject.buildToolsVersion defaultConfig { - minSdkVersion 14 - targetSdkVersion 25 + minSdkVersion rootProject.minSdkVersion + targetSdkVersion rootProject.targetSdkVersion versionCode 1 versionName "1.0" diff --git a/support-ly-ui/.gitignore b/support-ly-ui/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/support-ly-ui/.gitignore @@ -0,0 +1 @@ +/build diff --git a/support-ly-ui/build.gradle b/support-ly-ui/build.gradle new file mode 100644 index 00000000..82f6cd99 --- /dev/null +++ b/support-ly-ui/build.gradle @@ -0,0 +1,26 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion rootProject.compileSdkVersion + buildToolsVersion rootProject.buildToolsVersion + + defaultConfig { + minSdkVersion rootProject.minSdkVersion + targetSdkVersion rootProject.targetSdkVersion + versionCode 1 + versionName "1.0" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation "com.android.support:recyclerview-v7:${supportVersion}" +} diff --git a/support-ly-ui/proguard-rules.pro b/support-ly-ui/proguard-rules.pro new file mode 100644 index 00000000..f1b42451 --- /dev/null +++ b/support-ly-ui/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/support-ly-ui/src/main/AndroidManifest.xml b/support-ly-ui/src/main/AndroidManifest.xml new file mode 100644 index 00000000..f0fc81c4 --- /dev/null +++ b/support-ly-ui/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/M.java b/support-ly-ui/src/main/java/android/lectcoding/ui/M.java new file mode 100644 index 00000000..c03bcbb4 --- /dev/null +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/M.java @@ -0,0 +1,8 @@ +package android.lectcoding.ui; + +/** + * Create by LingYan on 2017-11-27 + */ + +public class M { +} diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseAdapter.java b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java similarity index 85% rename from app/src/main/java/com/gank/gankly/ui/base/BaseAdapter.java rename to support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java index caa7b2ce..3a9bdd62 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseAdapter.java +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.base; +package android.lectcoding.ui.adapter; import android.support.v7.widget.RecyclerView; diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java new file mode 100644 index 00000000..d50d55e6 --- /dev/null +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java @@ -0,0 +1,18 @@ +package android.lectcoding.ui.adapter; + +import android.support.annotation.LayoutRes; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +/** + * Create by LingYan on 2017-11-27 + */ + +public abstract class BasicHolder extends RecyclerView.ViewHolder { + public BasicHolder(ViewGroup parent, @LayoutRes int layout) { + super(LayoutInflater.from(parent.getContext()).inflate(layout, parent, false)); + } + + public abstract void bindItem(II item); +} diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicItem.java b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicItem.java new file mode 100644 index 00000000..72607d5c --- /dev/null +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicItem.java @@ -0,0 +1,19 @@ +package android.lectcoding.ui.adapter; + +import android.content.Context; + +/** + * Create by LingYan on 2017-11-27 + */ + +public abstract class BasicItem implements Item { + protected Context context; + + public void setContext(Context context) { + this.context = context; + } + + public Context getContext() { + return context; + } +} diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/Item.java b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/Item.java new file mode 100644 index 00000000..713ef8e7 --- /dev/null +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/Item.java @@ -0,0 +1,12 @@ +package android.lectcoding.ui.adapter; + +import android.support.annotation.LayoutRes; + +/** + * Create by LingYan on 2017-11-27 + */ + +public interface Item { + @LayoutRes + int getViewType(); +} diff --git a/support-ly-ui/src/main/res/values/strings.xml b/support-ly-ui/src/main/res/values/strings.xml new file mode 100644 index 00000000..a1abc7f5 --- /dev/null +++ b/support-ly-ui/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + support-ly-ui + From b7b3171a1a9b86f1404fe3d3ce9a06ec5e929851 Mon Sep 17 00:00:00 2001 From: leftcoding <137387869@qq.com> Date: Mon, 27 Nov 2017 23:00:10 +0800 Subject: [PATCH 09/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gankly/ui/android/AndroidAdapter.java | 2 +- .../gankly/ui/android/AndroidPresenter.java | 24 +++++------ .../com/gank/gankly/ui/ios/IosPresenter.java | 4 +- .../gank/gankly/ui/main/IndexFragment.java | 2 +- .../ui/{main => }/welfare/WelfareAdapter.java | 12 +++--- .../{main => }/welfare/WelfareContract.java | 2 +- .../{main => }/welfare/WelfareFragment.java | 42 ++++++++----------- .../{main => }/welfare/WelfarePresenter.java | 5 +-- .../com/leftcoding/http/bean/PageConfig.java | 1 - .../com/leftcoding/http/bean/PageResult.java | 7 +--- 10 files changed, 44 insertions(+), 57 deletions(-) rename app/src/main/java/com/gank/gankly/ui/{main => }/welfare/WelfareAdapter.java (96%) rename app/src/main/java/com/gank/gankly/ui/{main => }/welfare/WelfareContract.java (93%) rename app/src/main/java/com/gank/gankly/ui/{main => }/welfare/WelfareFragment.java (84%) rename app/src/main/java/com/gank/gankly/ui/{main => }/welfare/WelfarePresenter.java (93%) diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java index 219751a3..2326cd00 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java @@ -94,7 +94,7 @@ public void onViewRecycled(ButterKnifeHolder holder) { @Override public int getItemCount() { - return resultsBeans == null ? 0 : resultsBeans.size(); + return resultsBeans.size(); } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java index 86de5766..f58b43c5 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java @@ -18,12 +18,12 @@ class AndroidPresenter extends Presenter { private static final String TAG = "android_presenter"; private static final int INIT_PAGE = 1; - private PageResult mPageResult; - private PageConfig mPageConfig; + private PageResult pageResult; + private PageConfig pageConfig; AndroidPresenter(Context context, AndroidContract.View view) { super(context, view); - mPageConfig = new PageConfig(); + pageConfig = new PageConfig(); } @Override @@ -33,23 +33,23 @@ protected void refreshAndroid() { @Override protected void appendAndroid() { - if (mPageResult != null && !mPageResult.hasNoMore(mPageConfig.mLimit)) { - fetchAndroid(mPageResult.mNextPage); + if (pageResult != null && !pageResult.hasNoMore(pageConfig.mLimit)) { + fetchAndroid(pageResult.nextPage); } } @Override public void unSubscribe() { super.unSubscribe(); - mPageResult = null; RxManager.get().clear(TAG); + pageResult = null; } private void fetchAndroid(final int curPage) { - mPageConfig.mCurPage = curPage; + pageConfig.mCurPage = curPage; GankServerManager.with(mContext) - .androids(curPage, mPageConfig.mLimit) + .androids(curPage, pageConfig.mLimit) .doOnSubscribe(disposable -> { if (isActivity()) { mView.showProgress(); @@ -124,8 +124,8 @@ private void parseAndroidData(final PageResult result) { return; } - mPageResult = result; - mPageResult.mNextPage = getNextPage(); + pageResult = result; + pageResult.nextPage = getNextPage(); mView.showContent(); if (isRefreshRequest()) { mView.refreshAndroidSuccess(result.results); @@ -139,10 +139,10 @@ private int getNextPage() { } private boolean isRefreshRequest() { - return mPageConfig.isFirstRequest(); + return pageConfig.isFirstRequest(); } private int getCurPage() { - return mPageConfig.mCurPage; + return pageConfig.mCurPage; } } diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java index 1b81d34e..f0cf781e 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java @@ -45,7 +45,7 @@ void refreshIos() { @Override void appendIos() { if (mPageResult != null) { - fetchData(mPageResult.mNextPage); + fetchData(mPageResult.nextPage); } } @@ -104,7 +104,7 @@ public void onSubscribe(Disposable d) { @Override public void onNext(PageResult result) { mPageResult = result; - mPageResult.mNextPage = getNextPage(); + mPageResult.nextPage = getNextPage(); if (isActivity()) { if (isFirst()) { diff --git a/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java b/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java index 8c61d6f2..677c6b43 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java @@ -21,7 +21,7 @@ import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.base.fragment.SupportFragment; import com.gank.gankly.ui.ios.IosFragment; -import com.gank.gankly.ui.main.welfare.WelfareFragment; +import com.gank.gankly.ui.welfare.WelfareFragment; import com.gank.gankly.view.ILauncher; import com.socks.library.KLog; diff --git a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareAdapter.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java similarity index 96% rename from app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareAdapter.java rename to app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java index 927379c6..9f7cee20 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.main.welfare; +package com.gank.gankly.ui.welfare; import android.app.Activity; import android.content.Context; @@ -24,7 +24,7 @@ import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.transition.Transition; import com.gank.gankly.R; -import com.gank.gankly.listener.MeiziOnClick; +import com.gank.gankly.listener.ItemCallBack; import com.gank.gankly.utils.AppUtils; import com.gank.gankly.utils.gilde.ImageLoaderUtil; import com.gank.gankly.widget.ImageDefaultView; @@ -49,11 +49,11 @@ public class WelfareAdapter extends RecyclerView.Adapter heights = new ArrayMap<>(); - private MeiziOnClick mMeiZiOnClick; + private ItemCallBack itemCallBack; private Context mContext; - public void setMeiZiOnClick(MeiziOnClick meiZiOnClick) { - mMeiZiOnClick = meiZiOnClick; + public void setMeiZiOnClick(ItemCallBack itemCallBack) { + this.itemCallBack = itemCallBack; } public WelfareAdapter(Activity activity) { @@ -115,7 +115,7 @@ public boolean onResourceReady(Bitmap resource, Object model, Target tar holder.imgMeizi.setOnClickListener(v -> { if (bean.isLoaded) { - mMeiZiOnClick.onClick(v, position); + itemCallBack.onClick(v, position, null); } else { if (!holder.imgMeizi.isCanLoad()) { return; diff --git a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareContract.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java similarity index 93% rename from app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareContract.java rename to app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java index 92d22d58..a604efba 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareContract.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.main.welfare; +package com.gank.gankly.ui.welfare; import com.gank.gankly.mvp.ILoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; diff --git a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java similarity index 84% rename from app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java rename to app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java index c1d60ddf..5bae6c6b 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfareFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.main.welfare; +package com.gank.gankly.ui.welfare; import android.content.Context; import android.content.Intent; @@ -14,7 +14,7 @@ import com.gank.gankly.AppConfig; import com.gank.gankly.R; -import com.gank.gankly.listener.MeiziOnClick; +import com.gank.gankly.listener.ItemCallBack; import com.gank.gankly.mvp.source.remote.GankDataSource; import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.gallery.GalleryActivity; @@ -32,9 +32,8 @@ /** * 干货福利妹子 * Create by LingYan on 2016-5-12 - * Email:137387869@qq.com */ -public class WelfareFragment extends LazyFragment implements MeiziOnClick, WelfareContract.View { +public class WelfareFragment extends LazyFragment implements WelfareContract.View { @BindView(R.id.multiple_status_view) MultipleStatusView mMultipleStatusView; @BindView(R.id.swipe_refresh) @@ -61,10 +60,8 @@ public static WelfareFragment newInstance() { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - // setSwipeRefreshLayout(mSwipeRefreshLayout); - mWelfareAdapter = new WelfareAdapter(mActivity); - mWelfareAdapter.setMeiZiOnClick(this); + mWelfareAdapter.setMeiZiOnClick(itemCallBack); mRecyclerView = mSwipeRefreshLayout.getRecyclerView(); ((SimpleItemAnimator) mRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false); mSwipeRefreshLayout.setLayoutManager(new StaggeredGridLayoutManager(2, @@ -108,6 +105,19 @@ public void hasNoMoreDate() { .show(); } + private final ItemCallBack itemCallBack = new ItemCallBack() { + @Override + public void onClick(View view, int position, Object object) { + Bundle bundle = new Bundle(); + bundle.putInt(GalleryActivity.EXTRA_POSITION, position); + Intent intent = new Intent(mActivity, GalleryActivity.class); + intent.putExtra(GalleryActivity.TYPE, 1); + intent.putExtras(bundle); + ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(mActivity); + mActivity.startActivity(intent, activityOptionsCompat.toBundle()); + } + }; + private void fetchNew() { mPresenter.fetchNew(); } @@ -146,24 +156,6 @@ public void showError() { mMultipleStatusView.showError(); } - private void showLoading() { - if (mMultipleStatusView != null) { - mMultipleStatusView.showLoading(); - } - } - - @Override - public void onClick(View view, int position) { - Bundle bundle = new Bundle(); - bundle.putInt(GalleryActivity.EXTRA_POSITION, position); - Intent intent = new Intent(mActivity, GalleryActivity.class); - intent.putExtra(GalleryActivity.TYPE, 1); - intent.putExtras(bundle); - ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(mActivity); - mActivity.startActivity(intent, activityOptionsCompat.toBundle()); - - } - @Override public void onAttach(Context context) { super.onAttach(context); diff --git a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfarePresenter.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java similarity index 93% rename from app/src/main/java/com/gank/gankly/ui/main/welfare/WelfarePresenter.java rename to app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java index a12f6e7a..59acc482 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/welfare/WelfarePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.main.welfare; +package com.gank.gankly.ui.welfare; import com.gank.gankly.bean.GankResult; import com.gank.gankly.config.MeiziArrayList; @@ -14,14 +14,13 @@ /** * Create by LingYan on 2016-12-23 - * Email:137387869@qq.com */ public class WelfarePresenter extends FetchPresenter implements WelfareContract.Presenter { private WelfareContract.View mModelView; private GankDataSource mTask; - public WelfarePresenter(GankDataSource task, WelfareContract.View view) { + WelfarePresenter(GankDataSource task, WelfareContract.View view) { mTask = task; mModelView = view; } diff --git a/support-ly-http/src/main/java/com/leftcoding/http/bean/PageConfig.java b/support-ly-http/src/main/java/com/leftcoding/http/bean/PageConfig.java index 4698b204..937d428e 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/bean/PageConfig.java +++ b/support-ly-http/src/main/java/com/leftcoding/http/bean/PageConfig.java @@ -2,7 +2,6 @@ /** * Create by LingYan on 2017-11-18 - * Email:137387869@qq.com */ public class PageConfig { diff --git a/support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java b/support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java index f767e88a..90580aa2 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java +++ b/support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java @@ -5,12 +5,9 @@ */ public class PageResult extends ListResult { - public int mNextPage; + public int nextPage; public boolean hasNoMore(int limit) { - if (results != null && !results.isEmpty()) { - return results.size() < limit; - } - return false; + return results != null && !results.isEmpty() && results.size() < limit; } } From 1f285d73955a288a65190551698fbebc7738ed5b Mon Sep 17 00:00:00 2001 From: leftcoding <137387869@qq.com> Date: Wed, 6 Dec 2017 23:35:07 +0800 Subject: [PATCH 10/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 1 + .../main/java/com/gank/gankly/AppConfig.java | 2 +- .../com/gank/gankly/bean/JianDanBean.java | 1 - .../gank/gankly/mvp/base/BasePresenter.java | 5 +++-- .../gankly/ui/android/AndroidAdapter.java | 20 ++++++++---------- .../gankly/ui/android/AndroidPresenter.java | 14 ++++++------ .../ui/baisi/BaiSiVideoPreViewActivity.java | 1 - .../ui/baisi/image/BaiSiImageContract.java | 1 - .../ui/discovered/DiscoveredFragment.java | 1 - .../ui/discovered/jiandan/JiandanAdapter.java | 7 +++--- .../discovered/jiandan/JiandanContract.java | 1 - .../discovered/jiandan/JiandanFragment.java | 1 - .../discovered/jiandan/JiandanPresenter.java | 1 - .../discovered/teamBlog/TeamBlogAdapter.java | 1 - .../discovered/teamBlog/TeamBlogContract.java | 1 - .../teamBlog/TeamBlogPresenter.java | 3 +-- .../technology/TechnologyAdapter.java | 1 - .../technology/TechnologyFragment.java | 1 - .../ui/discovered/video/VideoAdapter.java | 1 - .../ui/discovered/video/VideoContract.java | 1 - .../ui/discovered/video/VideoFragment.java | 1 - .../ui/discovered/video/VideoPresenter.java | 3 +-- .../gank/gankly/ui/girls/GirlsFragment.java | 1 - .../gankly/ui/girls/cure/CureAdapter.java | 7 +++--- .../gankly/ui/girls/cure/CureContract.java | 1 - .../gankly/ui/girls/cure/CureFragment.java | 1 - .../gankly/ui/girls/cure/CurePresenter.java | 1 - .../girls/dailymeizi/DailyMeiziAdapter.java | 7 +++--- .../girls/dailymeizi/DailyMeiziPresenter.java | 1 - .../gankly/ui/girls/pure/PureAdapter.java | 1 - .../gankly/ui/girls/pure/PureContract.java | 3 +-- .../gankly/ui/girls/pure/PurePresenter.java | 3 +-- .../com/gank/gankly/ui/ios/IosFragment.java | 4 ++++ .../com/gank/gankly/ui/ios/IosPresenter.java | 6 +++--- .../gankly/ui/web/JiandanWebActivity.java | 1 - .../drawable-xxhdpi/bg_leave_frame_full.9.png | Bin 0 -> 124 bytes app/src/main/res/layout/adapter_android.xml | 13 ++++++------ app/src/main/res/values/colors.xml | 2 +- app/src/main/res/values/themes.xml | 2 +- build.gradle | 2 +- .../lectcoding/ui/adapter/BasicItem.java | 11 ---------- 41 files changed, 50 insertions(+), 86 deletions(-) create mode 100644 app/src/main/res/drawable-xxhdpi/bg_leave_frame_full.9.png diff --git a/app/build.gradle b/app/build.gradle index 2dfe7a02..efc868f4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -130,4 +130,5 @@ dependencies { implementation "io.reactivex.rxjava2:rxandroid:${rxandroid}" implementation "com.tencent.bugly:crashreport_upgrade:${crashreportUpgrade}" implementation project(':support-ly-ui') + implementation 'com.android.support.constraint:constraint-layout:1.0.2' } diff --git a/app/src/main/java/com/gank/gankly/AppConfig.java b/app/src/main/java/com/gank/gankly/AppConfig.java index 6ee93a3b..2e4c5ecb 100644 --- a/app/src/main/java/com/gank/gankly/AppConfig.java +++ b/app/src/main/java/com/gank/gankly/AppConfig.java @@ -50,7 +50,7 @@ public void onCreate() { // leakCanary -- end GankServerHelper.get() - .addNetworkInterceptor(HttpLogging.get().setLevel(HttpLoggingInterceptor.Level.BODY).build()) + .addNetworkInterceptor(HttpLogging.get().setLevel(HttpLoggingInterceptor.Level.HEADERS).build()) .addConverterFactory(MyGsonConverterFactory.create()); initPreferences(); diff --git a/app/src/main/java/com/gank/gankly/bean/JianDanBean.java b/app/src/main/java/com/gank/gankly/bean/JianDanBean.java index b3405968..eb657ae1 100644 --- a/app/src/main/java/com/gank/gankly/bean/JianDanBean.java +++ b/app/src/main/java/com/gank/gankly/bean/JianDanBean.java @@ -2,7 +2,6 @@ /** * Create by LingYan on 2016-11-21 - * Email:137387869@qq.com */ public class JianDanBean { diff --git a/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java b/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java index 22ff2e69..e605c9e0 100644 --- a/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java @@ -18,7 +18,8 @@ public BasePresenter(Context context, E view) { this.mContext = context; } - protected static T checkNotNull(T reference) { + @SuppressWarnings("used") + private static T checkNotNull(T reference) { if (reference == null) { throw new NullPointerException(); } @@ -37,7 +38,7 @@ public void unSubscribe() { mContext = null; } - protected boolean isActivity() { + protected boolean isActivityLife() { return mView != null; } } diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java index 2326cd00..95db8cca 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java @@ -129,7 +129,7 @@ public void destroy() { unregisterAdapterDataObserver(dataObserver); } - private class TextItem extends BasicItem { + private static class TextItem extends BasicItem { private ResultsBean resultsBean; TextItem(ResultsBean resultsBean) { @@ -163,27 +163,25 @@ static class TextKnifeHolder extends ButterKnifeHolder { @BindView(R.id.title) TextView title; - final ItemCallBack itemCallBack; + private ResultsBean resultsBean; - TextKnifeHolder(ViewGroup parent, ItemCallBack itemCallBack) { + TextKnifeHolder(ViewGroup parent, final ItemCallBack itemCallBack) { super(parent, R.layout.adapter_android); - this.itemCallBack = itemCallBack; + itemView.setOnClickListener(v -> { + if (itemCallBack != null && resultsBean != null) { + itemCallBack.onClick(v, getAdapterPosition(), resultsBean); + } + }); } @Override public void bindItem(TextItem item) { - item.setContext(itemView.getContext()); final ResultsBean resultsBean = item.getResultsBean(); + this.resultsBean = resultsBean; time.setText(item.getTime()); title.setText(resultsBean.desc); authorName.setText(resultsBean.getWho()); - - itemView.setOnClickListener(v -> { - if (itemCallBack != null) { - itemCallBack.onClick(v, getAdapterPosition(), resultsBean); - } - }); } } } diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java index f58b43c5..7ec00951 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java @@ -51,12 +51,12 @@ private void fetchAndroid(final int curPage) { GankServerManager.with(mContext) .androids(curPage, pageConfig.mLimit) .doOnSubscribe(disposable -> { - if (isActivity()) { + if (isActivityLife()) { mView.showProgress(); } }) .doFinally(() -> { - if (isActivity()) { + if (isActivityLife()) { mView.hideProgress(); } }) @@ -85,14 +85,14 @@ public void onError(Throwable e) { @Override protected void refreshEmpty() { - if (isActivity()) { + if (isActivityLife()) { mView.showEmpty(); } } @Override protected void appendEmpty() { - if (isActivity()) { + if (isActivityLife()) { mView.hasNoMoreDate(); } } @@ -105,7 +105,7 @@ public void onComplete() { @Override protected void refreshError() { super.refreshError(); - if (isActivity()) { + if (isActivityLife()) { mView.showError(); } } @@ -113,14 +113,14 @@ protected void refreshError() { @Override protected void appendError() { super.appendError(); - if (isActivity()) { + if (isActivityLife()) { mView.showShortToast(mContext.getString(R.string.loading_error)); } } } private void parseAndroidData(final PageResult result) { - if (!isActivity()) { + if (!isActivityLife()) { return; } diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPreViewActivity.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPreViewActivity.java index 168fb7ef..bb1978bc 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPreViewActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPreViewActivity.java @@ -20,7 +20,6 @@ /** * Create by LingYan on 2016-12-14 - * Email:137387869@qq.com */ public class BaiSiVideoPreViewActivity extends BaseActivity implements SuperPlayer.OnNetChangeListener { diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java index cc0332c2..b6f664c8 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java @@ -8,7 +8,6 @@ /** * Create by LingYan on 2016-12-05 - * Email:137387869@qq.com */ public interface BaiSiImageContract { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java index 15515974..62d4608f 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java @@ -33,7 +33,6 @@ /** * 发现 * Create by LingYan on 2016-07-01 - * Email:137387869@qq.com */ public class DiscoveredFragment extends ButterKnifeFragment implements ViewPager.OnPageChangeListener { private static final String TYPE_VIDEO = "视频"; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanAdapter.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanAdapter.java index 2898e681..5f7c1f4a 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanAdapter.java @@ -21,14 +21,13 @@ /** * Create by LingYan on 2016-07-20 - * Email:137387869@qq.com */ public class JiandanAdapter extends RecyclerView.Adapter { private final List mList; private ItemClick mMeiZiOnClick; private Context mContext; - public JiandanAdapter() { + JiandanAdapter() { mList = new ArrayList<>(); } @@ -55,7 +54,7 @@ public void setListener(ItemClick mMeiZiOnClick) { this.mMeiZiOnClick = mMeiZiOnClick; } - public void updateItem(List list) { + void updateItem(List list) { mList.clear(); appendItem(list); } @@ -86,7 +85,7 @@ public class JiandanHolder extends RecyclerView.ViewHolder implements View.OnCli private JianDanBean bean; - public JiandanHolder(View itemView) { + JiandanHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); itemView.setOnClickListener(this); diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java index 3176a141..89e2c07b 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java @@ -8,7 +8,6 @@ /** * Create by LingYan on 2016-11-21 - * Email:137387869@qq.com */ public interface JiandanContract { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java index b0b3c75e..996cea7c 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java @@ -32,7 +32,6 @@ /** * 新鲜事 * Create by LingYan on 2016-11-18 - * Email:137387869@qq.com */ public class JiandanFragment extends LazyFragment implements JiandanContract.View, ItemClick { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java index 8dd52946..03fde359 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java @@ -20,7 +20,6 @@ /** * Create by LingYan on 2016-11-21 - * Email:137387869@qq.com */ public class JiandanPresenter extends FetchPresenter implements JiandanContract.Presenter { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogAdapter.java b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogAdapter.java index 8a858ffb..aeb7015b 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogAdapter.java @@ -21,7 +21,6 @@ /** * Create by LingYan on 2016-07-20 - * Email:137387869@qq.com */ public class TeamBlogAdapter extends RecyclerView.Adapter { private final List mList; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogContract.java index 7c5d9da4..062894e7 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogContract.java @@ -8,7 +8,6 @@ /** * Create by LingYan on 2016-11-23 - * Email:137387869@qq.com */ public interface TeamBlogContract { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java index 534969af..eb5ccf9a 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java @@ -17,14 +17,13 @@ /** * Create by LingYan on 2016-11-23 - * Email:137387869@qq.com */ public class TeamBlogPresenter extends FetchPresenter implements TechnologyContract.Presenter { private TeamBlogDataSource mTask; private TechnologyContract.View mView; - public TeamBlogPresenter(TeamBlogDataSource task, TechnologyContract.View view) { + TeamBlogPresenter(TeamBlogDataSource task, TechnologyContract.View view) { mTask = task; mView = view; } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyAdapter.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyAdapter.java index d1ec4168..400eee87 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyAdapter.java @@ -21,7 +21,6 @@ /** * Create by LingYan on 2016-07-20 - * Email:137387869@qq.com */ public class TechnologyAdapter extends RecyclerView.Adapter { private final List mList; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java index 191da8fe..25ddeaf4 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java @@ -28,7 +28,6 @@ /** * Create by LingYan on 2016-11-23 - * Email:137387869@qq.com */ public class TechnologyFragment extends LazyFragment implements TechnologyContract.View, ItemClick { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java index fc3c2475..fa984a0e 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java @@ -25,7 +25,6 @@ /** * 视频 * Create by LingYan on 2016-04-25 - * Email:137387869@qq.com */ public class VideoAdapter extends RecyclerView.Adapter { private List mResults; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java index 75ad2b3b..cb9d50bf 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java @@ -8,7 +8,6 @@ /** * Create by LingYan on 2017-01-03 - * Email:137387869@qq.com */ public interface VideoContract { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java index 554ce0b9..9608efb2 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java @@ -32,7 +32,6 @@ /** * 休息视频 * Create by LingYan on 2016-04-25 - * Email:137387869@qq.com */ public class VideoFragment extends LazyFragment implements MeiziOnClick, SwipeRefreshLayout.OnRefreshListener, VideoContract.View { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java index 41c1e9e8..610c8642 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java @@ -15,14 +15,13 @@ /** * Create by LingYan on 2017-01-03 - * Email:137387869@qq.com */ public class VideoPresenter extends FetchPresenter implements VideoContract.Presenter { private GankDataSource mTask; private VideoContract.View mModelView; - public VideoPresenter(GankDataSource task, VideoContract.View view) { + VideoPresenter(GankDataSource task, VideoContract.View view) { mTask = task; mModelView = view; } diff --git a/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java index 18d0d7d4..2970c6cc 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java @@ -30,7 +30,6 @@ /** * 美しい妹 * Create by LingYan on 2016-07-01 - * Email:137387869@qq.com */ public class GirlsFragment extends SupportFragment implements ViewPager.OnPageChangeListener { @BindView(R.id.girl_tabLayout) diff --git a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureAdapter.java b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureAdapter.java index cf13ffdf..2c24ad92 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureAdapter.java @@ -18,13 +18,12 @@ /** * Create by LingYan on 2016-07-05 - * Email:137387869@qq.com */ public class CureAdapter extends RecyclerView.Adapter { private ItemClick mMeiZiOnClick; private List mDailyMeiziBeanList; - public CureAdapter() { + CureAdapter() { setHasStableIds(true); mDailyMeiziBeanList = new ArrayList<>(); } @@ -58,7 +57,7 @@ public long getItemId(int position) { return position; } - public void refillItem(List dailyMeiziBeanList) { + void refillItem(List dailyMeiziBeanList) { int size = mDailyMeiziBeanList.size(); mDailyMeiziBeanList.clear(); notifyItemRangeRemoved(0, size); @@ -75,7 +74,7 @@ public class DailyMeiziHolder extends RecyclerView.ViewHolder implements View.On TextView txtTitle; DailyMeiziBean dailyMeiziBean; - public DailyMeiziHolder(View itemView) { + DailyMeiziHolder(View itemView) { super(itemView); itemView.setOnClickListener(this); ButterKnife.bind(this, itemView); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureContract.java b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureContract.java index 1f42215c..ef2a6789 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureContract.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureContract.java @@ -10,7 +10,6 @@ /** * Create by LingYan on 2016-10-26 - * Email:137387869@qq.com */ public interface CureContract { diff --git a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java index 75014f02..e2e7d22d 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java @@ -38,7 +38,6 @@ /** * 妹子每日更新 * Create by LingYan on 2016-07-01 - * Email:137387869@qq.com */ public class CureFragment extends LazyFragment implements CureContract.View, ItemClick { @BindView(R.id.multiple_status_view) diff --git a/app/src/main/java/com/gank/gankly/ui/girls/cure/CurePresenter.java b/app/src/main/java/com/gank/gankly/ui/girls/cure/CurePresenter.java index e3f5b472..1597a6ba 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/cure/CurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/cure/CurePresenter.java @@ -18,7 +18,6 @@ /** * Create by LingYan on 2016-10-26 - * Email:137387869@qq.com */ class CurePresenter extends FetchPresenter implements CureContract.Presenter { diff --git a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziAdapter.java b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziAdapter.java index 73afb6a9..5768f6cc 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziAdapter.java @@ -18,13 +18,12 @@ /** * Create by LingYan on 2016-07-05 - * Email:137387869@qq.com */ public class DailyMeiziAdapter extends RecyclerView.Adapter { private ItemClick mMeiZiOnClick; private List mDailyMeiziBeanList; - public DailyMeiziAdapter() { + DailyMeiziAdapter() { setHasStableIds(true); mDailyMeiziBeanList = new ArrayList<>(); } @@ -58,7 +57,7 @@ public long getItemId(int position) { return position; } - public void refillItem(List dailyMeiziBeanList) { + void refillItem(List dailyMeiziBeanList) { int size = mDailyMeiziBeanList.size(); mDailyMeiziBeanList.clear(); notifyItemRangeRemoved(0, size); @@ -75,7 +74,7 @@ public class DailyMeiziHolder extends RecyclerView.ViewHolder implements View.On TextView txtTitle; DailyMeiziBean dailyMeiziBean; - public DailyMeiziHolder(View itemView) { + DailyMeiziHolder(View itemView) { super(itemView); itemView.setOnClickListener(this); ButterKnife.bind(this, itemView); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziPresenter.java b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziPresenter.java index d45d9658..b1a0a13c 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziPresenter.java @@ -18,7 +18,6 @@ /** * Create by LingYan on 2016-10-26 - * Email:137387869@qq.com */ public class DailyMeiziPresenter extends FetchPresenter implements DailyMeiziContract.Presenter { diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureAdapter.java b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureAdapter.java index c871a7b8..a4dfe973 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureAdapter.java @@ -25,7 +25,6 @@ /** * Create by LingYan on 2016-04-25 - * Email:137387869@qq.com */ public class PureAdapter extends RecyclerView.Adapter { private List mResults; diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureContract.java b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureContract.java index 60add02a..78c1fb6f 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureContract.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureContract.java @@ -12,7 +12,6 @@ /** * Create by LingYan on 2016-12-27 - * Email:137387869@qq.com */ public interface PureContract { @@ -26,7 +25,7 @@ interface View extends SupportView { void disLoadingDialog(); } - public abstract class Presenter extends LoadMorePresenter { + abstract class Presenter extends LoadMorePresenter { public Presenter(@NonNull Context context, @NonNull View view) { super(context, view); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java b/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java index 98d2adc3..2cd2b590 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java @@ -18,7 +18,6 @@ /** * Create by LingYan on 2016-12-27 - * Email:137387869@qq.com */ public class PurePresenter extends PureContract.Presenter { @@ -28,7 +27,7 @@ public class PurePresenter extends PureContract.Presenter { private int mMaxPageNumber; private PageConfig mPageConfig; - public PurePresenter(Context context, PureContract.View view) { + PurePresenter(Context context, PureContract.View view) { super(context, view); mPageConfig = new PageConfig(); mPageConfig.mLimit = 24; diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java index 6b0117d5..22451223 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java @@ -129,6 +129,10 @@ public void showProgress() { @Override public void hideProgress() { + if (multipleStatusView != null) { + multipleStatusView.showContent(); + } + if (swipeRefresh != null) { swipeRefresh.setRefreshing(false); } diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java index f0cf781e..4d6ef72d 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java @@ -55,12 +55,12 @@ private void fetchData(final int page) { GankServerManager.with(mContext) .ios(page, mPageConfig.mLimit) .doOnSubscribe(disposable -> { - if (isActivity()) { + if (isActivityLife()) { mView.showProgress(); } }) .doFinally(() -> { - if (isActivity()) { + if (isActivityLife()) { mView.hideProgress(); } }) @@ -106,7 +106,7 @@ public void onNext(PageResult result) { mPageResult = result; mPageResult.nextPage = getNextPage(); - if (isActivity()) { + if (isActivityLife()) { if (isFirst()) { mView.refreshIosSuccess(result.results); } else { diff --git a/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java b/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java index ffbda135..b75761e2 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java @@ -58,7 +58,6 @@ /** * Create by LingYan on 2016-5-10 - * Email:137387869@qq.com */ public class JiandanWebActivity extends BaseActivity { public static final int FROM_COLLECT = 1; diff --git a/app/src/main/res/drawable-xxhdpi/bg_leave_frame_full.9.png b/app/src/main/res/drawable-xxhdpi/bg_leave_frame_full.9.png new file mode 100644 index 0000000000000000000000000000000000000000..50febccfb4fbba8ad1a8d31dceed78440ef5f28d GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzXHOT$kcwMxuW#gJFyLW!e7k=c z+eB$~Zj}YkSed4$$3#|ne^K6c`9-Y4QlM%OU>ER%Fc_{detllj?q+&umCjX_IjgsT OggssTT-G@yGywpqcq2~$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/adapter_android.xml b/app/src/main/res/layout/adapter_android.xml index 2f285aec..c3dd38cb 100644 --- a/app/src/main/res/layout/adapter_android.xml +++ b/app/src/main/res/layout/adapter_android.xml @@ -1,12 +1,11 @@ - @@ -36,8 +35,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 76ee9a24..9a8bd2d8 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -51,7 +51,7 @@ #009688 #EFEEF4 #F1F3F6 - #f3f6f9 + #f8f8f8 #fefefe #33000000 #4093c6 diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index f1c598af..c02383d9 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -24,7 +24,7 @@ false true @color/white - @drawable/ripple_bg_light + @drawable/bg_leave_frame_full @color/white @color/colorAccent @color/text_default diff --git a/build.gradle b/build.gradle index 882ea1b6..069a7559 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.0' + classpath 'com.android.tools.build:gradle:3.0.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicItem.java b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicItem.java index 72607d5c..c1065358 100644 --- a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicItem.java +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicItem.java @@ -1,19 +1,8 @@ package android.lectcoding.ui.adapter; -import android.content.Context; - /** * Create by LingYan on 2017-11-27 */ public abstract class BasicItem implements Item { - protected Context context; - - public void setContext(Context context) { - this.context = context; - } - - public Context getContext() { - return context; - } } From da6205e78a83e7c26ed0406da629698ebafbb9e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=87=8C=E7=82=8E?= Date: Tue, 20 Mar 2018 15:04:45 +0800 Subject: [PATCH 11/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gank/gankly/ui/girls/GirlsFragment.java | 5 +- .../gankly/ui/girls/pure/PureFragment.java | 8 +- .../gankly/ui/girls/pure/PurePresenter.java | 181 ++++++++++++++---- app/src/main/res/values/strings.xml | 3 + build.gradle | 2 +- gradle.properties | 10 +- 6 files changed, 162 insertions(+), 47 deletions(-) diff --git a/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java index 18d0d7d4..a8c52c11 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java @@ -30,7 +30,6 @@ /** * 美しい妹 * Create by LingYan on 2016-07-01 - * Email:137387869@qq.com */ public class GirlsFragment extends SupportFragment implements ViewPager.OnPageChangeListener { @BindView(R.id.girl_tabLayout) @@ -54,17 +53,17 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat super.onViewCreated(view, savedInstanceState); List mList = new ArrayList<>(); mList.add(new PureFragment()); -// mList.add(new DailyMeiziFragment()); mList.add(new CureFragment()); mTitles = new ArrayList<>(); mTitles.add(Constants.QINGCHUN); mTitles.add(Constants.CURE); - mPagerAdapter = new GirlsAdapter(mActivity.getSupportFragmentManager(), mList, mTitles); + mPagerAdapter = new GirlsAdapter(getChildFragmentManager(), mList, mTitles); mViewPager.setAdapter(mPagerAdapter); mViewPager.setOffscreenPageLimit(1); mViewPager.addOnPageChangeListener(this); + mViewPager.setCurrentItem(0); initTabLayout(); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java index 092ea678..3e62d401 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java @@ -82,6 +82,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mPresenter = new PurePresenter(getContext(), this); + initRefresh(); } @Override @@ -199,7 +200,12 @@ public void showProgress() { @Override public void hideProgress() { - mSwipeRefreshLayout.setRefreshing(false); + if (mSwipeRefreshLayout != null) { + mSwipeRefreshLayout.setRefreshing(false); + } + if (mMultipleStatusView != null) { + mMultipleStatusView.showContent(); + } } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java b/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java index 98d2adc3..242efd9e 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java @@ -1,9 +1,13 @@ package com.gank.gankly.ui.girls.pure; import android.content.Context; +import android.os.Environment; import android.text.TextUtils; +import android.util.Log; +import com.gank.gankly.R; import com.gank.gankly.bean.GiftBean; +import com.gank.gankly.mvp.source.remote.MeiziDataSource; import com.gank.gankly.utils.CrashUtils; import com.gank.gankly.utils.StringUtils; import com.leftcoding.http.bean.PageConfig; @@ -12,75 +16,176 @@ import org.jsoup.nodes.Document; import org.jsoup.select.Elements; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; import java.util.ArrayList; import java.util.IllegalFormatException; import java.util.List; +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; + /** * Create by LingYan on 2016-12-27 * Email:137387869@qq.com */ public class PurePresenter extends PureContract.Presenter { - private static String BASE_URL = "http://www.mzitu.com/mm"; + // private static String BASE_URL = "http://www.mzitu.com/mm"; + //http://www.ygdy8.net/html/gndy/china/list_4_1.html + private static final String URL = "http://www.ygdy8.net/html/gndy/china/list_4"; + private static final String HOST = "http://www.ygdy8.net"; + private static final String BASE_URL = HOST + "/html/gndy/china/index.html"; private String nextUrl = BASE_URL + "/page/"; + private List pageUrls = new ArrayList<>(); + private List remoteUrl = new ArrayList<>(); + private List ftpUrls = new ArrayList<>(); + private int mMaxPageNumber; private PageConfig mPageConfig; + private int urlIndex = 0; + private int pageUrlIndex = 0; + public PurePresenter(Context context, PureContract.View view) { super(context, view); mPageConfig = new PageConfig(); mPageConfig.mLimit = 24; + urlIndex = 0; + for (int i = 11; i < 43; i++) { + remoteUrl.add(mContext.getString(R.string.url_format, URL, i)); + } } @Override public void refreshPure() { - fetchData(mPageConfig.mCurPage); + fetchData(0); } @Override public void appendPure() { - fetchData(mPageConfig.mCurPage); + fetchData(0); } - private void fetchData(final int page) { - String url = getUrl(page); -// mTask.fetchPure(url) -// .subscribe(new Observer() { -// @Override -// public void onSubscribe(Disposable d) { -// -// } -// -// @Override -// public void onNext(Document document) { -// mMaxPageNumber = getMaxPageNum(document); -// List list = getPageLists(document); -// list = filterData(list, mModelView); -// if (list != null) { -// if (page == 1) { -// mModelView.refillData(list); -// } else { -// mModelView.appendData(list); -// } -// } -// } + private void fetchData(int index) { + MeiziDataSource.getInstance().fetchPure(remoteUrl.get(index)) + .doFinally(() -> mView.hideProgress()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(Document document) { + Elements content = document.select(".co_content8 table a"); + for (int i = 0, s = content.size(); i < s; i++) { + String href = content.get(i).attr("href"); + if (!TextUtils.isEmpty(href) && !href.contains("/index.html")) { + pageUrls.add(HOST + href); + } + } + + pageUrlIndex = 0; + parsePageUrl(pageUrlIndex); + } + + @Override + public void onError(Throwable e) { + KLog.e(e); + } + + @Override + public void onComplete() { + + } + }); + } + + private void parsePageUrl(int index) { + MeiziDataSource.getInstance().fetchPure(pageUrls.get(index)) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(Document document) { + Elements content = document.select("tbody a"); + String data = content.get(0).attr("href"); +// KLog.d("" + data); + ftpUrls.add(data); + try { + writeFileToSDCard(data + "\n"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onError(Throwable e) { + KLog.e(e); + } + + @Override + public void onComplete() { + pageUrlIndex = index + 1; + if (pageUrlIndex < pageUrls.size()) { + parsePageUrl(pageUrlIndex); + } else { + pageUrls.clear(); + urlIndex = urlIndex + 1; + if (urlIndex < remoteUrl.size()) { + fetchData(urlIndex); + } else { + remoteUrl.clear(); + KLog.d(">>结束"); + } + } + } + }); + } + + // 写一个文件到SDCard + private void writeFileToSDCard(String data) throws IOException { + // 比如可以将一个文件作为普通的文档存储,那么先获取系统默认的文档存放根目录 + File parent_path = Environment.getExternalStorageDirectory(); + + // 可以建立一个子目录专门存放自己专属文件 + File dir = new File(parent_path.getAbsoluteFile(), "lingyan"); + if (!dir.exists()) { + dir.mkdir(); + } + + File file = new File(dir.getAbsoluteFile(), "myfile.txt"); + + Log.d("文件路径", file.getAbsolutePath()); + + // 创建这个文件,如果不存在 + file.createNewFile(); + +// FileOutputStream fos = new FileOutputStream(file); // -// @Override -// public void onError(Throwable e) { -// KLog.e(e); -// CrashUtils.crashReport(e); -// parseError(mModelView); -// } +// byte[] buffer = data.getBytes(); // -// @Override -// public void onComplete() { -// mModelView.showContent(); -// mModelView.hideRefresh(); -// setFetchPage(page + 1); -// } -// }); +// 开始写入数据到这个文件。 +// fos.write(buffer, 0, buffer.length); +// fos.flush(); +// fos.close(); + + try { + //第二个参数意义是说是否以append方式添加内容 + BufferedWriter bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(data); + bw.flush(); + Log.d("文件写入", "成功"); + } catch (Exception e) { + e.printStackTrace(); + } } private int getImageMaxPage(Document doc) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 651f7f2c..56457eee 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -108,4 +108,7 @@ 选择页数 已开启自动浏览模式 + + + %1$s_%2$d.html diff --git a/build.gradle b/build.gradle index 882ea1b6..069a7559 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.0' + classpath 'com.android.tools.build:gradle:3.0.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/gradle.properties b/gradle.properties index d69b593a..d4831aa0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,12 +12,13 @@ # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -#Sun Nov 12 20:58:46 CST 2017 +#Wed Nov 29 14:48:44 CST 2017 butterknife=8.8.1 -greendao=2.1.0 supportV4=25.3.1 -butterknifeVersion=8.8.1 +greendao=2.1.0 +systemProp.http.proxyHost=127.0.0.1 supportVersion=27.0.1 +butterknifeVersion=8.8.1 retrofitConverters=2.3.0 retrofitVersion=2.3.0 loggingInterceptor=3.9.0 @@ -27,9 +28,9 @@ subsamplingVersion=3.6.0 jsoup=1.10.3 okhttp=3.9.0 butterknifeCompiler=8.8.1 -gank_server_url=http\://gank.io/api/data/ gsonVersion=2.7 android.useDeprecatedNdk=true +gank_server_url=http\://gank.io/api/data/ leakcanaryandroid=1.5.4 rxjava=2.1.3 adapterRxjava2=2.3.0 @@ -40,3 +41,4 @@ rxandroid=2.0.1 crashreportUpgrade=1.3.1 klogVersion=1.6.0 stethoVersion=1.5.0 +systemProp.http.proxyPort=1080 From afa1dc3f1cb5ffc2e54a0de3501a44822c91f9d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=87=8C=E7=82=8E?= Date: Tue, 20 Mar 2018 18:29:13 +0800 Subject: [PATCH 12/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 5 +- .../main/java/com/gank/gankly/AppConfig.java | 11 +-- .../java/com/gank/gankly/bean/GankResult.java | 10 +- .../gank/gankly/config/MeiziArrayList.java | 17 ++-- .../com/gank/gankly/mvp/FetchPresenter.java | 2 +- .../gankly/mvp/observer/PageObserver.java | 2 +- .../gankly/ui/android/AndroidAdapter.java | 22 ++--- .../gankly/ui/android/AndroidContract.java | 2 +- .../gankly/ui/android/AndroidFragment.java | 2 +- .../gankly/ui/android/AndroidPresenter.java | 9 +- .../ui/discovered/video/VideoAdapter.java | 2 +- .../ui/discovered/video/VideoContract.java | 2 +- .../ui/discovered/video/VideoFragment.java | 2 +- .../ui/discovered/video/VideoPresenter.java | 2 +- .../gankly/ui/gallery/GalleryActivity.java | 2 +- .../gankly/ui/gallery/GalleryContract.java | 2 +- .../gankly/ui/gallery/GalleryPresenter.java | 2 +- .../gankly/ui/girls/pure/PurePresenter.java | 2 +- .../com/gank/gankly/ui/ios/IosAdapter.java | 2 +- .../com/gank/gankly/ui/ios/IosContract.java | 2 +- .../com/gank/gankly/ui/ios/IosFragment.java | 2 +- .../com/gank/gankly/ui/ios/IosPresenter.java | 8 +- .../gankly/ui/welfare/WelfareAdapter.java | 2 +- .../gankly/ui/welfare/WelfareContract.java | 2 +- .../gankly/ui/welfare/WelfareFragment.java | 2 +- .../gankly/ui/welfare/WelfarePresenter.java | 2 +- build.gradle | 5 +- settings.gradle | 2 +- .../.gitignore | 0 support-ly-business/build.gradle | 26 +++++ support-ly-business/proguard-rules.pro | 21 ++++ .../src/main/AndroidManifest.xml | 2 + .../android/ly/business}/api/GankApi.java | 20 ++-- .../android/ly/business/api/GankServer.java | 99 +++++++++++++++++++ .../ly/business/api/InitGankServer.java | 50 ++++++++++ .../ly/business/domain}/BaseResult.java | 2 +- .../android/ly/business/domain/Entity.java | 18 ++-- .../ly/business/domain}/ListResult.java | 3 +- .../ly/business/domain}/PageConfig.java | 2 +- .../ly/business/domain/PageEntity.java | 4 +- .../src/main/res/values/strings.xml | 3 + support-ly-http/build.gradle | 46 --------- .../http/api/GankServerManager.java | 80 --------------- .../http/base/MyGsonConverterFactory.java | 73 -------------- .../http/base/MyGsonRequestBodyConverter.java | 41 -------- .../base/MyGsonResponseBodyConverter.java | 34 ------- support-ly-network/.gitignore | 1 + support-ly-network/build.gradle | 40 ++++++++ .../proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 2 +- .../network/base/BaseServerHelper.java | 39 ++++---- .../network/base/NetworkControl.java | 16 +-- .../network}/intercept/HttpLogging.java | 8 +- .../network/rxjava/RxActionManager.java | 15 +++ .../network/rxjava/RxApiManager.java | 74 ++++++++++++++ .../leftcoding/network/rxjava/RxConsumer.java | 11 +++ .../src/main/res/values/strings.xml | 0 support-ly-rxbus/build.gradle | 4 +- 58 files changed, 466 insertions(+), 395 deletions(-) rename {support-ly-http => support-ly-business}/.gitignore (100%) create mode 100644 support-ly-business/build.gradle create mode 100644 support-ly-business/proguard-rules.pro create mode 100644 support-ly-business/src/main/AndroidManifest.xml rename {support-ly-http/src/main/java/com/leftcoding/http => support-ly-business/src/main/java/android/ly/business}/api/GankApi.java (61%) create mode 100644 support-ly-business/src/main/java/android/ly/business/api/GankServer.java create mode 100644 support-ly-business/src/main/java/android/ly/business/api/InitGankServer.java rename {support-ly-http/src/main/java/com/leftcoding/http/bean => support-ly-business/src/main/java/android/ly/business/domain}/BaseResult.java (60%) rename support-ly-http/src/main/java/com/leftcoding/http/bean/ResultsBean.java => support-ly-business/src/main/java/android/ly/business/domain/Entity.java (80%) rename {support-ly-http/src/main/java/com/leftcoding/http/bean => support-ly-business/src/main/java/android/ly/business/domain}/ListResult.java (71%) rename {support-ly-http/src/main/java/com/leftcoding/http/bean => support-ly-business/src/main/java/android/ly/business/domain}/PageConfig.java (93%) rename support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java => support-ly-business/src/main/java/android/ly/business/domain/PageEntity.java (69%) create mode 100644 support-ly-business/src/main/res/values/strings.xml delete mode 100644 support-ly-http/build.gradle delete mode 100644 support-ly-http/src/main/java/com/leftcoding/http/api/GankServerManager.java delete mode 100644 support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonConverterFactory.java delete mode 100644 support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonRequestBodyConverter.java delete mode 100644 support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonResponseBodyConverter.java create mode 100644 support-ly-network/.gitignore create mode 100644 support-ly-network/build.gradle rename {support-ly-http => support-ly-network}/proguard-rules.pro (100%) rename {support-ly-http => support-ly-network}/src/main/AndroidManifest.xml (85%) rename support-ly-http/src/main/java/com/leftcoding/http/base/GankServerHelper.java => support-ly-network/src/main/java/com/leftcoding/network/base/BaseServerHelper.java (55%) rename support-ly-http/src/main/java/com/leftcoding/http/base/HttpBuilderControl.java => support-ly-network/src/main/java/com/leftcoding/network/base/NetworkControl.java (62%) rename {support-ly-http/src/main/java/com/leftcoding/http => support-ly-network/src/main/java/com/leftcoding/network}/intercept/HttpLogging.java (85%) create mode 100644 support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxActionManager.java create mode 100644 support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxApiManager.java create mode 100644 support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxConsumer.java rename {support-ly-http => support-ly-network}/src/main/res/values/strings.xml (100%) diff --git a/app/build.gradle b/app/build.gradle index efc868f4..5639208a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,9 +81,11 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' - implementation project(':support-ly-http') + + implementation project(':support-ly-business') implementation project(':support-ly-rxbus') implementation project(':superplayerlibrary') + implementation "com.android.support:appcompat-v7:${supportVersion}" implementation "com.android.support:design:${supportVersion}" implementation "com.android.support:cardview-v7:${supportVersion}" @@ -96,6 +98,7 @@ dependencies { implementation "com.squareup.retrofit2:retrofit-adapters:${retrofitAdapters}" implementation "com.squareup.retrofit2:converter-gson:${converterGson}" implementation "com.squareup.retrofit2:adapter-rxjava2:${adapterRxjava2}" + implementation "com.squareup.okhttp3:okhttp:${okhttp}" implementation "com.squareup.okhttp3:logging-interceptor:${okhttp}" debugCompile "com.squareup.leakcanary:leakcanary-android:${leakcanaryandroid}" diff --git a/app/src/main/java/com/gank/gankly/AppConfig.java b/app/src/main/java/com/gank/gankly/AppConfig.java index 2e4c5ecb..ae518b99 100644 --- a/app/src/main/java/com/gank/gankly/AppConfig.java +++ b/app/src/main/java/com/gank/gankly/AppConfig.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.res.Resources; import android.database.sqlite.SQLiteDatabase; +import android.ly.business.api.InitGankServer; import com.gank.gankly.config.Preferences; import com.gank.gankly.data.DaoMaster; @@ -12,9 +13,7 @@ import com.gank.gankly.ui.more.SettingFragment; import com.gank.gankly.utils.GanklyPreferences; import com.gank.gankly.utils.NetworkUtils; -import com.leftcoding.http.base.GankServerHelper; -import com.leftcoding.http.base.MyGsonConverterFactory; -import com.leftcoding.http.intercept.HttpLogging; +import com.leftcoding.network.intercept.HttpLogging; import com.squareup.leakcanary.LeakCanary; import com.squareup.leakcanary.RefWatcher; @@ -49,9 +48,9 @@ public void onCreate() { mRefWatcher = LeakCanary.install(this); // leakCanary -- end - GankServerHelper.get() - .addNetworkInterceptor(HttpLogging.get().setLevel(HttpLoggingInterceptor.Level.HEADERS).build()) - .addConverterFactory(MyGsonConverterFactory.create()); + InitGankServer.init(AppConfig.this) + .baseUrl(BuildConfig.GANK_SERVER_ULR) + .addNetworkInterceptor(HttpLogging.get().setLevel(HttpLoggingInterceptor.Level.HEADERS).build()); initPreferences(); diff --git a/app/src/main/java/com/gank/gankly/bean/GankResult.java b/app/src/main/java/com/gank/gankly/bean/GankResult.java index d6d1b4c5..aef85e49 100644 --- a/app/src/main/java/com/gank/gankly/bean/GankResult.java +++ b/app/src/main/java/com/gank/gankly/bean/GankResult.java @@ -1,10 +1,10 @@ package com.gank.gankly.bean; +import android.ly.business.domain.Entity; import android.os.Parcel; import android.os.Parcelable; import com.gank.gankly.utils.ListUtils; -import com.leftcoding.http.bean.ResultsBean; import java.util.List; @@ -13,14 +13,14 @@ */ public class GankResult extends BaseResult implements Parcelable { - private List results; + private List results; - public GankResult(List results) { + public GankResult(List results) { this.results = results; } protected GankResult(Parcel in) { - results = in.createTypedArrayList(ResultsBean.CREATOR); + results = in.createTypedArrayList(Entity.CREATOR); } public static final Creator CREATOR = new Creator() { @@ -35,7 +35,7 @@ public GankResult[] newArray(int size) { } }; - public List getResults() { + public List getResults() { return results; } diff --git a/app/src/main/java/com/gank/gankly/config/MeiziArrayList.java b/app/src/main/java/com/gank/gankly/config/MeiziArrayList.java index 4639f483..8f9f4e12 100644 --- a/app/src/main/java/com/gank/gankly/config/MeiziArrayList.java +++ b/app/src/main/java/com/gank/gankly/config/MeiziArrayList.java @@ -1,7 +1,8 @@ package com.gank.gankly.config; +import android.ly.business.domain.Entity; + import com.gank.gankly.utils.ListUtils; -import com.leftcoding.http.bean.ResultsBean; import java.util.ArrayList; import java.util.List; @@ -11,8 +12,8 @@ */ public class MeiziArrayList { private static MeiziArrayList sMeiziArrayList; - private List mOneItemsList; - private List mMeiziList; + private List mOneItemsList; + private List mMeiziList; private int mPage = 0; private MeiziArrayList() { @@ -27,24 +28,24 @@ public static MeiziArrayList getInstance() { return sMeiziArrayList; } - public void refillOneItems(List list) { + public void refillOneItems(List list) { if (ListUtils.isListEmpty(mOneItemsList)) { mOneItemsList.addAll(list); } } - public void addImages(List list, int page) { + public void addImages(List list, int page) { if (mPage < page) { mMeiziList.addAll(list); mPage = page; } } - public List getImagesList() { + public List getImagesList() { return mMeiziList; } - public List getOneItemsList() { + public List getOneItemsList() { return mOneItemsList; } @@ -56,7 +57,7 @@ public int getPage() { return mPage; } - public ResultsBean getResultBean(int position) { + public Entity getResultBean(int position) { if (ListUtils.isListEmpty(mMeiziList)) { return null; } diff --git a/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java b/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java index 3c85ba03..e07bf3d3 100644 --- a/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java @@ -5,7 +5,7 @@ import com.gank.gankly.bean.GankResult; import com.gank.gankly.mvp.base.SupportView; import com.gank.gankly.utils.ListUtils; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java index 66038843..a6e2453c 100644 --- a/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java +++ b/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java @@ -1,6 +1,6 @@ package com.gank.gankly.mvp.observer; -import com.leftcoding.http.bean.PageResult; +import com.leftcoding.network.domain.PageResult; import io.reactivex.annotations.NonNull; diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java index 95db8cca..a463bf6b 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java @@ -4,6 +4,7 @@ import android.lectcoding.ui.adapter.BaseAdapter; import android.lectcoding.ui.adapter.BasicItem; import android.lectcoding.ui.adapter.Item; +import android.ly.business.domain.Entity; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.ViewGroup; @@ -11,10 +12,9 @@ import com.bumptech.glide.Glide; import com.gank.gankly.R; -import com.gank.gankly.listener.ItemCallBack; import com.gank.gankly.butterknife.ButterKnifeHolder; +import com.gank.gankly.listener.ItemCallBack; import com.gank.gankly.utils.DateUtils; -import com.leftcoding.http.bean.ResultsBean; import java.util.ArrayList; import java.util.Date; @@ -30,7 +30,7 @@ class AndroidAdapter extends BaseAdapter { private ItemCallBack itemCallBack; private Context context; - private final List resultsBeans = new ArrayList<>(); + private final List resultsBeans = new ArrayList<>(); private final List itemList = new ArrayList<>(); AndroidAdapter(@NonNull Context context) { @@ -45,7 +45,7 @@ public void onChanged() { super.onChanged(); itemList.clear(); if (!resultsBeans.isEmpty()) { - for (ResultsBean resultsBean : resultsBeans) { + for (Entity resultsBean : resultsBeans) { if (resultsBean != null) { itemList.add(new TextItem(resultsBean)); } @@ -102,12 +102,12 @@ public long getItemId(int position) { return position; } - void fillItems(List results) { + void fillItems(List results) { resultsBeans.clear(); appendItems(results); } - public void appendItems(List results) { + public void appendItems(List results) { resultsBeans.addAll(results); this.notifyDataSetChanged(); } @@ -130,13 +130,13 @@ public void destroy() { } private static class TextItem extends BasicItem { - private ResultsBean resultsBean; + private Entity resultsBean; - TextItem(ResultsBean resultsBean) { + TextItem(Entity resultsBean) { this.resultsBean = resultsBean; } - ResultsBean getResultsBean() { + Entity getResultsBean() { return resultsBean; } @@ -163,7 +163,7 @@ static class TextKnifeHolder extends ButterKnifeHolder { @BindView(R.id.title) TextView title; - private ResultsBean resultsBean; + private Entity resultsBean; TextKnifeHolder(ViewGroup parent, final ItemCallBack itemCallBack) { super(parent, R.layout.adapter_android); @@ -176,7 +176,7 @@ static class TextKnifeHolder extends ButterKnifeHolder { @Override public void bindItem(TextItem item) { - final ResultsBean resultsBean = item.getResultsBean(); + final Entity resultsBean = item.getResultsBean(); this.resultsBean = resultsBean; time.setText(item.getTime()); diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java index 90924dbb..3c75932e 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java @@ -5,7 +5,7 @@ import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java index e16a5db9..0f1e73fc 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java @@ -22,7 +22,7 @@ import com.gank.gankly.utils.theme.ThemeColor; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java index 7ec00951..a62c5023 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java @@ -1,14 +1,11 @@ package com.gank.gankly.ui.android; import android.content.Context; +import android.ly.business.domain.Entity; +import android.ly.business.domain.PageConfig; import com.gank.gankly.R; -import com.gank.gankly.mvp.observer.PageObserver; import com.gank.gankly.ui.android.AndroidContract.Presenter; -import com.leftcoding.http.api.GankServerManager; -import com.leftcoding.http.bean.PageConfig; -import com.leftcoding.http.bean.PageResult; -import com.leftcoding.http.bean.ResultsBean; import com.leftcoding.rxbus.RxManager; /** @@ -18,7 +15,7 @@ class AndroidPresenter extends Presenter { private static final String TAG = "android_presenter"; private static final int INIT_PAGE = 1; - private PageResult pageResult; + private PageResult pageResult; private PageConfig pageConfig; AndroidPresenter(Context context, AndroidContract.View view) { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java index fa984a0e..849e05b8 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java @@ -13,7 +13,7 @@ import com.gank.gankly.R; import com.gank.gankly.config.MeiziArrayList; import com.gank.gankly.listener.MeiziOnClick; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import java.util.ArrayList; import java.util.Collections; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java index cb9d50bf..bb8260c4 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java @@ -2,7 +2,7 @@ import com.gank.gankly.mvp.ILoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java index 9608efb2..4a5c3a35 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java @@ -23,7 +23,7 @@ import com.gank.gankly.utils.StyleUtils; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java index 610c8642..26ccf1e7 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java @@ -4,7 +4,7 @@ import com.gank.gankly.config.MeiziArrayList; import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.GankDataSource; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import com.socks.library.KLog; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java index 633c91e9..bc5cf077 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java @@ -51,7 +51,7 @@ import com.gank.gankly.widget.WheelView; import com.gank.gankly.widget.transforms.FixedSpeedScroller; import com.gank.gankly.widget.transforms.ZoomOutSlideTransformer; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import com.socks.library.KLog; import java.io.File; diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java index 4c1626f3..674af96d 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java @@ -2,7 +2,7 @@ import com.gank.gankly.mvp.ILoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java index 6f638718..244b1078 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java @@ -6,7 +6,7 @@ import com.gank.gankly.mvp.source.remote.GankDataSource; import com.gank.gankly.utils.CrashUtils; import com.gank.gankly.utils.ListUtils; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import com.socks.library.KLog; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java b/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java index c0e5b3f0..4d3ce8fe 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java @@ -10,7 +10,7 @@ import com.gank.gankly.mvp.source.remote.MeiziDataSource; import com.gank.gankly.utils.CrashUtils; import com.gank.gankly.utils.StringUtils; -import com.leftcoding.http.bean.PageConfig; +import com.leftcoding.network.domain.PageConfig; import com.socks.library.KLog; import org.jsoup.nodes.Document; diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java index e9f73ff5..33d2d94f 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java @@ -13,7 +13,7 @@ import com.gank.gankly.butterknife.ButterKnifeHolder; import com.gank.gankly.listener.ItemCallBack; import com.gank.gankly.utils.DateUtils; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import java.util.ArrayList; import java.util.Date; diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java b/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java index fdafe7ed..95964d29 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java @@ -5,7 +5,7 @@ import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java index 22451223..9a026aef 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java @@ -16,7 +16,7 @@ import com.gank.gankly.ui.web.normal.WebActivity; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java index 4d6ef72d..6fee1831 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java @@ -3,10 +3,10 @@ import android.content.Context; import android.support.annotation.NonNull; -import com.leftcoding.http.api.GankServerManager; -import com.leftcoding.http.bean.PageConfig; -import com.leftcoding.http.bean.PageResult; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.api.GankServerManager; +import com.leftcoding.network.domain.PageConfig; +import com.leftcoding.network.domain.PageResult; +import com.leftcoding.network.domain.ResultsBean; import com.leftcoding.rxbus.RxManager; import com.socks.library.KLog; diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java index 9f7cee20..f3515516 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java @@ -28,7 +28,7 @@ import com.gank.gankly.utils.AppUtils; import com.gank.gankly.utils.gilde.ImageLoaderUtil; import com.gank.gankly.widget.ImageDefaultView; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import com.socks.library.KLog; import java.util.ArrayList; diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java index a604efba..d47dbb4a 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java @@ -2,7 +2,7 @@ import com.gank.gankly.mvp.ILoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java index 5bae6c6b..92b719b0 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java @@ -23,7 +23,7 @@ import com.gank.gankly.utils.theme.ThemeColor; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java index 59acc482..45ff55b3 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java @@ -4,7 +4,7 @@ import com.gank.gankly.config.MeiziArrayList; import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.GankDataSource; -import com.leftcoding.http.bean.ResultsBean; +import com.leftcoding.network.domain.ResultsBean; import com.socks.library.KLog; import java.util.List; diff --git a/build.gradle b/build.gradle index 069a7559..863eff50 100644 --- a/build.gradle +++ b/build.gradle @@ -16,10 +16,13 @@ ext { compileSdkVersion = 26 buildToolsVersion = "26.0.2" minSdkVersion = 21 - targetSdkVersion = 25 + targetSdkVersion = 14 superplayerVersionCode = 1 superplayerVersionName = "1.0" + + normalVersionCode = 1 + normalVersionName = "1.0" } allprojects { diff --git a/settings.gradle b/settings.gradle index ef27ebba..078068ca 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':app', ':superplayerlibrary', ':ijkplayerlibrary', ':javalib', ':support-ly-http', ':support-ly-rxbus', ':support-ly-ui' +include ':app', ':superplayerlibrary', ':ijkplayerlibrary', ':javalib', ':support-ly-network', ':support-ly-rxbus', ':support-ly-ui', ':support-ly-business' diff --git a/support-ly-http/.gitignore b/support-ly-business/.gitignore similarity index 100% rename from support-ly-http/.gitignore rename to support-ly-business/.gitignore diff --git a/support-ly-business/build.gradle b/support-ly-business/build.gradle new file mode 100644 index 00000000..62c68d2f --- /dev/null +++ b/support-ly-business/build.gradle @@ -0,0 +1,26 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion rootProject.compileSdkVersion + buildToolsVersion rootProject.buildToolsVersion + + defaultConfig { + minSdkVersion rootProject.minSdkVersion + targetSdkVersion rootProject.targetSdkVersion + versionCode rootProject.normalVersionCode + versionName rootProject.normalVersionName + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + +} + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + api project(':support-ly-network') +} diff --git a/support-ly-business/proguard-rules.pro b/support-ly-business/proguard-rules.pro new file mode 100644 index 00000000..f1b42451 --- /dev/null +++ b/support-ly-business/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/support-ly-business/src/main/AndroidManifest.xml b/support-ly-business/src/main/AndroidManifest.xml new file mode 100644 index 00000000..194b1172 --- /dev/null +++ b/support-ly-business/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/GankApi.java b/support-ly-business/src/main/java/android/ly/business/api/GankApi.java similarity index 61% rename from support-ly-http/src/main/java/com/leftcoding/http/api/GankApi.java rename to support-ly-business/src/main/java/android/ly/business/api/GankApi.java index 7ec403d7..64dcbfc3 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/api/GankApi.java +++ b/support-ly-business/src/main/java/android/ly/business/api/GankApi.java @@ -1,47 +1,47 @@ -package com.leftcoding.http.api; +package android.ly.business.api; -import com.leftcoding.http.bean.ListResult; -import com.leftcoding.http.bean.PageResult; -import com.leftcoding.http.bean.ResultsBean; +import android.ly.business.domain.ListResult; +import android.ly.business.domain.PageEntity; +import android.ly.business.domain.Entity; import io.reactivex.Observable; import retrofit2.Response; import retrofit2.http.GET; import retrofit2.http.Path; + /** * Create by LingYan on 2017-09-29 - * Email:137387869@qq.com */ public interface GankApi { @GET("Android/{limit}/{page}") - Observable>> androids( + Observable>> androids( @Path("page") int page, @Path("limit") int limit ); @GET("iOS/{limit}/{page}") - Observable>> ios( + Observable>> ios( @Path("page") int page, @Path("limit") int limit ); @GET("all/{limit}/{page}") - Observable>> allGoods( + Observable>> allGoods( @Path("page") int page, @Path("limit") int limit ); @GET("福利/{limit}/{page}") - Observable>> images( + Observable>> images( @Path("page") int page, @Path("limit") int limit ); @GET("休息视频/{limit}/{page}") - Observable>> videos( + Observable>> videos( @Path("page") int page, @Path("limit") int limit ); diff --git a/support-ly-business/src/main/java/android/ly/business/api/GankServer.java b/support-ly-business/src/main/java/android/ly/business/api/GankServer.java new file mode 100644 index 00000000..fbc93723 --- /dev/null +++ b/support-ly-business/src/main/java/android/ly/business/api/GankServer.java @@ -0,0 +1,99 @@ +package android.ly.business.api; + +import android.content.Context; +import android.ly.business.domain.Entity; +import android.ly.business.domain.ListResult; +import android.ly.business.domain.PageEntity; + +import com.leftcoding.network.rxjava.RxApiManager; +import com.leftcoding.network.rxjava.RxConsumer; + +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Consumer; +import io.reactivex.schedulers.Schedulers; +import retrofit2.Response; + + +/** + * Create by LingYan on 2017-09-30 + */ + +public class GankServer { + private volatile static GankServer gankServer; + private GankApi gankApi; + private Context context; + + private GankServer(Context context) { + gankApi = InitGankServer.init(context) + .newRetrofit() + .create(GankApi.class); + } + + public static GankServer get(Context context) { + if (gankServer == null) { + synchronized (GankServer.class) { + if (gankServer == null) { + gankServer = new GankServer(context); + } + } + } + return gankServer; + } + + public void androids(final String requestTag, final int page, final int limit, final RxConsumer> consumer) { + convert(gankApi.androids(page, limit), requestTag, consumer); + } + + public Observable>> ios(int page, int limit) { + return gankApi.ios(page, limit) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable>> allGoods(int limit, int page) { + return gankApi.allGoods(limit, page); + } + + public Observable>> images(int limit, int page) { + return gankApi.images(limit, page); + } + + public Observable>> videos(int limit, int page) { + return gankApi.videos(limit, page); + } + + private void convert(Observable> observable, String tag, final RxConsumer consumer) { + Disposable disposable = observable.subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer>() { + @Override + public void accept(Response response) throws Exception { + if (consumer != null) { + if (response == null) { + consumer.onError(new Throwable("response is null")); + } else { + if (response.isSuccessful()) { + consumer.next(response.body()); + } else { + consumer.onError(new Throwable(response.toString())); + } + } + } + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + if (consumer != null) { + consumer.onError(throwable); + } + } + }); + addRxManager(tag, disposable); + } + + private void addRxManager(String tag, Disposable disposable) { + RxApiManager.get().add(tag, disposable); + } +} diff --git a/support-ly-business/src/main/java/android/ly/business/api/InitGankServer.java b/support-ly-business/src/main/java/android/ly/business/api/InitGankServer.java new file mode 100644 index 00000000..f295bbdf --- /dev/null +++ b/support-ly-business/src/main/java/android/ly/business/api/InitGankServer.java @@ -0,0 +1,50 @@ +package android.ly.business.api; + +import android.content.Context; + +import com.leftcoding.network.base.BaseServerHelper; + +import okhttp3.Interceptor; +import retrofit2.Retrofit; + +/** + * Create by LingYan on 2018-03-20 + */ + +public class InitGankServer { + private volatile static InitGankServer initGankServer; + private Context context; + private BaseServerHelper baseServerHelper; + private String baseUrl; + + private InitGankServer(Context context) { + this.context = context.getApplicationContext() == null ? context : context.getApplicationContext(); + baseServerHelper = BaseServerHelper.get(); + } + + public static InitGankServer init(Context context) { + if (initGankServer == null) { + synchronized (InitGankServer.class) { + if (initGankServer == null) { + initGankServer = new InitGankServer(context); + } + } + } + return initGankServer; + } + + public InitGankServer baseUrl(String baseUrl) { + this.baseUrl = baseUrl; + return this; + } + + public InitGankServer addNetworkInterceptor(Interceptor interceptor) { + baseServerHelper.addNetworkInterceptor(interceptor); + return this; + } + + Retrofit newRetrofit() { + return baseServerHelper.baseUrl(baseUrl) + .newRetrofit(); + } +} diff --git a/support-ly-http/src/main/java/com/leftcoding/http/bean/BaseResult.java b/support-ly-business/src/main/java/android/ly/business/domain/BaseResult.java similarity index 60% rename from support-ly-http/src/main/java/com/leftcoding/http/bean/BaseResult.java rename to support-ly-business/src/main/java/android/ly/business/domain/BaseResult.java index 4ec04b5e..47ccc19b 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/bean/BaseResult.java +++ b/support-ly-business/src/main/java/android/ly/business/domain/BaseResult.java @@ -1,4 +1,4 @@ -package com.leftcoding.http.bean; +package android.ly.business.domain; public class BaseResult { public boolean error; diff --git a/support-ly-http/src/main/java/com/leftcoding/http/bean/ResultsBean.java b/support-ly-business/src/main/java/android/ly/business/domain/Entity.java similarity index 80% rename from support-ly-http/src/main/java/com/leftcoding/http/bean/ResultsBean.java rename to support-ly-business/src/main/java/android/ly/business/domain/Entity.java index 344b7a02..8ed624b3 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/bean/ResultsBean.java +++ b/support-ly-business/src/main/java/android/ly/business/domain/Entity.java @@ -1,4 +1,4 @@ -package com.leftcoding.http.bean; +package android.ly.business.domain; import android.os.Parcel; import android.os.Parcelable; @@ -8,7 +8,7 @@ import java.util.List; -public class ResultsBean implements Parcelable { +public class Entity implements Parcelable { @SerializedName("_id") public String id; public String createdAt; @@ -22,7 +22,7 @@ public class ResultsBean implements Parcelable { public boolean isLoaded; public List images; - public ResultsBean() { + public Entity() { } @Override @@ -45,7 +45,7 @@ public void writeToParcel(Parcel dest, int flags) { dest.writeStringList(this.images); } - protected ResultsBean(Parcel in) { + protected Entity(Parcel in) { this.id = in.readString(); this.createdAt = in.readString(); this.desc = in.readString(); @@ -59,15 +59,15 @@ protected ResultsBean(Parcel in) { this.images = in.createStringArrayList(); } - public static final Creator CREATOR = new Creator() { + public static final Creator CREATOR = new Creator() { @Override - public ResultsBean createFromParcel(Parcel source) { - return new ResultsBean(source); + public Entity createFromParcel(Parcel source) { + return new Entity(source); } @Override - public ResultsBean[] newArray(int size) { - return new ResultsBean[size]; + public Entity[] newArray(int size) { + return new Entity[size]; } }; diff --git a/support-ly-http/src/main/java/com/leftcoding/http/bean/ListResult.java b/support-ly-business/src/main/java/android/ly/business/domain/ListResult.java similarity index 71% rename from support-ly-http/src/main/java/com/leftcoding/http/bean/ListResult.java rename to support-ly-business/src/main/java/android/ly/business/domain/ListResult.java index ae29e8e4..fa21ff4b 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/bean/ListResult.java +++ b/support-ly-business/src/main/java/android/ly/business/domain/ListResult.java @@ -1,10 +1,9 @@ -package com.leftcoding.http.bean; +package android.ly.business.domain; import java.util.List; /** * Create by LingYan on 2017-09-30 - * Email:137387869@qq.com */ public class ListResult extends BaseResult { diff --git a/support-ly-http/src/main/java/com/leftcoding/http/bean/PageConfig.java b/support-ly-business/src/main/java/android/ly/business/domain/PageConfig.java similarity index 93% rename from support-ly-http/src/main/java/com/leftcoding/http/bean/PageConfig.java rename to support-ly-business/src/main/java/android/ly/business/domain/PageConfig.java index 937d428e..2f84368b 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/bean/PageConfig.java +++ b/support-ly-business/src/main/java/android/ly/business/domain/PageConfig.java @@ -1,4 +1,4 @@ -package com.leftcoding.http.bean; +package android.ly.business.domain; /** * Create by LingYan on 2017-11-18 diff --git a/support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java b/support-ly-business/src/main/java/android/ly/business/domain/PageEntity.java similarity index 69% rename from support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java rename to support-ly-business/src/main/java/android/ly/business/domain/PageEntity.java index 90580aa2..50f65552 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/bean/PageResult.java +++ b/support-ly-business/src/main/java/android/ly/business/domain/PageEntity.java @@ -1,10 +1,10 @@ -package com.leftcoding.http.bean; +package android.ly.business.domain; /** * Create by LingYan on 2017-10-12 */ -public class PageResult extends ListResult { +public class PageEntity extends ListResult { public int nextPage; public boolean hasNoMore(int limit) { diff --git a/support-ly-business/src/main/res/values/strings.xml b/support-ly-business/src/main/res/values/strings.xml new file mode 100644 index 00000000..6c663037 --- /dev/null +++ b/support-ly-business/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + support-ly-business + diff --git a/support-ly-http/build.gradle b/support-ly-http/build.gradle deleted file mode 100644 index b76757c7..00000000 --- a/support-ly-http/build.gradle +++ /dev/null @@ -1,46 +0,0 @@ -apply plugin: 'com.android.library' - -android { - compileSdkVersion rootProject.compileSdkVersion - buildToolsVersion rootProject.buildToolsVersion - - defaultConfig { - minSdkVersion rootProject.minSdkVersion - targetSdkVersion rootProject.targetSdkVersion - versionCode 1 - versionName "1.0" - - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - buildConfigField("String", "GANK_SERVER_ULR", "\"${gank_server_url}\"") - } - buildTypes { - debug { - minifyEnabled false - shrinkResources false - } - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - - implementation "com.google.code.gson:gson:${gsonVersion}" - - implementation "com.squareup.okhttp3:logging-interceptor:${loggingInterceptor}" - - implementation "com.squareup.retrofit2:retrofit:${retrofitVersion}" - implementation "com.squareup.retrofit2:converter-gson:${converterGson}" - implementation "com.squareup.retrofit2:adapter-rxjava2:${adapterRxjava2}" - - implementation "io.reactivex.rxjava2:rxjava:${rxjava}" - implementation "io.reactivex.rxjava2:rxandroid:${rxandroid}" - - implementation "com.facebook.stetho:stetho:${stethoVersion}" - implementation "com.facebook.stetho:stetho-okhttp3:${stethoOkhttp3}" - - implementation "com.github.zhaokaiqiang.klog:library:${klogVersion}" -} diff --git a/support-ly-http/src/main/java/com/leftcoding/http/api/GankServerManager.java b/support-ly-http/src/main/java/com/leftcoding/http/api/GankServerManager.java deleted file mode 100644 index 21d3e817..00000000 --- a/support-ly-http/src/main/java/com/leftcoding/http/api/GankServerManager.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.leftcoding.http.api; - -import android.content.Context; - -import com.leftcoding.http.BuildConfig; -import com.leftcoding.http.R; -import com.leftcoding.http.base.GankServerHelper; -import com.leftcoding.http.bean.ListResult; -import com.leftcoding.http.bean.PageResult; -import com.leftcoding.http.bean.ResultsBean; - -import io.reactivex.Observable; -import io.reactivex.ObservableSource; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.functions.Function; -import io.reactivex.schedulers.Schedulers; -import retrofit2.Response; - -/** - * Create by LingYan on 2017-09-30 - */ - -public class GankServerManager { - private final String serverError; - private GankApi mApi; - - private GankServerManager(Context context) { - mApi = GankServerHelper.get() -// .addConverterFactory(MyGsonConverterFactory.create()) - .baseUrl(BuildConfig.GANK_SERVER_ULR) - .newRetrofit() - .create(GankApi.class); - - serverError = context.getResources().getString(R.string.network_request_error); - } - - public static synchronized GankServerManager with(Context context) { - return new GankServerManager(context); - } - - public Observable> androids(final int page, final int limit) { - return mApi.androids(page, limit) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .flatMap(pageResultFunction); - } - - public Observable>> ios(int page, int limit) { - return mApi.ios(page, limit) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable>> allGoods(int limit, int page) { - return mApi.allGoods(limit, page); - } - - public Observable>> images(int limit, int page) { - return mApi.images(limit, page); - } - - public Observable>> videos(int limit, int page) { - return mApi.videos(limit, page); - } - - private Function>, ObservableSource>> pageResultFunction = new Function>, ObservableSource>>() { - @Override - public ObservableSource> apply - (Response> response) throws Exception { - if (response != null) { - if (response.isSuccessful()) { - if (response.body() != null) { - return Observable.just(response.body()); - } - } - } - return Observable.error(new Throwable(serverError)); - } - }; -} diff --git a/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonConverterFactory.java b/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonConverterFactory.java deleted file mode 100644 index 95b6ef6b..00000000 --- a/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonConverterFactory.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.leftcoding.http.base; - -import com.google.gson.Gson; -import com.google.gson.TypeAdapter; -import com.google.gson.reflect.TypeToken; - -import java.lang.annotation.Annotation; -import java.lang.reflect.Type; - -import okhttp3.RequestBody; -import okhttp3.ResponseBody; -import retrofit2.Converter; -import retrofit2.Retrofit; - -/** - * Create by LingYan on 2017-11-21 - */ - -public class MyGsonConverterFactory extends Converter.Factory { - /* - * Copyright (C) 2015 Square, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - /** - * Create an instance using a default {@link Gson} instance for conversion. Encoding to JSON and - * decoding from JSON (when no charset is specified by a header) will use UTF-8. - */ - public static MyGsonConverterFactory create() { - return create(new Gson()); - } - - /** - * Create an instance using {@code gson} for conversion. Encoding to JSON and - * decoding from JSON (when no charset is specified by a header) will use UTF-8. - */ - @SuppressWarnings("ConstantConditions") // Guarding public API nullability. - public static MyGsonConverterFactory create(Gson gson) { - if (gson == null) throw new NullPointerException("gson == null"); - return new MyGsonConverterFactory(gson); - } - - private final Gson gson; - - private MyGsonConverterFactory(Gson gson) { - this.gson = gson; - } - - @Override - public Converter responseBodyConverter(Type type, Annotation[] annotations, - Retrofit retrofit) { - TypeAdapter adapter = gson.getAdapter(TypeToken.get(type)); - return new MyGsonResponseBodyConverter<>(gson, adapter); - } - - @Override - public Converter requestBodyConverter(Type type, - Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) { - TypeAdapter adapter = gson.getAdapter(TypeToken.get(type)); - return new MyGsonRequestBodyConverter<>(gson, adapter); - } -} \ No newline at end of file diff --git a/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonRequestBodyConverter.java b/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonRequestBodyConverter.java deleted file mode 100644 index 1048d826..00000000 --- a/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonRequestBodyConverter.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.leftcoding.http.base; - -import com.google.gson.Gson; -import com.google.gson.TypeAdapter; -import com.google.gson.stream.JsonWriter; - -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.nio.charset.Charset; - -import okhttp3.MediaType; -import okhttp3.RequestBody; -import okio.Buffer; -import retrofit2.Converter; - -/** - * Create by LingYan on 2017-11-21 - */ - -public class MyGsonRequestBodyConverter implements Converter { - private static final MediaType MEDIA_TYPE = MediaType.parse("application/json; charset=UTF-8"); - private static final Charset UTF_8 = Charset.forName("UTF-8"); - - private final Gson gson; - private final TypeAdapter adapter; - - MyGsonRequestBodyConverter(Gson gson, TypeAdapter adapter) { - this.gson = gson; - this.adapter = adapter; - } - - @Override public RequestBody convert(T value) throws IOException { - Buffer buffer = new Buffer(); - Writer writer = new OutputStreamWriter(buffer.outputStream(), UTF_8); - JsonWriter jsonWriter = gson.newJsonWriter(writer); - adapter.write(jsonWriter, value); - jsonWriter.close(); - return RequestBody.create(MEDIA_TYPE, buffer.readByteString()); - } -} \ No newline at end of file diff --git a/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonResponseBodyConverter.java b/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonResponseBodyConverter.java deleted file mode 100644 index 521342ae..00000000 --- a/support-ly-http/src/main/java/com/leftcoding/http/base/MyGsonResponseBodyConverter.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.leftcoding.http.base; - -import com.google.gson.Gson; -import com.google.gson.TypeAdapter; -import com.google.gson.stream.JsonReader; - -import java.io.IOException; - -import okhttp3.ResponseBody; -import retrofit2.Converter; - -/** - * Create by LingYan on 2017-11-21 - */ - -public class MyGsonResponseBodyConverter implements Converter { - private final Gson gson; - private final TypeAdapter adapter; - - MyGsonResponseBodyConverter(Gson gson, TypeAdapter adapter) { - this.gson = gson; - this.adapter = adapter; - } - - @Override - public T convert(ResponseBody value) throws IOException { - JsonReader jsonReader = gson.newJsonReader(value.charStream()); - try { - return adapter.read(jsonReader); - } finally { - value.close(); - } - } -} diff --git a/support-ly-network/.gitignore b/support-ly-network/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/support-ly-network/.gitignore @@ -0,0 +1 @@ +/build diff --git a/support-ly-network/build.gradle b/support-ly-network/build.gradle new file mode 100644 index 00000000..807f1511 --- /dev/null +++ b/support-ly-network/build.gradle @@ -0,0 +1,40 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion rootProject.compileSdkVersion + buildToolsVersion rootProject.buildToolsVersion + + defaultConfig { + minSdkVersion rootProject.minSdkVersion + targetSdkVersion rootProject.targetSdkVersion + versionCode rootProject.normalVersionCode + versionName rootProject.normalVersionName + + buildConfigField("String", "GANK_SERVER_ULR", "\"${gank_server_url}\"") + } + buildTypes { + debug { + minifyEnabled false + shrinkResources false + } + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(include: ['*.jar'], dir: 'libs') + // Gson + api "com.google.code.gson:gson:${gsonVersion}" + + // Retrofit + api "com.squareup.okhttp3:logging-interceptor:${loggingInterceptor}" + + api "com.squareup.retrofit2:retrofit:${retrofitVersion}" + api "com.squareup.retrofit2:converter-gson:${converterGson}" + api "com.squareup.retrofit2:adapter-rxjava2:${adapterRxjava2}" + // RxJava2 + api project(':support-ly-rxbus') +} diff --git a/support-ly-http/proguard-rules.pro b/support-ly-network/proguard-rules.pro similarity index 100% rename from support-ly-http/proguard-rules.pro rename to support-ly-network/proguard-rules.pro diff --git a/support-ly-http/src/main/AndroidManifest.xml b/support-ly-network/src/main/AndroidManifest.xml similarity index 85% rename from support-ly-http/src/main/AndroidManifest.xml rename to support-ly-network/src/main/AndroidManifest.xml index ec855eb8..88a35b33 100644 --- a/support-ly-http/src/main/AndroidManifest.xml +++ b/support-ly-network/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.leftcoding.network"> diff --git a/support-ly-http/src/main/java/com/leftcoding/http/base/GankServerHelper.java b/support-ly-network/src/main/java/com/leftcoding/network/base/BaseServerHelper.java similarity index 55% rename from support-ly-http/src/main/java/com/leftcoding/http/base/GankServerHelper.java rename to support-ly-network/src/main/java/com/leftcoding/network/base/BaseServerHelper.java index 5be074a4..f8387891 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/base/GankServerHelper.java +++ b/support-ly-network/src/main/java/com/leftcoding/network/base/BaseServerHelper.java @@ -1,4 +1,4 @@ -package com.leftcoding.http.base; +package com.leftcoding.network.base; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -9,14 +9,15 @@ import retrofit2.Converter; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; +import retrofit2.converter.gson.GsonConverterFactory; /** * Create by LingYan on 2017-09-29 */ -public class GankServerHelper { +public class BaseServerHelper { private String mServerUrl; - private HttpBuilderControl mHttpBuilderControl; + private NetworkControl mNetworkControl; private Retrofit.Builder mRetrofitBuilder; @@ -27,63 +28,63 @@ public class GankServerHelper { .serializeNulls() .create(); - protected GankServerHelper() { - this(HttpBuilderControl.get(), new Retrofit.Builder()); + private BaseServerHelper() { + this(NetworkControl.get(), new Retrofit.Builder()); } - private GankServerHelper(HttpBuilderControl httpBuilderControl, Retrofit.Builder builder) { - mHttpBuilderControl = httpBuilderControl; + private BaseServerHelper(NetworkControl networkControl, Retrofit.Builder builder) { + mNetworkControl = networkControl; mRetrofitBuilder = builder; } - public GankServerHelper addInterceptor(Interceptor interceptor) { - mHttpBuilderControl.addInterceptor(interceptor); + public BaseServerHelper addInterceptor(Interceptor interceptor) { + mNetworkControl.addInterceptor(interceptor); return this; } - public GankServerHelper addNetworkInterceptor(Interceptor interceptor) { - mHttpBuilderControl.addNetworkInterceptor(interceptor); + public BaseServerHelper addNetworkInterceptor(Interceptor interceptor) { + mNetworkControl.addNetworkInterceptor(interceptor); return this; } - public GankServerHelper addConverterFactory(Converter.Factory factory) { + public BaseServerHelper addConverterFactory(Converter.Factory factory) { mRetrofitBuilder.addConverterFactory(factory); return this; } - public GankServerHelper addCallAdapterFactory(CallAdapter.Factory factory) { + public BaseServerHelper addCallAdapterFactory(CallAdapter.Factory factory) { mRetrofitBuilder.addCallAdapterFactory(factory); return this; } - public GankServerHelper baseUrl(String url) { + public BaseServerHelper baseUrl(String url) { mServerUrl = url; return this; } - public GankServerHelper client(OkHttpClient client) { + public BaseServerHelper client(OkHttpClient client) { mOkHttpClient = client; return this; } private OkHttpClient getClient() { - return mOkHttpClient != null ? mOkHttpClient : mHttpBuilderControl.build(); + return mOkHttpClient != null ? mOkHttpClient : mNetworkControl.build(); } public Retrofit newRetrofit() { return mRetrofitBuilder .client(getClient()) -// .addConverterFactory(GsonConverterFactory.create(gson)) + .addConverterFactory(GsonConverterFactory.create(gson)) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .baseUrl(mServerUrl) .build(); } private static final class GankServerHelperHolder { - private static final GankServerHelper INSTANCE = new GankServerHelper(); + private static final BaseServerHelper INSTANCE = new BaseServerHelper(); } - public static synchronized GankServerHelper get() { + public static synchronized BaseServerHelper get() { return GankServerHelperHolder.INSTANCE; } } diff --git a/support-ly-http/src/main/java/com/leftcoding/http/base/HttpBuilderControl.java b/support-ly-network/src/main/java/com/leftcoding/network/base/NetworkControl.java similarity index 62% rename from support-ly-http/src/main/java/com/leftcoding/http/base/HttpBuilderControl.java rename to support-ly-network/src/main/java/com/leftcoding/network/base/NetworkControl.java index f6ee6fe7..88e05313 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/base/HttpBuilderControl.java +++ b/support-ly-network/src/main/java/com/leftcoding/network/base/NetworkControl.java @@ -1,4 +1,4 @@ -package com.leftcoding.http.base; +package com.leftcoding.network.base; import java.util.concurrent.TimeUnit; @@ -9,27 +9,27 @@ /** * Create by LingYan on 2017-09-30 */ -public class HttpBuilderControl { +public class NetworkControl { private static final int DEFAULT_OUT_TIME = 30; private OkHttpClient.Builder builder; - private HttpBuilderControl() { + private NetworkControl() { builder = new OkHttpClient.Builder(); builder.connectTimeout(DEFAULT_OUT_TIME, TimeUnit.SECONDS); } @SuppressWarnings("unchecked") - public HttpBuilderControl connectTimeout(long timeout, TimeUnit unit) { + public NetworkControl connectTimeout(long timeout, TimeUnit unit) { builder.connectTimeout(timeout, unit); return this; } - public HttpBuilderControl addNetworkInterceptor(Interceptor interceptor) { + public NetworkControl addNetworkInterceptor(Interceptor interceptor) { builder.addNetworkInterceptor(interceptor); return this; } - public HttpBuilderControl addInterceptor(Interceptor interceptor) { + public NetworkControl addInterceptor(Interceptor interceptor) { builder.addInterceptor(interceptor); return this; } @@ -39,10 +39,10 @@ public OkHttpClient build() { } private static class SingletonHolder { - private static final HttpBuilderControl INSTANCE = new HttpBuilderControl(); + private static final NetworkControl INSTANCE = new NetworkControl(); } - static synchronized HttpBuilderControl get() { + static synchronized NetworkControl get() { return SingletonHolder.INSTANCE; } } diff --git a/support-ly-http/src/main/java/com/leftcoding/http/intercept/HttpLogging.java b/support-ly-network/src/main/java/com/leftcoding/network/intercept/HttpLogging.java similarity index 85% rename from support-ly-http/src/main/java/com/leftcoding/http/intercept/HttpLogging.java rename to support-ly-network/src/main/java/com/leftcoding/network/intercept/HttpLogging.java index 7cc46d2b..939768ff 100644 --- a/support-ly-http/src/main/java/com/leftcoding/http/intercept/HttpLogging.java +++ b/support-ly-network/src/main/java/com/leftcoding/network/intercept/HttpLogging.java @@ -1,10 +1,10 @@ -package com.leftcoding.http.intercept; +package com.leftcoding.network.intercept; -import android.support.annotation.NonNull; import android.util.Log; -import com.leftcoding.http.BuildConfig; +import com.leftcoding.network.BuildConfig; +import io.reactivex.annotations.NonNull; import okhttp3.logging.HttpLoggingInterceptor; /** @@ -12,7 +12,7 @@ */ public class HttpLogging { - private static final String TAG = "OkHttpLogging"; + private static final String TAG = "HttpLogging"; private HttpLoggingInterceptor mLogging; private HttpLoggingInterceptor.Level mLevel; diff --git a/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxActionManager.java b/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxActionManager.java new file mode 100644 index 00000000..2184bce6 --- /dev/null +++ b/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxActionManager.java @@ -0,0 +1,15 @@ +package com.leftcoding.network.rxjava; + +import io.reactivex.disposables.Disposable; + +/** + * Create by LingYan on 2018-03-20 + */ + +public interface RxActionManager { + void add(String tag, Disposable disposable); + + void clear(String tag); + + void clearAll(); +} diff --git a/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxApiManager.java b/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxApiManager.java new file mode 100644 index 00000000..1865356e --- /dev/null +++ b/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxApiManager.java @@ -0,0 +1,74 @@ +package com.leftcoding.network.rxjava; + +import android.util.ArrayMap; + +import java.util.Iterator; +import java.util.Map; + +import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.disposables.Disposable; + +/** + * Create by LingYan on 2018-03-20 + */ + +public class RxApiManager implements RxActionManager { + private static RxApiManager sInstance = null; + private final ArrayMap maps; + + public static RxApiManager get() { + if (sInstance == null) { + synchronized (RxApiManager.class) { + if (sInstance == null) { + sInstance = new RxApiManager(); + } + } + } + return sInstance; + } + + private RxApiManager() { + maps = new ArrayMap<>(); + } + + @Override + public void add(String tag, Disposable disposable) { + CompositeDisposable compositeDisposable = null; + if (isContainsKey(tag)) { + compositeDisposable = maps.get(tag); + } + if (compositeDisposable == null) { + compositeDisposable = new CompositeDisposable(); + maps.put(tag, compositeDisposable); + } + compositeDisposable.add(disposable); + } + + @Override + public void clear(String tag) { + if (isContainsKey(tag)) { + CompositeDisposable disposable = maps.remove(tag); + if (disposable != null && !disposable.isDisposed()) { + disposable.isDisposed(); + } + } + } + + private boolean isContainsKey(String key) { + return !isEmpty() && maps.containsKey(key); + } + + private boolean isEmpty() { + return maps.isEmpty(); + } + + @Override + public void clearAll() { + if (!isEmpty()) { + Iterator> it = maps.entrySet().iterator(); + while (it.hasNext()) { + it.remove(); + } + } + } +} diff --git a/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxConsumer.java b/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxConsumer.java new file mode 100644 index 00000000..a33b1b84 --- /dev/null +++ b/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxConsumer.java @@ -0,0 +1,11 @@ +package com.leftcoding.network.rxjava; + +/** + * Create by LingYan on 2018-03-20 + */ + +public interface RxConsumer { + void next(T t) throws Exception; + + void onError(Throwable throwable); +} diff --git a/support-ly-http/src/main/res/values/strings.xml b/support-ly-network/src/main/res/values/strings.xml similarity index 100% rename from support-ly-http/src/main/res/values/strings.xml rename to support-ly-network/src/main/res/values/strings.xml diff --git a/support-ly-rxbus/build.gradle b/support-ly-rxbus/build.gradle index 9bb9f94c..13285843 100644 --- a/support-ly-rxbus/build.gradle +++ b/support-ly-rxbus/build.gradle @@ -7,8 +7,8 @@ android { defaultConfig { minSdkVersion rootProject.minSdkVersion targetSdkVersion rootProject.targetSdkVersion - versionCode 1 - versionName "1.0" + versionCode rootProject.normalVersionCode + versionName rootProject.normalVersionName testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } From 8c1099829ba884dc0537ac0ee5bf772a53115558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=87=8C=E7=82=8E?= Date: Wed, 21 Mar 2018 17:53:13 +0800 Subject: [PATCH 13/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 3 +- .../java/com/gank/gankly/bean/GankResult.java | 10 +- .../gank/gankly/config/MeiziArrayList.java | 16 +- .../com/gank/gankly/mvp/FetchPresenter.java | 5 +- .../gank/gankly/mvp/base/BasePresenter.java | 31 +- .../com/gank/gankly/mvp/base/SupportView.java | 1 - .../gankly/mvp/observer/BaseObserver.java | 30 +- .../gankly/mvp/observer/PageObserver.java | 52 --- .../gankly/mvp/observer/PageOnObserver.java | 54 +++ .../gankly/mvp/observer/RefreshObserver.java | 52 --- .../mvp/observer/RefreshOnObserver.java | 40 +++ .../gankly/ui/android/AndroidAdapter.java | 21 +- .../gankly/ui/android/AndroidContract.java | 10 +- .../gankly/ui/android/AndroidFragment.java | 112 +++--- .../gankly/ui/android/AndroidPresenter.java | 151 ++++---- .../gankly/ui/baisi/BaiSiVideoFragment.java | 2 +- .../ui/baisi/image/BaiSiImageFragment.java | 2 +- .../gankly/ui/collect/CollectFragment.java | 2 +- .../discovered/jiandan/JiandanFragment.java | 2 +- .../discovered/teamBlog/TeamBlogFragment.java | 2 +- .../technology/TechnologyFragment.java | 2 +- .../ui/discovered/video/VideoAdapter.java | 16 +- .../ui/discovered/video/VideoContract.java | 7 +- .../ui/discovered/video/VideoFragment.java | 10 +- .../ui/discovered/video/VideoPresenter.java | 5 +- .../gankly/ui/gallery/GalleryActivity.java | 10 +- .../gankly/ui/gallery/GalleryContract.java | 5 +- .../gankly/ui/gallery/GalleryPresenter.java | 5 +- .../gankly/ui/girls/cure/CureFragment.java | 2 +- .../girls/dailymeizi/DailyMeiziFragment.java | 2 +- .../gankly/ui/girls/pure/PureFragment.java | 2 +- .../gankly/ui/girls/pure/PurePresenter.java | 8 +- .../ui/history/BrowseHistoryFragment.java | 2 +- .../com/gank/gankly/ui/ios/IosAdapter.java | 18 +- .../com/gank/gankly/ui/ios/IosContract.java | 6 +- .../com/gank/gankly/ui/ios/IosFragment.java | 14 +- .../com/gank/gankly/ui/ios/IosPresenter.java | 176 +++++----- .../gankly/ui/main/LauncherPresenter.java | 8 +- .../gankly/ui/web/normal/WebActivity.java | 4 +- .../gankly/ui/welfare/WelfareAdapter.java | 11 +- .../gankly/ui/welfare/WelfareContract.java | 7 +- .../gankly/ui/welfare/WelfareFragment.java | 8 +- .../gankly/ui/welfare/WelfarePresenter.java | 5 +- .../gankly/widget/LySwipeRefreshLayout.java | 12 +- .../src/main/java/com/example/javalib/A.java | 9 +- .../java/android/ly/business/api/GankApi.java | 14 +- .../android/ly/business/api/GankServer.java | 66 ++-- .../ly/business/domain/BaseEntity.java | 13 + .../ly/business/domain/BaseResult.java | 5 - .../domain/{Entity.java => Gank.java} | 16 +- .../{ListResult.java => ListEntity.java} | 2 +- .../ly/business/domain/PageConfig.java | 16 +- .../ly/business/domain/PageEntity.java | 2 +- .../leftcoding/rxbus}/RxActionManager.java | 2 +- .../com/leftcoding/rxbus}/RxApiManager.java | 2 +- .../com/leftcoding/rxbus}/RxConsumer.java | 2 +- .../java/com/leftcoding/rxbus/RxManager.java | 48 --- .../main/java/android/lectcoding/ui/M.java | 8 - .../android/lectcoding/ui/logcat/Logcat.java | 327 ++++++++++++++++++ .../lectcoding/ui/logcat/LogcatUtil.java | 23 ++ .../lectcoding/ui/logcat/base/BaseLog.java | 51 +++ .../lectcoding/ui/logcat/base/FileLog.java | 51 +++ .../lectcoding/ui/logcat/base/JsonLog.java | 37 ++ .../lectcoding/ui/logcat/base/XmlLog.java | 56 +++ 64 files changed, 1058 insertions(+), 635 deletions(-) delete mode 100644 app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java create mode 100644 app/src/main/java/com/gank/gankly/mvp/observer/PageOnObserver.java delete mode 100644 app/src/main/java/com/gank/gankly/mvp/observer/RefreshObserver.java create mode 100644 app/src/main/java/com/gank/gankly/mvp/observer/RefreshOnObserver.java create mode 100644 support-ly-business/src/main/java/android/ly/business/domain/BaseEntity.java delete mode 100644 support-ly-business/src/main/java/android/ly/business/domain/BaseResult.java rename support-ly-business/src/main/java/android/ly/business/domain/{Entity.java => Gank.java} (83%) rename support-ly-business/src/main/java/android/ly/business/domain/{ListResult.java => ListEntity.java} (73%) rename {support-ly-network/src/main/java/com/leftcoding/network/rxjava => support-ly-rxbus/src/main/java/com/leftcoding/rxbus}/RxActionManager.java (85%) rename {support-ly-network/src/main/java/com/leftcoding/network/rxjava => support-ly-rxbus/src/main/java/com/leftcoding/rxbus}/RxApiManager.java (97%) rename {support-ly-network/src/main/java/com/leftcoding/network/rxjava => support-ly-rxbus/src/main/java/com/leftcoding/rxbus}/RxConsumer.java (80%) delete mode 100644 support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxManager.java delete mode 100644 support-ly-ui/src/main/java/android/lectcoding/ui/M.java create mode 100644 support-ly-ui/src/main/java/android/lectcoding/ui/logcat/Logcat.java create mode 100644 support-ly-ui/src/main/java/android/lectcoding/ui/logcat/LogcatUtil.java create mode 100644 support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/BaseLog.java create mode 100644 support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java create mode 100644 support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/JsonLog.java create mode 100644 support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/XmlLog.java diff --git a/app/build.gradle b/app/build.gradle index 5639208a..49cb0ed3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -85,6 +85,7 @@ dependencies { implementation project(':support-ly-business') implementation project(':support-ly-rxbus') implementation project(':superplayerlibrary') + implementation project(':support-ly-ui') implementation "com.android.support:appcompat-v7:${supportVersion}" implementation "com.android.support:design:${supportVersion}" @@ -132,6 +133,6 @@ dependencies { implementation "io.reactivex.rxjava2:rxjava:${rxjava}" implementation "io.reactivex.rxjava2:rxandroid:${rxandroid}" implementation "com.tencent.bugly:crashreport_upgrade:${crashreportUpgrade}" - implementation project(':support-ly-ui') + implementation 'com.android.support.constraint:constraint-layout:1.0.2' } diff --git a/app/src/main/java/com/gank/gankly/bean/GankResult.java b/app/src/main/java/com/gank/gankly/bean/GankResult.java index aef85e49..74e0f96f 100644 --- a/app/src/main/java/com/gank/gankly/bean/GankResult.java +++ b/app/src/main/java/com/gank/gankly/bean/GankResult.java @@ -1,6 +1,6 @@ package com.gank.gankly.bean; -import android.ly.business.domain.Entity; +import android.ly.business.domain.Gank; import android.os.Parcel; import android.os.Parcelable; @@ -13,14 +13,14 @@ */ public class GankResult extends BaseResult implements Parcelable { - private List results; + private List results; - public GankResult(List results) { + public GankResult(List results) { this.results = results; } protected GankResult(Parcel in) { - results = in.createTypedArrayList(Entity.CREATOR); + results = in.createTypedArrayList(Gank.CREATOR); } public static final Creator CREATOR = new Creator() { @@ -35,7 +35,7 @@ public GankResult[] newArray(int size) { } }; - public List getResults() { + public List getResults() { return results; } diff --git a/app/src/main/java/com/gank/gankly/config/MeiziArrayList.java b/app/src/main/java/com/gank/gankly/config/MeiziArrayList.java index 8f9f4e12..6a23fc23 100644 --- a/app/src/main/java/com/gank/gankly/config/MeiziArrayList.java +++ b/app/src/main/java/com/gank/gankly/config/MeiziArrayList.java @@ -1,6 +1,6 @@ package com.gank.gankly.config; -import android.ly.business.domain.Entity; +import android.ly.business.domain.Gank; import com.gank.gankly.utils.ListUtils; @@ -12,8 +12,8 @@ */ public class MeiziArrayList { private static MeiziArrayList sMeiziArrayList; - private List mOneItemsList; - private List mMeiziList; + private List mOneItemsList; + private List mMeiziList; private int mPage = 0; private MeiziArrayList() { @@ -28,24 +28,24 @@ public static MeiziArrayList getInstance() { return sMeiziArrayList; } - public void refillOneItems(List list) { + public void refillOneItems(List list) { if (ListUtils.isListEmpty(mOneItemsList)) { mOneItemsList.addAll(list); } } - public void addImages(List list, int page) { + public void addImages(List list, int page) { if (mPage < page) { mMeiziList.addAll(list); mPage = page; } } - public List getImagesList() { + public List getImagesList() { return mMeiziList; } - public List getOneItemsList() { + public List getOneItemsList() { return mOneItemsList; } @@ -57,7 +57,7 @@ public int getPage() { return mPage; } - public Entity getResultBean(int position) { + public Gank getResultBean(int position) { if (ListUtils.isListEmpty(mMeiziList)) { return null; } diff --git a/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java b/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java index e07bf3d3..07469bc0 100644 --- a/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java @@ -1,11 +1,12 @@ package com.gank.gankly.mvp; +import android.ly.business.domain.Gank; + import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.bean.GankResult; import com.gank.gankly.mvp.base.SupportView; import com.gank.gankly.utils.ListUtils; -import com.leftcoding.network.domain.ResultsBean; import java.util.List; @@ -59,7 +60,7 @@ public int getFetchPage() { return fetchPage; } - public List filterData(GankResult gankResult, SupportView view) { + public List filterData(GankResult gankResult, SupportView view) { view.hideProgress(); if (gankResult != null) { int size = gankResult.getSize(); diff --git a/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java b/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java index e605c9e0..c860c7cb 100644 --- a/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java @@ -2,43 +2,42 @@ import android.content.Context; +import com.gank.gankly.R; import com.gank.gankly.mvp.ISubscribePresenter; +import java.util.UUID; + /** * Create by LingYan on 2016-05-12 */ public abstract class BasePresenter extends BaseContract.Presenter implements ISubscribePresenter { - protected E mView; - protected Context mContext; + protected E view; + protected Context context; + protected String requestTag = UUID.randomUUID().toString(); + protected String errorTip; public BasePresenter(Context context, E view) { checkNotNull(context); checkNotNull(view); - this.mView = view; - this.mContext = context; + this.view = view; + this.context = context; + errorTip = context.getString(R.string.loading_error); } @SuppressWarnings("used") - private static T checkNotNull(T reference) { + private void checkNotNull(T reference) { if (reference == null) { throw new NullPointerException(); } - return reference; - } - - protected void showShortToast(String string) { - if (mView != null) { - mView.showShortToast(string); - } } @Override public void unSubscribe() { - mView = null; - mContext = null; + view = null; + context = null; } - protected boolean isActivityLife() { - return mView != null; + protected boolean isViewLife() { + return view != null; } } diff --git a/app/src/main/java/com/gank/gankly/mvp/base/SupportView.java b/app/src/main/java/com/gank/gankly/mvp/base/SupportView.java index bb0024ff..097c29e7 100644 --- a/app/src/main/java/com/gank/gankly/mvp/base/SupportView.java +++ b/app/src/main/java/com/gank/gankly/mvp/base/SupportView.java @@ -2,7 +2,6 @@ /** * Create by LingYan on 2016-10-20 - * Email:137387869@qq.com */ public interface SupportView extends BaseView { diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java index 4b27eb3c..e97b04b7 100644 --- a/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java +++ b/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java @@ -1,7 +1,8 @@ package com.gank.gankly.mvp.observer; -import com.leftcoding.rxbus.RxManager; -import com.socks.library.KLog; +import android.lectcoding.ui.logcat.Logcat; + +import com.leftcoding.rxbus.RxApiManager; import io.reactivex.Observer; import io.reactivex.annotations.NonNull; @@ -12,31 +13,18 @@ */ public abstract class BaseObserver implements Observer { - private final String mTag; + private String observerTag; - BaseObserver(String tag) { - this.mTag = tag; + BaseObserver(String requestTag) { + this.observerTag = requestTag; } @Override public void onSubscribe(@NonNull Disposable d) { - RxManager.get().add(mTag, d); + RxApiManager.get().add(observerTag, d); } - @Override - public void onError(@NonNull Throwable e) { - KLog.e(e); + protected void onErrorException(Throwable e) { + Logcat.e(e); } - - protected abstract void onSuccessEmpty(); - - protected abstract void refreshEmpty(); - - protected abstract void appendEmpty(); - - protected abstract void onErrorException(); - - protected abstract void refreshError(); - - protected abstract void appendError(); } diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java deleted file mode 100644 index a6e2453c..00000000 --- a/app/src/main/java/com/gank/gankly/mvp/observer/PageObserver.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.gank.gankly.mvp.observer; - -import com.leftcoding.network.domain.PageResult; - -import io.reactivex.annotations.NonNull; - -/** - * Create by LingYan on 2017-10-12 - */ - -public abstract class PageObserver extends RefreshObserver { - private boolean isFirst; - - public PageObserver(String tag, boolean isFirst) { - super(tag); - this.isFirst = isFirst; - } - - @Override - public void onNext(@NonNull T t) { - if (t instanceof PageResult) { - PageResult result = (PageResult) t; - if (result.results == null || result.results.isEmpty()) { - onSuccessEmpty(); - } - } - } - - @Override - public void onError(@NonNull Throwable e) { - super.onError(e); - onErrorException(); - } - - @Override - protected void onErrorException() { - if (isFirst) { - refreshError(); - } else { - appendError(); - } - } - - @Override - protected void onSuccessEmpty() { - if (isFirst) { - refreshEmpty(); - } else { - appendEmpty(); - } - } -} diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/PageOnObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/PageOnObserver.java new file mode 100644 index 00000000..3f1691c3 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/mvp/observer/PageOnObserver.java @@ -0,0 +1,54 @@ +package com.gank.gankly.mvp.observer; + +import android.ly.business.domain.PageEntity; + +import com.gank.gankly.mvp.base.BaseView; + +/** + * Create by LingYan on 2017-10-12 + */ + +public abstract class PageOnObserver extends RefreshOnObserver { + protected boolean isFirst = true; + protected int limit; + + protected PageOnObserver(String requestTag, V v, boolean isFirst) { + super(requestTag, v); + this.isFirst = isFirst; + } + + @Override + public final void onNext(T t) { + if (t != null) { + onSuccess(t); + } else { + onFailure(); + } + } + + @Override + public final void onError(Throwable e) { + onErrorException(e); + onFailure(); + } + + protected abstract void loadMoreSuccess(T t); + + protected abstract void loadMoreFailure(); + + private void onSuccess(T t) { + if (isFirst) { + onRefreshSuccess(t); + } else { + loadMoreSuccess(t); + } + } + + private void onFailure() { + if (isFirst) { + onRefreshFailure(); + } else { + loadMoreFailure(); + } + } +} diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/RefreshObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/RefreshObserver.java deleted file mode 100644 index 802ce59b..00000000 --- a/app/src/main/java/com/gank/gankly/mvp/observer/RefreshObserver.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.gank.gankly.mvp.observer; - -/** - * Create by LingYan on 2017-11-19 - * Email:137387869@qq.com - */ - -public abstract class RefreshObserver extends BaseObserver { - public RefreshObserver(String tag) { - super(tag); - } - - @Override - protected void onSuccessEmpty() { - - } - - @Override - protected void refreshEmpty() { - - } - - @Override - protected void appendEmpty() { - - } - - @Override - protected void onErrorException() { - - } - - @Override - protected void refreshError() { - - } - - @Override - protected void appendError() { - - } - - @Override - public void onNext(T t) { - - } - - @Override - public void onComplete() { - - } -} diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/RefreshOnObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/RefreshOnObserver.java new file mode 100644 index 00000000..ce99bdf5 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/mvp/observer/RefreshOnObserver.java @@ -0,0 +1,40 @@ +package com.gank.gankly.mvp.observer; + +import android.ly.business.domain.BaseEntity; + +import com.gank.gankly.mvp.base.BaseView; + +/** + * Create by LingYan on 2017-11-19 + */ + +public abstract class RefreshOnObserver extends BaseObserver { + protected V view; + + RefreshOnObserver(String requestTag, V v) { + super(requestTag); + this.view = v; + } + + protected abstract void onRefreshSuccess(T t); + + protected abstract void onRefreshFailure(); + + @Override + public void onNext(T t) { + if (t == null) { + onRefreshFailure(); + } + } + + @Override + public void onError(Throwable e) { + onErrorException(e); + onRefreshFailure(); + } + + @Override + public void onComplete() { + // nothing + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java index a463bf6b..d8b9f0ab 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java @@ -4,7 +4,7 @@ import android.lectcoding.ui.adapter.BaseAdapter; import android.lectcoding.ui.adapter.BasicItem; import android.lectcoding.ui.adapter.Item; -import android.ly.business.domain.Entity; +import android.ly.business.domain.Gank; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.ViewGroup; @@ -30,7 +30,7 @@ class AndroidAdapter extends BaseAdapter { private ItemCallBack itemCallBack; private Context context; - private final List resultsBeans = new ArrayList<>(); + private final List resultsBeans = new ArrayList<>(); private final List itemList = new ArrayList<>(); AndroidAdapter(@NonNull Context context) { @@ -45,7 +45,7 @@ public void onChanged() { super.onChanged(); itemList.clear(); if (!resultsBeans.isEmpty()) { - for (Entity resultsBean : resultsBeans) { + for (Gank resultsBean : resultsBeans) { if (resultsBean != null) { itemList.add(new TextItem(resultsBean)); } @@ -102,14 +102,13 @@ public long getItemId(int position) { return position; } - void fillItems(List results) { + void fillItems(List results) { resultsBeans.clear(); appendItems(results); } - public void appendItems(List results) { + public void appendItems(List results) { resultsBeans.addAll(results); - this.notifyDataSetChanged(); } public void setOnItemClickListener(ItemCallBack itemCallBack) { @@ -130,13 +129,13 @@ public void destroy() { } private static class TextItem extends BasicItem { - private Entity resultsBean; + private Gank resultsBean; - TextItem(Entity resultsBean) { + TextItem(Gank resultsBean) { this.resultsBean = resultsBean; } - Entity getResultsBean() { + Gank getResultsBean() { return resultsBean; } @@ -163,7 +162,7 @@ static class TextKnifeHolder extends ButterKnifeHolder { @BindView(R.id.title) TextView title; - private Entity resultsBean; + private Gank resultsBean; TextKnifeHolder(ViewGroup parent, final ItemCallBack itemCallBack) { super(parent, R.layout.adapter_android); @@ -176,7 +175,7 @@ static class TextKnifeHolder extends ButterKnifeHolder { @Override public void bindItem(TextItem item) { - final Entity resultsBean = item.getResultsBean(); + final Gank resultsBean = item.getResultsBean(); this.resultsBean = resultsBean; time.setText(item.getTime()); diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java index 3c75932e..b302037f 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java @@ -1,11 +1,11 @@ package com.gank.gankly.ui.android; import android.content.Context; +import android.ly.business.domain.Gank; import android.support.annotation.NonNull; import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; -import com.leftcoding.network.domain.ResultsBean; import java.util.List; @@ -15,11 +15,11 @@ public interface AndroidContract { interface View extends SupportView { - void refreshAndroidSuccess(List list); + void refreshAndroidSuccess(List list); void refreshAndroidFailure(String msg); - void appendAndroidSuccess(List list); + void appendAndroidSuccess(List list); void appendAndroidFailure(String msg); } @@ -30,8 +30,8 @@ public Presenter(@NonNull Context context, @NonNull View view) { super(context, view); } - protected abstract void refreshAndroid(); + protected abstract void refreshAndroid(int page); - protected abstract void appendAndroid(); + protected abstract void appendAndroid(int page); } } diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java index 0f1e73fc..b1826212 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java @@ -2,12 +2,13 @@ import android.content.Context; import android.content.Intent; +import android.ly.business.domain.Gank; +import android.ly.business.domain.PageConfig; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.View; import com.gank.gankly.R; @@ -17,12 +18,8 @@ import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.web.normal.WebActivity; import com.gank.gankly.utils.CircularAnimUtils; -import com.gank.gankly.utils.ToastUtils; -import com.gank.gankly.utils.theme.RecyclerViewColor; -import com.gank.gankly.utils.theme.ThemeColor; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; -import com.leftcoding.network.domain.ResultsBean; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -39,13 +36,12 @@ public class AndroidFragment extends LazyFragment implements AndroidContract.Vie @BindView(R.id.swipe_refresh) LySwipeRefreshLayout swipeRefreshLayout; - private RecyclerView mRecyclerView; - - private MainActivity mActivity; - private AndroidAdapter mAdapter; - private AndroidContract.Presenter mPresenter; + private Context context; + private AndroidAdapter androidAdapter; + private AndroidContract.Presenter androidPresenter; private AtomicBoolean firstRefresh = new AtomicBoolean(true); + private PageConfig pageConfig; @Override protected int getLayoutId() { @@ -55,23 +51,25 @@ protected int getLayoutId() { @Override public void onAttach(Context context) { super.onAttach(context); - this.mActivity = (MainActivity) context; + this.context = context; } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + pageConfig = new PageConfig(); + initRecycler(); - mAdapter.setOnItemClickListener(itemCallBack); + androidAdapter.setOnItemClickListener(itemCallBack); multipleStatusView.setListener(onMultipleClick); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mPresenter = new AndroidPresenter(getBaseContext(), this); - mPresenter.refreshAndroid(); + androidPresenter = new AndroidPresenter(getBaseContext(), this); + initLoadAndroid(); } @Override @@ -80,65 +78,77 @@ protected void initLazy() { } private void initRecycler() { - mAdapter = new AndroidAdapter(getBaseContext()); - swipeRefreshLayout.setAdapter(mAdapter); - mRecyclerView = swipeRefreshLayout.getRecyclerView(); + androidAdapter = new AndroidAdapter(getBaseContext()); + swipeRefreshLayout.setAdapter(androidAdapter); swipeRefreshLayout.setLayoutManager(new LinearLayoutManager(getContext())); swipeRefreshLayout.setOnScrollListener(onRefreshListener); } private final ItemCallBack itemCallBack = (view, position, object) -> { - if (object instanceof ResultsBean) { - ResultsBean resultsBean = (ResultsBean) object; + if (object instanceof Gank) { + Gank resultsBean = (Gank) object; Bundle bundle = new Bundle(); bundle.putString(WebActivity.TITLE, resultsBean.desc); bundle.putString(WebActivity.URL, resultsBean.url); bundle.putString(WebActivity.TYPE, Constants.ANDROID); bundle.putString(WebActivity.AUTHOR, resultsBean.who); - Intent intent = new Intent(mActivity, WebActivity.class); + Intent intent = new Intent(context, WebActivity.class); intent.putExtras(bundle); - CircularAnimUtils.startActivity(mActivity, intent, view, R.color.white_half); + CircularAnimUtils.startActivity((MainActivity) context, intent, view, R.color.white_half); } }; - private final LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener onRefreshListener = new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + private final LySwipeRefreshLayout.OnSwipeRefreshListener onRefreshListener = new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { - mPresenter.refreshAndroid(); + initLoadAndroid(); } @Override public void onLoadMore() { - mPresenter.appendAndroid(); + androidPresenter.appendAndroid(pageConfig.curPage); } }; - private final MultipleStatusView.OnMultipleClick onMultipleClick = new MultipleStatusView.OnMultipleClick() { - @Override - public void retry(View v) { - showLoading(); - mPresenter.refreshAndroid(); - } + private final MultipleStatusView.OnMultipleClick onMultipleClick = v -> { + showLoading(); + initLoadAndroid(); }; + private void initLoadAndroid() { + androidPresenter.refreshAndroid(pageConfig.initPage); + } + @Override - public void refreshAndroidSuccess(List list) { - mAdapter.fillItems(list); + public void refreshAndroidSuccess(List list) { + if (pageConfig != null) { + pageConfig.curPage += 1; + } + if (androidAdapter != null) { + androidAdapter.fillItems(list); + androidAdapter.notifyDataSetChanged(); + } } @Override public void refreshAndroidFailure(String msg) { - + showShortToast(msg); } @Override - public void appendAndroidSuccess(List list) { - mAdapter.appendItems(list); + public void appendAndroidSuccess(List list) { + if (pageConfig != null) { + pageConfig.curPage += 1; + } + if (androidAdapter != null) { + androidAdapter.appendItems(list); + androidAdapter.notifyDataSetChanged(); + } } @Override public void appendAndroidFailure(String msg) { - + showShortToast(msg); } @Override @@ -203,11 +213,6 @@ private void showLoading() { } } - @Override - public void showShortToast(String str) { - ToastUtils.showToast(str); - } - public static AndroidFragment newInstance() { AndroidFragment fragment = new AndroidFragment(); Bundle args = new Bundle(); @@ -218,27 +223,14 @@ public static AndroidFragment newInstance() { @Override public void onDestroyView() { super.onDestroyView(); - if (mAdapter != null) { - mAdapter.destroy(); - mAdapter = null; + if (androidAdapter != null) { + androidAdapter.destroy(); + androidAdapter = null; } - if (mPresenter != null) { - mPresenter.unSubscribe(); - mPresenter = null; + if (androidPresenter != null) { + androidPresenter.unSubscribe(); + androidPresenter = null; } } - - protected void callBackRefreshUi() { - ThemeColor themeColor = new ThemeColor(this); - RecyclerViewColor mRecycler = new RecyclerViewColor(mRecyclerView); - mRecycler.setItemColor(R.id.title, R.attr.baseAdapterItemTextColor); - mRecycler.setItemColor(R.id.time, R.attr.textSecondaryColor); - mRecycler.setItemBackgroundColor(R.id.android_rl, R.attr.lyItemSelectBackground); - - themeColor.setBackgroundResource(R.attr.themeBackground, mRecyclerView); - themeColor.swipeRefresh(swipeRefreshLayout); - themeColor.recyclerViewColor(mRecycler); - themeColor.start(); - } } diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java index a62c5023..aee47f52 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java @@ -1,145 +1,128 @@ package com.gank.gankly.ui.android; import android.content.Context; -import android.ly.business.domain.Entity; -import android.ly.business.domain.PageConfig; +import android.ly.business.api.GankServer; +import android.ly.business.domain.Gank; +import android.ly.business.domain.PageEntity; -import com.gank.gankly.R; +import com.gank.gankly.mvp.observer.PageOnObserver; import com.gank.gankly.ui.android.AndroidContract.Presenter; -import com.leftcoding.rxbus.RxManager; +import com.leftcoding.rxbus.RxApiManager; + +import java.util.concurrent.atomic.AtomicBoolean; /** * Create by LingYan on 2016-10-25 */ class AndroidPresenter extends Presenter { - private static final String TAG = "android_presenter"; - private static final int INIT_PAGE = 1; - - private PageResult pageResult; - private PageConfig pageConfig; + // 请求个数 + private static final int INIT_LIMIT = 20; + private final AtomicBoolean destroyTag = new AtomicBoolean(false); AndroidPresenter(Context context, AndroidContract.View view) { super(context, view); - pageConfig = new PageConfig(); } @Override - protected void refreshAndroid() { - fetchAndroid(INIT_PAGE); + protected void refreshAndroid(int page) { + fetchAndroid(page); } @Override - protected void appendAndroid() { - if (pageResult != null && !pageResult.hasNoMore(pageConfig.mLimit)) { - fetchAndroid(pageResult.nextPage); - } + protected void appendAndroid(int page) { + fetchAndroid(page); } @Override public void unSubscribe() { + if (destroyTag.compareAndSet(false, true)) { + RxApiManager.get().clear(requestTag); + } super.unSubscribe(); - RxManager.get().clear(TAG); - pageResult = null; } private void fetchAndroid(final int curPage) { - pageConfig.mCurPage = curPage; + if (destroyTag.get()) { + return; + } - GankServerManager.with(mContext) - .androids(curPage, pageConfig.mLimit) + GankServer.get(context) + .androids(curPage, INIT_LIMIT) .doOnSubscribe(disposable -> { - if (isActivityLife()) { - mView.showProgress(); + if (isViewLife()) { + view.showProgress(); } }) .doFinally(() -> { - if (isActivityLife()) { - mView.hideProgress(); + if (isViewLife()) { + view.hideProgress(); } }) - .subscribe(new PageSubscribe()); + .subscribe(new PageSubscribe(requestTag, view, isFirst(curPage)) + .limit(INIT_LIMIT)); } - private class PageSubscribe extends PageObserver> { - PageSubscribe() { - this(isRefreshRequest()); - } - - PageSubscribe(boolean isFirst) { - super(TAG, isFirst); - } + private boolean isFirst(int curPage) { + return curPage == 1; + } - @Override - public void onNext(PageResult results) { - super.onNext(results); - parseAndroidData(results); + private static class PageSubscribe extends PageOnObserver, AndroidContract.View> { + PageSubscribe(String requestTag, AndroidContract.View view, boolean isFirst) { + super(requestTag, view, isFirst); } - @Override - public void onError(Throwable e) { - super.onError(e); + public PageSubscribe limit(int limit) { + this.limit = limit; + return this; } @Override - protected void refreshEmpty() { - if (isActivityLife()) { - mView.showEmpty(); + protected void loadMoreSuccess(PageEntity gankPageEntity) { + if (view == null) { + return; } - } - @Override - protected void appendEmpty() { - if (isActivityLife()) { - mView.hasNoMoreDate(); + if (gankPageEntity.results == null) { + view.appendAndroidFailure(gankPageEntity.msg); + return; } - } - @Override - public void onComplete() { + if (gankPageEntity.hasNoMore(limit)) { + view.hasNoMoreDate(); + } + view.appendAndroidSuccess(gankPageEntity.results); } @Override - protected void refreshError() { - super.refreshError(); - if (isActivityLife()) { - mView.showError(); + protected void loadMoreFailure() { + if (view != null) { + view.appendAndroidFailure(null); } } @Override - protected void appendError() { - super.appendError(); - if (isActivityLife()) { - mView.showShortToast(mContext.getString(R.string.loading_error)); + protected void onRefreshSuccess(PageEntity gankPageEntity) { + if (view == null) { + return; } - } - } - private void parseAndroidData(final PageResult result) { - if (!isActivityLife()) { - return; - } + if (gankPageEntity.results == null) { + view.refreshAndroidFailure(gankPageEntity.msg); + view.showEmpty(); + return; + } - pageResult = result; - pageResult.nextPage = getNextPage(); - mView.showContent(); - if (isRefreshRequest()) { - mView.refreshAndroidSuccess(result.results); - } else { - mView.appendAndroidSuccess(result.results); + view.showContent(); + view.refreshAndroidSuccess(gankPageEntity.results); } - } - private int getNextPage() { - return getCurPage() + 1; - } - - private boolean isRefreshRequest() { - return pageConfig.isFirstRequest(); - } - - private int getCurPage() { - return pageConfig.mCurPage; + @Override + protected void onRefreshFailure() { + if (view != null) { + view.refreshAndroidFailure(null); + view.showEmpty(); + } + } } } diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java index d67e82d0..6541d651 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java @@ -73,7 +73,7 @@ private void initViews() { int spacingInPixels = getResources().getDimensionPixelSize(R.dimen.recycler_view_space); mSwipeRefreshLayout.getRecyclerView().addItemDecoration(new SpaceItemDecoration(spacingInPixels)); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onLoadMore() { showProgress(); diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java index d866547d..38074140 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java @@ -60,7 +60,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat .commitAllowingStateLoss()); mSwipeRefreshLayout.setAdapter(mAdapter); mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity)); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { mPresenter.fetchNew(); diff --git a/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java b/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java index 08a11fcc..7e591d2e 100644 --- a/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java @@ -81,7 +81,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat } }); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { showProgress(); diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java index 996cea7c..c6880761 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java @@ -74,7 +74,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat mSwipeRefreshLayout.getRecyclerView().setHasFixedSize(true); mSwipeRefreshLayout.getRecyclerView().addItemDecoration(new MyDecoration(mActivity, LinearLayoutManager.HORIZONTAL)); // mSwipeRefreshLayout.setColorSchemeColors(App.getAppColor(R.color.colorPrimary)); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { mPresenter.fetchNew(); diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java index 520fe9d0..4f8b5f15 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java @@ -80,7 +80,7 @@ protected void initValues() { mRecyclerView = mSwipeRefreshLayout.getRecyclerView(); mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity)); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { mPresenter.fetchNew(); diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java index 25ddeaf4..d4324a7a 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java @@ -77,7 +77,7 @@ private void initValues() { mRecyclerView = mSwipeRefreshLayout.getRecyclerView(); mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity)); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { mPresenter.fetchNew(); diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java index 849e05b8..6ea54b25 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java @@ -1,6 +1,7 @@ package com.gank.gankly.ui.discovered.video; import android.content.Context; +import android.ly.business.domain.Gank; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; @@ -13,7 +14,6 @@ import com.gank.gankly.R; import com.gank.gankly.config.MeiziArrayList; import com.gank.gankly.listener.MeiziOnClick; -import com.leftcoding.network.domain.ResultsBean; import java.util.ArrayList; import java.util.Collections; @@ -27,8 +27,8 @@ * Create by LingYan on 2016-04-25 */ public class VideoAdapter extends RecyclerView.Adapter { - private List mResults; - private List mImagesList; + private List mResults; + private List mImagesList; private MeiziOnClick mMeiZiOnClick; private Context mContext; @@ -46,7 +46,7 @@ public GankViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { @Override public void onBindViewHolder(GankViewHolder holder, int position) { - ResultsBean bean = mResults.get(position); + Gank bean = mResults.get(position); holder.txtDesc.setText(bean.desc); holder.txtAuthor.setText(bean.who); @@ -82,14 +82,14 @@ public int getItemCount() { return mResults.size(); } - public void refillItems(List getResults) { + public void refillItems(List getResults) { int size = mResults.size(); mResults.clear(); notifyItemRangeRemoved(0, size); appendItems(getResults); } - public void appendItems(List getResults) { + public void appendItems(List getResults) { setImages(); mResults.addAll(getResults); @@ -97,12 +97,12 @@ public void appendItems(List getResults) { } private void setImages() { - List list = MeiziArrayList.getInstance().getOneItemsList(); + List list = MeiziArrayList.getInstance().getOneItemsList(); mImagesList = new ArrayList<>(list); Collections.shuffle(mImagesList); } - public List getResults() { + public List getResults() { return mResults; } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java index bb8260c4..8b32d51d 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java @@ -1,8 +1,9 @@ package com.gank.gankly.ui.discovered.video; +import android.ly.business.domain.Gank; + import com.gank.gankly.mvp.ILoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; -import com.leftcoding.network.domain.ResultsBean; import java.util.List; @@ -12,9 +13,9 @@ public interface VideoContract { interface View extends SupportView { - void refillData(List list); + void refillData(List list); - void appendData(List list); + void appendData(List list); } interface Presenter extends ILoadMorePresenter { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java index 4a5c3a35..6f9bdcc8 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.res.Resources; +import android.ly.business.domain.Gank; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -23,7 +24,6 @@ import com.gank.gankly.utils.StyleUtils; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; -import com.leftcoding.network.domain.ResultsBean; import java.util.List; @@ -70,7 +70,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat mRecyclerView = mSwipeRefreshLayout.getRecyclerView(); mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity)); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { mPresenter.fetchNew(); @@ -119,7 +119,7 @@ protected void callBackRefreshUi() { @Override public void onClick(View view, int position) { Bundle bundle = new Bundle(); - List list = mAdapter.getResults(); + List list = mAdapter.getResults(); bundle.putString(WebVideoViewActivity.TITLE, list.get(position).desc); bundle.putString(WebVideoViewActivity.URL, list.get(position).url); WebVideoViewActivity.startWebActivity(mActivity, bundle); @@ -136,12 +136,12 @@ protected void initLazy() { } @Override - public void refillData(List list) { + public void refillData(List list) { mAdapter.refillItems(list); } @Override - public void appendData(List list) { + public void appendData(List list) { mAdapter.appendItems(list); } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java index 26ccf1e7..7e8dddc8 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java @@ -1,10 +1,11 @@ package com.gank.gankly.ui.discovered.video; +import android.ly.business.domain.Gank; + import com.gank.gankly.bean.GankResult; import com.gank.gankly.config.MeiziArrayList; import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.GankDataSource; -import com.leftcoding.network.domain.ResultsBean; import com.socks.library.KLog; import java.util.List; @@ -52,7 +53,7 @@ public void onSubscribe(Disposable d) { @Override public void onNext(GankResult gankResult) { - List list = filterData(gankResult.getResults(), mModelView); + List list = filterData(gankResult.getResults(), mModelView); if (list != null) { if (page == 1) { mModelView.refillData(list); diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java index bc5cf077..8fa8857d 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java @@ -5,6 +5,7 @@ import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; +import android.ly.business.domain.Gank; import android.net.Uri; import android.os.Bundle; import android.os.Environment; @@ -51,7 +52,6 @@ import com.gank.gankly.widget.WheelView; import com.gank.gankly.widget.transforms.FixedSpeedScroller; import com.gank.gankly.widget.transforms.ZoomOutSlideTransformer; -import com.leftcoding.network.domain.ResultsBean; import com.socks.library.KLog; import java.io.File; @@ -187,7 +187,7 @@ protected void initValues() { private void getGiftList() { mGiftList = new ArrayList<>(); if (EXTRA_GANK.equals(mViewsModel)) { - List giftBeen = MeiziArrayList.getInstance().getImagesList(); + List giftBeen = MeiziArrayList.getInstance().getImagesList(); mGiftList = changeImageList(giftBeen); int size = ListUtils.getSize(giftBeen); if (size > 5) { @@ -262,10 +262,10 @@ protected void bindListener() { mToolbar.setNavigationOnClickListener(v -> onBackPressed()); } - private List changeImageList(List resultsBeen) { + private List changeImageList(List resultsBeen) { List list = new ArrayList<>(); if (!ListUtils.isListEmpty(resultsBeen)) { - ResultsBean resultsBean; + Gank resultsBean; String url; for (int i = 0; i < resultsBeen.size(); i++) { resultsBean = resultsBeen.get(i); @@ -276,7 +276,7 @@ private List changeImageList(List resultsBeen) { return list; } - public void appendData(List list) { + public void appendData(List list) { mGiftList.addAll(changeImageList(list)); mPagerAdapter.notifyDataSetChanged(); } diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java index 674af96d..f2aa7cb8 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java @@ -1,8 +1,9 @@ package com.gank.gankly.ui.gallery; +import android.ly.business.domain.Gank; + import com.gank.gankly.mvp.ILoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; -import com.leftcoding.network.domain.ResultsBean; import java.util.List; @@ -14,7 +15,7 @@ public interface GalleryContract { interface View extends SupportView { - void appendData(List list); + void appendData(List list); void sysNumText(); } diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java index 244b1078..7c950668 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java @@ -1,12 +1,13 @@ package com.gank.gankly.ui.gallery; +import android.ly.business.domain.Gank; + import com.gank.gankly.bean.GankResult; import com.gank.gankly.config.MeiziArrayList; import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.GankDataSource; import com.gank.gankly.utils.CrashUtils; import com.gank.gankly.utils.ListUtils; -import com.leftcoding.network.domain.ResultsBean; import com.socks.library.KLog; import java.util.List; @@ -47,7 +48,7 @@ public void onSubscribe(Disposable d) { @Override public void onNext(GankResult gankResult) { - List list = filterData(gankResult.getResults(), mModelView); + List list = filterData(gankResult.getResults(), mModelView); if (ListUtils.getSize(list) > 0) { mModelView.appendData(list); mModelView.sysNumText(); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java index e2e7d22d..3c777a56 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java @@ -64,7 +64,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)); mSwipeRefreshLayout.setAdapter(mCureAdapter); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { mPresenter.fetchNew(); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java index 6d2fa93c..852b8fef 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java @@ -65,7 +65,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)); mSwipeRefreshLayout.setAdapter(mDailyMeiziAdapter); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { mPresenter.fetchNew(); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java index 3e62d401..1703e7fe 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java @@ -130,7 +130,7 @@ private void initRecycler() { float leftPadding = DisplayUtils.dp2px(8);// because StaggeredGridLayoutManager left margin mRecyclerView.setPadding((int) leftPadding, 0, 0, 0); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java b/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java index 4d3ce8fe..d24457f0 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java @@ -1,6 +1,7 @@ package com.gank.gankly.ui.girls.pure; import android.content.Context; +import android.ly.business.domain.PageConfig; import android.os.Environment; import android.text.TextUtils; import android.util.Log; @@ -10,7 +11,6 @@ import com.gank.gankly.mvp.source.remote.MeiziDataSource; import com.gank.gankly.utils.CrashUtils; import com.gank.gankly.utils.StringUtils; -import com.leftcoding.network.domain.PageConfig; import com.socks.library.KLog; import org.jsoup.nodes.Document; @@ -52,10 +52,10 @@ public class PurePresenter extends PureContract.Presenter { PurePresenter(Context context, PureContract.View view) { super(context, view); mPageConfig = new PageConfig(); - mPageConfig.mLimit = 24; + mPageConfig.limit = 24; urlIndex = 0; for (int i = 11; i < 43; i++) { - remoteUrl.add(mContext.getString(R.string.url_format, URL, i)); + remoteUrl.add(this.context.getString(R.string.url_format, URL, i)); } } @@ -71,7 +71,7 @@ public void appendPure() { private void fetchData(int index) { MeiziDataSource.getInstance().fetchPure(remoteUrl.get(index)) - .doFinally(() -> mView.hideProgress()) + .doFinally(() -> view.hideProgress()) .subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java index 234b5831..66dc3116 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java @@ -87,7 +87,7 @@ public void onClick(int pos) { mSwipeRefreshLayout.setAdapter(mAdapter); mAdapter.setOnItemClick(this); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { mPresenter.fetchNew(); diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java index 33d2d94f..a91a6054 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java @@ -4,6 +4,7 @@ import android.lectcoding.ui.adapter.BaseAdapter; import android.lectcoding.ui.adapter.BasicItem; import android.lectcoding.ui.adapter.Item; +import android.ly.business.domain.Gank; import android.support.v7.widget.RecyclerView; import android.view.ViewGroup; import android.widget.TextView; @@ -13,7 +14,6 @@ import com.gank.gankly.butterknife.ButterKnifeHolder; import com.gank.gankly.listener.ItemCallBack; import com.gank.gankly.utils.DateUtils; -import com.leftcoding.network.domain.ResultsBean; import java.util.ArrayList; import java.util.Date; @@ -25,7 +25,7 @@ * Create by LingYan on 2016-04-25 */ class IosAdapter extends BaseAdapter { - private final List resultsBeans = new ArrayList<>(); + private final List resultsBeans = new ArrayList<>(); private final List itemList = new ArrayList<>(); private Context context; @@ -45,7 +45,7 @@ public void onChanged() { super.onChanged(); itemList.clear(); if (!resultsBeans.isEmpty()) { - for (ResultsBean resultsBean : resultsBeans) { + for (Gank resultsBean : resultsBeans) { itemList.add(new TextItem(resultsBean)); } } @@ -92,12 +92,12 @@ public int getItemCount() { return resultsBeans.size(); } - void fillItems(List results) { + void fillItems(List results) { resultsBeans.clear(); appendItems(results); } - public void appendItems(List results) { + public void appendItems(List results) { resultsBeans.addAll(results); this.notifyDataSetChanged(); } @@ -136,7 +136,7 @@ static class TextHolder extends ButterKnifeHolder { @Override public void bindItem(TextItem item) { - final ResultsBean resultsBean = item.getResultsBean(); + final Gank resultsBean = item.getResultsBean(); time.setText(item.getTime()); title.setText(resultsBean.desc); @@ -151,13 +151,13 @@ public void bindItem(TextItem item) { } class TextItem extends BasicItem { - private ResultsBean resultsBean; + private Gank resultsBean; - TextItem(ResultsBean resultsBean) { + TextItem(Gank resultsBean) { this.resultsBean = resultsBean; } - ResultsBean getResultsBean() { + Gank getResultsBean() { return resultsBean; } diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java b/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java index 95964d29..646bd233 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java @@ -1,11 +1,11 @@ package com.gank.gankly.ui.ios; import android.content.Context; +import android.ly.business.domain.Gank; import android.support.annotation.NonNull; import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; -import com.leftcoding.network.domain.ResultsBean; import java.util.List; @@ -16,11 +16,11 @@ public interface IosContract { interface View extends SupportView { - void refreshIosSuccess(List list); + void refreshIosSuccess(List list); void refreshIosFailure(String msg); - void appendIosSuccess(List list); + void appendIosSuccess(List list); void appendIosFailure(String msg); } diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java index 9a026aef..9537db54 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java @@ -1,6 +1,7 @@ package com.gank.gankly.ui.ios; import android.content.Context; +import android.ly.business.domain.Gank; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -16,7 +17,6 @@ import com.gank.gankly.ui.web.normal.WebActivity; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; -import com.leftcoding.network.domain.ResultsBean; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -56,7 +56,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat swipeRefresh.setAdapter(iosAdapter); swipeRefresh.setLayoutManager(new LinearLayoutManager(getBaseContext())); - swipeRefresh.setOnScrollListener(onSwipeRefRecyclerViewListener); + swipeRefresh.setOnScrollListener(onSwipeRefreshListener); RecyclerView recyclerView = swipeRefresh.getRecyclerView(); recyclerView.setHasFixedSize(true); @@ -76,7 +76,7 @@ protected void initLazy() { refreshIos(); } - private LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener onSwipeRefRecyclerViewListener = new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + private LySwipeRefreshLayout.OnSwipeRefreshListener onSwipeRefreshListener = new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { refreshIos(); @@ -89,8 +89,8 @@ public void onLoadMore() { }; private final ItemCallBack mItemCallBack = (view, position, object) -> { - if (object instanceof ResultsBean) { - ResultsBean bean = (ResultsBean) object; + if (object instanceof Gank) { + Gank bean = (Gank) object; Bundle bundle = new Bundle(); bundle.putString(WebActivity.TITLE, bean.desc); bundle.putString(WebActivity.URL, bean.url); @@ -158,7 +158,7 @@ public void showDisNetWork() { } @Override - public void refreshIosSuccess(List list) { + public void refreshIosSuccess(List list) { if (iosAdapter != null) { iosAdapter.fillItems(list); } @@ -177,7 +177,7 @@ private void showSnackBar(String msg) { } @Override - public void appendIosSuccess(List list) { + public void appendIosSuccess(List list) { if (iosAdapter != null) { iosAdapter.appendItems(list); } diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java index 6fee1831..baeea574 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java @@ -1,23 +1,15 @@ package com.gank.gankly.ui.ios; import android.content.Context; +import android.ly.business.domain.Gank; +import android.ly.business.domain.PageConfig; +import android.ly.business.domain.PageEntity; import android.support.annotation.NonNull; -import com.leftcoding.network.api.GankServerManager; -import com.leftcoding.network.domain.PageConfig; -import com.leftcoding.network.domain.PageResult; -import com.leftcoding.network.domain.ResultsBean; -import com.leftcoding.rxbus.RxManager; -import com.socks.library.KLog; +import com.leftcoding.rxbus.RxApiManager; import java.util.concurrent.atomic.AtomicBoolean; -import io.reactivex.Observable; -import io.reactivex.ObservableSource; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.Function; -import retrofit2.Response; /** * Create by LingYan on 2016-12-20 @@ -27,7 +19,7 @@ public class IosPresenter extends IosContract.Presenter { private static final String TAG = "ios_presenter"; private static final int INIT_PAGE = 1; - private PageResult mPageResult; + private PageEntity mPageResult; private AtomicBoolean first = new AtomicBoolean(true); private PageConfig mPageConfig; @@ -50,95 +42,95 @@ void appendIos() { } private void fetchData(final int page) { - mPageConfig.mCurPage = page; - - GankServerManager.with(mContext) - .ios(page, mPageConfig.mLimit) - .doOnSubscribe(disposable -> { - if (isActivityLife()) { - mView.showProgress(); - } - }) - .doFinally(() -> { - if (isActivityLife()) { - mView.hideProgress(); - } - }) - .flatMap(new Function>, ObservableSource>>() { - @Override - public ObservableSource> apply(@io.reactivex.annotations.NonNull Response> response) throws Exception { - if (response != null) { - if (response.isSuccessful()) { - if (response.body() != null) { - return Observable.create(e -> e.onNext(response.body())); - } - } - } - return Observable.error(new Throwable()); - } - }) - .map(new Function, PageResult>() { - @Override - public PageResult apply(@io.reactivex.annotations.NonNull PageResult result) throws Exception { - if (result != null) { - return result; - } - return null; - } - }) - .flatMap(new Function, ObservableSource>>() { - @Override - public ObservableSource> apply(@io.reactivex.annotations.NonNull PageResult result) throws Exception { - if (result != null && result.results != null) { - return Observable.create(e -> e.onNext(result)); - } - return Observable.error(new Throwable()); - } - }) - .subscribe(new Observer>() { - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onNext(PageResult result) { - mPageResult = result; - mPageResult.nextPage = getNextPage(); - - if (isActivityLife()) { - if (isFirst()) { - mView.refreshIosSuccess(result.results); - } else { - mView.appendIosSuccess(result.results); - } - } - } - - @Override - public void onError(Throwable e) { - KLog.e(e); - } - - @Override - public void onComplete() { - - } - }); +// mPageConfig.mCurPage = page; + +// GankServerManager.with(context) +// .ios(page, mPageConfig.mLimit) +// .doOnSubscribe(disposable -> { +// if (isViewLife()) { +// view.showProgress(); +// } +// }) +// .doFinally(() -> { +// if (isViewLife()) { +// view.hideProgress(); +// } +// }) +// .flatMap(new Function>, ObservableSource>>() { +// @Override +// public ObservableSource> apply(@io.reactivex.annotations.NonNull Response> response) throws Exception { +// if (response != null) { +// if (response.isSuccessful()) { +// if (response.body() != null) { +// return Observable.create(e -> e.onNext(response.body())); +// } +// } +// } +// return Observable.error(new Throwable()); +// } +// }) +// .map(new Function, PageResult>() { +// @Override +// public PageResult apply(@io.reactivex.annotations.NonNull PageResult result) throws Exception { +// if (result != null) { +// return result; +// } +// return null; +// } +// }) +// .flatMap(new Function, ObservableSource>>() { +// @Override +// public ObservableSource> apply(@io.reactivex.annotations.NonNull PageResult result) throws Exception { +// if (result != null && result.results != null) { +// return Observable.create(e -> e.onNext(result)); +// } +// return Observable.error(new Throwable()); +// } +// }) +// .subscribe(new Observer>() { +// @Override +// public void onSubscribe(Disposable d) { +// +// } +// +// @Override +// public void onNext(PageResult result) { +// mPageResult = result; +// mPageResult.nextPage = getNextPage(); +// +// if (isViewLife()) { +// if (isFirst()) { +// view.refreshIosSuccess(result.results); +// } else { +// view.appendIosSuccess(result.results); +// } +// } +// } +// +// @Override +// public void onError(Throwable e) { +// KLog.e(e); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); } @Override public void unSubscribe() { super.unSubscribe(); mPageResult = null; - RxManager.get().clear(TAG); + RxApiManager.get().clear(TAG); } private boolean isFirst() { return first.get(); } - private int getNextPage() { - return mPageConfig.mCurPage + 1; - } +// private int getNextPage() { +// return mPageConfig.mCurPage + 1; +// } } diff --git a/app/src/main/java/com/gank/gankly/ui/main/LauncherPresenter.java b/app/src/main/java/com/gank/gankly/ui/main/LauncherPresenter.java index 3671d73f..4939c6eb 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/LauncherPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/main/LauncherPresenter.java @@ -44,18 +44,18 @@ public LauncherPresenter(Activity activity, ILauncher view, DownloadProgressList } public void checkVersion() { - mView.showDialog(); + view.showDialog(); mDownloadApi.checkVersion(new Observer() { @Override public void onError(Throwable e) { KLog.e(e); CrashUtils.crashReport(e); - mView.hiddenDialog(); + view.hiddenDialog(); } @Override public void onComplete() { - mView.hiddenDialog(); + view.hiddenDialog(); } @Override @@ -67,7 +67,7 @@ public void onSubscribe(Disposable d) { public void onNext(CheckVersion checkVersion) { int curVersion = BuildConfig.VERSION_CODE; if (checkVersion.getCode() > curVersion) { - mView.callUpdate(checkVersion); + view.callUpdate(checkVersion); } } }); diff --git a/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java b/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java index 2e8ceaf1..5e2925d2 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java @@ -46,7 +46,6 @@ /** * 普通webView * Create by LingYan on 2016-5-10 - * Email:137387869@qq.com */ public class WebActivity extends BaseActivity implements WebContract.View { public static final int FROM_MAIN = 0; @@ -470,6 +469,9 @@ protected void onStop() { protected void onDestroy() { if (mWebView != null) { mWebView.destroy(); + mWebView.clearFormData(); + mWebView.clearHistory(); + mWebView = null; } super.onDestroy(); // All you have to do is destroy() the WebView before Activity finishes } diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java index f3515516..f9115c62 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java @@ -3,6 +3,7 @@ import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; +import android.ly.business.domain.Gank; import android.support.annotation.Nullable; import android.support.v7.widget.RecyclerView; import android.util.ArrayMap; @@ -28,7 +29,6 @@ import com.gank.gankly.utils.AppUtils; import com.gank.gankly.utils.gilde.ImageLoaderUtil; import com.gank.gankly.widget.ImageDefaultView; -import com.leftcoding.network.domain.ResultsBean; import com.socks.library.KLog; import java.util.ArrayList; @@ -39,10 +39,9 @@ /** * Create by LingYan on 2016-04-06 - * Email:137387869@qq.com */ public class WelfareAdapter extends RecyclerView.Adapter { - private List mResults; + private List mResults; private Activity mActivity; private LayoutInflater inflater; private int mScreenWidth = AppUtils.getDisplayWidth() / 2; @@ -72,7 +71,7 @@ public GoodsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { @Override public void onBindViewHolder(final GoodsViewHolder holder, int position) { - final ResultsBean bean = mResults.get(position); + final Gank bean = mResults.get(position); final String url = bean.url; RequestBuilder requestBuilder = ImageLoaderUtil.getInstance() .glideAsBitmap(mContext, url); @@ -209,7 +208,7 @@ public int getItemCount() { return mResults.size(); } - public void refillItems(List goods) { + public void refillItems(List goods) { clear(); appendItems(goods); } @@ -221,7 +220,7 @@ public void clear() { notifyItemRangeRemoved(0, size); } - public void appendItems(List goods) { + public void appendItems(List goods) { mResults.addAll(goods); notifyItemRangeInserted(mResults.size(), goods.size()); } diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java index d47dbb4a..041ce266 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java @@ -1,8 +1,9 @@ package com.gank.gankly.ui.welfare; +import android.ly.business.domain.Gank; + import com.gank.gankly.mvp.ILoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; -import com.leftcoding.network.domain.ResultsBean; import java.util.List; @@ -13,9 +14,9 @@ public class WelfareContract { interface View extends SupportView { - void refreshData(List list); + void refreshData(List list); - void appendData(List list); + void appendData(List list); void refershDataFailure(String msg); diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java index 92b719b0..a7069a1c 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.ly.business.domain.Gank; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -23,7 +24,6 @@ import com.gank.gankly.utils.theme.ThemeColor; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; -import com.leftcoding.network.domain.ResultsBean; import java.util.List; @@ -66,7 +66,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat ((SimpleItemAnimator) mRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false); mSwipeRefreshLayout.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefRecyclerViewListener() { + mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { mSwipeRefreshLayout.setRefreshing(true); @@ -172,12 +172,12 @@ protected void callBackRefreshUi() { } @Override - public void refreshData(List list) { + public void refreshData(List list) { mWelfareAdapter.refillItems(list); } @Override - public void appendData(List list) { + public void appendData(List list) { mWelfareAdapter.appendItems(list); } diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java index 45ff55b3..1bfe7a0e 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java @@ -1,10 +1,11 @@ package com.gank.gankly.ui.welfare; +import android.ly.business.domain.Gank; + import com.gank.gankly.bean.GankResult; import com.gank.gankly.config.MeiziArrayList; import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.GankDataSource; -import com.leftcoding.network.domain.ResultsBean; import com.socks.library.KLog; import java.util.List; @@ -40,7 +41,7 @@ public void onSubscribe(Disposable d) { @Override public void onNext(GankResult gankResult) { - List list = filterData(gankResult.getResults(), mModelView); + List list = filterData(gankResult.getResults(), mModelView); if (list != null) { if (page == 1) { mModelView.refreshData(list); diff --git a/app/src/main/java/com/gank/gankly/widget/LySwipeRefreshLayout.java b/app/src/main/java/com/gank/gankly/widget/LySwipeRefreshLayout.java index 8333294a..466569c5 100644 --- a/app/src/main/java/com/gank/gankly/widget/LySwipeRefreshLayout.java +++ b/app/src/main/java/com/gank/gankly/widget/LySwipeRefreshLayout.java @@ -27,7 +27,7 @@ public class LySwipeRefreshLayout extends SwipeRefreshLayout { private RecyclerView.LayoutManager layoutManager; private RecyclerView mRecyclerView; - private OnSwipeRefRecyclerViewListener mOnSwipeRefRecyclerViewListener; + private OnSwipeRefreshListener mOnSwipeRefreshListener; private Context mContext; private int mCurManager = 1; private int mState; @@ -67,7 +67,7 @@ private void init() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); - if (newState == RecyclerView.SCROLL_STATE_IDLE && mOnSwipeRefRecyclerViewListener != null + if (newState == RecyclerView.SCROLL_STATE_IDLE && mOnSwipeRefreshListener != null && !isRefreshing()) { int count = recyclerView.getAdapter().getItemCount() - 1; switch (mCurManager) { @@ -107,7 +107,7 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) { } public void loadMore() { - mOnSwipeRefRecyclerViewListener.onLoadMore(); + mOnSwipeRefreshListener.onLoadMore(); } public void setLayoutManager(RecyclerView.LayoutManager layoutManager) { @@ -122,8 +122,8 @@ public void setLayoutManager(RecyclerView.LayoutManager layoutManager) { mRecyclerView.setLayoutManager(layoutManager); } - public void setOnScrollListener(OnSwipeRefRecyclerViewListener listener) { - this.mOnSwipeRefRecyclerViewListener = listener; + public void setOnScrollListener(OnSwipeRefreshListener listener) { + this.mOnSwipeRefreshListener = listener; super.setOnRefreshListener(listener); } @@ -154,7 +154,7 @@ public int getPosition() { /** * 刷新和加载更多的监听 */ - public interface OnSwipeRefRecyclerViewListener extends OnRefreshListener { + public interface OnSwipeRefreshListener extends OnRefreshListener { void onRefresh(); void onLoadMore(); diff --git a/javalib/src/main/java/com/example/javalib/A.java b/javalib/src/main/java/com/example/javalib/A.java index 1a8838cc..3357a961 100644 --- a/javalib/src/main/java/com/example/javalib/A.java +++ b/javalib/src/main/java/com/example/javalib/A.java @@ -1,5 +1,7 @@ package com.example.javalib; +import java.util.UUID; + /** * Create by LingYan on 2017-10-17 */ @@ -64,8 +66,11 @@ public void change(String s) { } public static void main(String[] args) { - B b = new A().new E(); - A.getA().getB().change("333"); +// B b = new A().new E(); +// A.getA().getB().change("333"); + for (int i = 0; i < 1000; i++) { + System.out.println("xxx:" + UUID.randomUUID().toString()); + } } } diff --git a/support-ly-business/src/main/java/android/ly/business/api/GankApi.java b/support-ly-business/src/main/java/android/ly/business/api/GankApi.java index 64dcbfc3..f543faa1 100644 --- a/support-ly-business/src/main/java/android/ly/business/api/GankApi.java +++ b/support-ly-business/src/main/java/android/ly/business/api/GankApi.java @@ -1,8 +1,8 @@ package android.ly.business.api; -import android.ly.business.domain.ListResult; +import android.ly.business.domain.ListEntity; import android.ly.business.domain.PageEntity; -import android.ly.business.domain.Entity; +import android.ly.business.domain.Gank; import io.reactivex.Observable; import retrofit2.Response; @@ -16,32 +16,32 @@ public interface GankApi { @GET("Android/{limit}/{page}") - Observable>> androids( + Observable>> androids( @Path("page") int page, @Path("limit") int limit ); @GET("iOS/{limit}/{page}") - Observable>> ios( + Observable>> ios( @Path("page") int page, @Path("limit") int limit ); @GET("all/{limit}/{page}") - Observable>> allGoods( + Observable>> allGoods( @Path("page") int page, @Path("limit") int limit ); @GET("福利/{limit}/{page}") - Observable>> images( + Observable>> images( @Path("page") int page, @Path("limit") int limit ); @GET("休息视频/{limit}/{page}") - Observable>> videos( + Observable>> videos( @Path("page") int page, @Path("limit") int limit ); diff --git a/support-ly-business/src/main/java/android/ly/business/api/GankServer.java b/support-ly-business/src/main/java/android/ly/business/api/GankServer.java index fbc93723..00bb4db1 100644 --- a/support-ly-business/src/main/java/android/ly/business/api/GankServer.java +++ b/support-ly-business/src/main/java/android/ly/business/api/GankServer.java @@ -1,17 +1,13 @@ package android.ly.business.api; import android.content.Context; -import android.ly.business.domain.Entity; -import android.ly.business.domain.ListResult; +import android.ly.business.domain.Gank; +import android.ly.business.domain.ListEntity; import android.ly.business.domain.PageEntity; -import com.leftcoding.network.rxjava.RxApiManager; -import com.leftcoding.network.rxjava.RxConsumer; - import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.Consumer; +import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; import retrofit2.Response; @@ -42,58 +38,36 @@ public static GankServer get(Context context) { return gankServer; } - public void androids(final String requestTag, final int page, final int limit, final RxConsumer> consumer) { - convert(gankApi.androids(page, limit), requestTag, consumer); + public Observable> androids(final int page, final int limit) { + return gankApi.androids(page, limit) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .map(new Function>, PageEntity>() { + @Override + public PageEntity apply(Response> pageEntityResponse) throws Exception { + if (pageEntityResponse == null) { + return null; + } + return pageEntityResponse.body(); + } + }); } - public Observable>> ios(int page, int limit) { + public Observable>> ios(int page, int limit) { return gankApi.ios(page, limit) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } - public Observable>> allGoods(int limit, int page) { + public Observable>> allGoods(int limit, int page) { return gankApi.allGoods(limit, page); } - public Observable>> images(int limit, int page) { + public Observable>> images(int limit, int page) { return gankApi.images(limit, page); } - public Observable>> videos(int limit, int page) { + public Observable>> videos(int limit, int page) { return gankApi.videos(limit, page); } - - private void convert(Observable> observable, String tag, final RxConsumer consumer) { - Disposable disposable = observable.subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Consumer>() { - @Override - public void accept(Response response) throws Exception { - if (consumer != null) { - if (response == null) { - consumer.onError(new Throwable("response is null")); - } else { - if (response.isSuccessful()) { - consumer.next(response.body()); - } else { - consumer.onError(new Throwable(response.toString())); - } - } - } - } - }, new Consumer() { - @Override - public void accept(Throwable throwable) throws Exception { - if (consumer != null) { - consumer.onError(throwable); - } - } - }); - addRxManager(tag, disposable); - } - - private void addRxManager(String tag, Disposable disposable) { - RxApiManager.get().add(tag, disposable); - } } diff --git a/support-ly-business/src/main/java/android/ly/business/domain/BaseEntity.java b/support-ly-business/src/main/java/android/ly/business/domain/BaseEntity.java new file mode 100644 index 00000000..1b12e8ed --- /dev/null +++ b/support-ly-business/src/main/java/android/ly/business/domain/BaseEntity.java @@ -0,0 +1,13 @@ +package android.ly.business.domain; + +public class BaseEntity { + /** + * 错误码 + */ + public boolean error; + + /** + * 提示语 + */ + public String msg; +} \ No newline at end of file diff --git a/support-ly-business/src/main/java/android/ly/business/domain/BaseResult.java b/support-ly-business/src/main/java/android/ly/business/domain/BaseResult.java deleted file mode 100644 index 47ccc19b..00000000 --- a/support-ly-business/src/main/java/android/ly/business/domain/BaseResult.java +++ /dev/null @@ -1,5 +0,0 @@ -package android.ly.business.domain; - -public class BaseResult { - public boolean error; -} \ No newline at end of file diff --git a/support-ly-business/src/main/java/android/ly/business/domain/Entity.java b/support-ly-business/src/main/java/android/ly/business/domain/Gank.java similarity index 83% rename from support-ly-business/src/main/java/android/ly/business/domain/Entity.java rename to support-ly-business/src/main/java/android/ly/business/domain/Gank.java index 8ed624b3..4537cfe9 100644 --- a/support-ly-business/src/main/java/android/ly/business/domain/Entity.java +++ b/support-ly-business/src/main/java/android/ly/business/domain/Gank.java @@ -8,7 +8,7 @@ import java.util.List; -public class Entity implements Parcelable { +public class Gank implements Parcelable { @SerializedName("_id") public String id; public String createdAt; @@ -22,7 +22,7 @@ public class Entity implements Parcelable { public boolean isLoaded; public List images; - public Entity() { + public Gank() { } @Override @@ -45,7 +45,7 @@ public void writeToParcel(Parcel dest, int flags) { dest.writeStringList(this.images); } - protected Entity(Parcel in) { + protected Gank(Parcel in) { this.id = in.readString(); this.createdAt = in.readString(); this.desc = in.readString(); @@ -59,15 +59,15 @@ protected Entity(Parcel in) { this.images = in.createStringArrayList(); } - public static final Creator CREATOR = new Creator() { + public static final Creator CREATOR = new Creator() { @Override - public Entity createFromParcel(Parcel source) { - return new Entity(source); + public Gank createFromParcel(Parcel source) { + return new Gank(source); } @Override - public Entity[] newArray(int size) { - return new Entity[size]; + public Gank[] newArray(int size) { + return new Gank[size]; } }; diff --git a/support-ly-business/src/main/java/android/ly/business/domain/ListResult.java b/support-ly-business/src/main/java/android/ly/business/domain/ListEntity.java similarity index 73% rename from support-ly-business/src/main/java/android/ly/business/domain/ListResult.java rename to support-ly-business/src/main/java/android/ly/business/domain/ListEntity.java index fa21ff4b..2ea9118a 100644 --- a/support-ly-business/src/main/java/android/ly/business/domain/ListResult.java +++ b/support-ly-business/src/main/java/android/ly/business/domain/ListEntity.java @@ -6,6 +6,6 @@ * Create by LingYan on 2017-09-30 */ -public class ListResult extends BaseResult { +public class ListEntity extends BaseEntity { public List results; } diff --git a/support-ly-business/src/main/java/android/ly/business/domain/PageConfig.java b/support-ly-business/src/main/java/android/ly/business/domain/PageConfig.java index 2f84368b..db107284 100644 --- a/support-ly-business/src/main/java/android/ly/business/domain/PageConfig.java +++ b/support-ly-business/src/main/java/android/ly/business/domain/PageConfig.java @@ -8,29 +8,25 @@ public class PageConfig { /** * 分页个数 默认20 */ - public int mLimit = 20; + public int limit = 20; /** * 初始化请求页数 */ - public int mInitPage = 1; + public int initPage = 1; /** * 当前请求页数 */ - public int mCurPage = 1; + public int curPage = 1; public PageConfig() { } public PageConfig(int limit, int initPage, int curPage) { - mLimit = limit; - mInitPage = initPage; - mCurPage = curPage; - } - - public boolean isFirstRequest() { - return mCurPage == mInitPage; + this.limit = limit; + this.initPage = initPage; + this.curPage = curPage; } } diff --git a/support-ly-business/src/main/java/android/ly/business/domain/PageEntity.java b/support-ly-business/src/main/java/android/ly/business/domain/PageEntity.java index 50f65552..c86a2217 100644 --- a/support-ly-business/src/main/java/android/ly/business/domain/PageEntity.java +++ b/support-ly-business/src/main/java/android/ly/business/domain/PageEntity.java @@ -4,7 +4,7 @@ * Create by LingYan on 2017-10-12 */ -public class PageEntity extends ListResult { +public class PageEntity extends ListEntity { public int nextPage; public boolean hasNoMore(int limit) { diff --git a/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxActionManager.java b/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxActionManager.java similarity index 85% rename from support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxActionManager.java rename to support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxActionManager.java index 2184bce6..f7950ea4 100644 --- a/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxActionManager.java +++ b/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxActionManager.java @@ -1,4 +1,4 @@ -package com.leftcoding.network.rxjava; +package com.leftcoding.rxbus; import io.reactivex.disposables.Disposable; diff --git a/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxApiManager.java b/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxApiManager.java similarity index 97% rename from support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxApiManager.java rename to support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxApiManager.java index 1865356e..b178af45 100644 --- a/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxApiManager.java +++ b/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxApiManager.java @@ -1,4 +1,4 @@ -package com.leftcoding.network.rxjava; +package com.leftcoding.rxbus; import android.util.ArrayMap; diff --git a/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxConsumer.java b/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxConsumer.java similarity index 80% rename from support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxConsumer.java rename to support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxConsumer.java index a33b1b84..1737fa33 100644 --- a/support-ly-network/src/main/java/com/leftcoding/network/rxjava/RxConsumer.java +++ b/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxConsumer.java @@ -1,4 +1,4 @@ -package com.leftcoding.network.rxjava; +package com.leftcoding.rxbus; /** * Create by LingYan on 2018-03-20 diff --git a/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxManager.java b/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxManager.java deleted file mode 100644 index 45f12d8f..00000000 --- a/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxManager.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.leftcoding.rxbus; - -import java.util.HashMap; - -import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.disposables.Disposable; - -/** - * Create by LingYan on 2017-10-14 - */ - -public class RxManager { - private final HashMap mDisposableHashMap = new HashMap<>(); - - private RxManager() { - - } - - public static RxManager get() { - return RxMangerHolder.INSTANCE; - } - - private static final class RxMangerHolder { - private static final RxManager INSTANCE = new RxManager(); - } - - public synchronized void add(String key, Disposable disposable) { - CompositeDisposable compositeDisposable; - if (mDisposableHashMap.containsKey(key)) { - compositeDisposable = mDisposableHashMap.get(key); - compositeDisposable.add(disposable); - } else { - compositeDisposable = new CompositeDisposable(); - compositeDisposable.add(disposable); - mDisposableHashMap.put(key, compositeDisposable); - } - } - - public synchronized void clear(String key) { - if (mDisposableHashMap.containsKey(key)) { - CompositeDisposable disposable = mDisposableHashMap.get(key); - if (!disposable.isDisposed()) { - disposable.dispose(); - } - mDisposableHashMap.remove(key); - } - } -} diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/M.java b/support-ly-ui/src/main/java/android/lectcoding/ui/M.java deleted file mode 100644 index c03bcbb4..00000000 --- a/support-ly-ui/src/main/java/android/lectcoding/ui/M.java +++ /dev/null @@ -1,8 +0,0 @@ -package android.lectcoding.ui; - -/** - * Create by LingYan on 2017-11-27 - */ - -public class M { -} diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/Logcat.java b/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/Logcat.java new file mode 100644 index 00000000..8ac7df0e --- /dev/null +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/Logcat.java @@ -0,0 +1,327 @@ +package android.lectcoding.ui.logcat; + + +import android.lectcoding.ui.logcat.base.BaseLog; +import android.lectcoding.ui.logcat.base.FileLog; +import android.lectcoding.ui.logcat.base.JsonLog; +import android.lectcoding.ui.logcat.base.XmlLog; +import android.support.annotation.Nullable; +import android.text.TextUtils; + +import java.io.File; +import java.io.PrintWriter; +import java.io.StringWriter; + +/** + * This is a Log tool,with this you can the following + *
    + *
  1. use KLog.d(),you could print whether the method execute,and the default tag is current class's name
  2. + *
  3. use KLog.d(msg),you could print log as before,and you could location the method with a click in Android Studio Logcat
  4. + *
  5. use KLog.json(),you could print json string with well format automatic
  6. + *
+ * + * @author zhaokaiqiang + * github https://github.com/ZhaoKaiQiang/KLog + * 15/11/17 扩展功能,添加对文件的支持 + * 15/11/18 扩展功能,增加对XML的支持,修复BUG + * 15/12/8 扩展功能,添加对任意参数的支持 + * 15/12/11 扩展功能,增加对无限长字符串支持 + * 16/6/13 扩展功能,添加对自定义全局Tag的支持,修复内部类不能点击跳转的BUG + * 16/6/15 扩展功能,添加不能关闭的KLog.debug(),用于发布版本的Log打印,优化部分代码 + * 16/6/20 扩展功能,添加堆栈跟踪功能KLog.trace() + */ +public final class Logcat { + + public static final String LINE_SEPARATOR = System.getProperty("line.separator"); + public static final String NULL_TIPS = "Log with null object"; + + private static final String DEFAULT_MESSAGE = "execute"; + private static final String PARAM = "Param"; + private static final String NULL = "null"; + private static final String TAG_DEFAULT = "KLog"; + private static final String SUFFIX = ".java"; + + public static final int JSON_INDENT = 4; + + public static final int V = 0x1; + public static final int D = 0x2; + public static final int I = 0x3; + public static final int W = 0x4; + public static final int E = 0x5; + public static final int A = 0x6; + + private static final int JSON = 0x7; + private static final int XML = 0x8; + + private static final int STACK_TRACE_INDEX_5 = 5; + private static final int STACK_TRACE_INDEX_4 = 4; + + private static String mGlobalTag; + private static boolean mIsGlobalTagEmpty = true; + private static boolean IS_SHOW_LOG = true; + + public static void init(boolean isShowLog) { + IS_SHOW_LOG = isShowLog; + } + + public static void init(boolean isShowLog, @Nullable String tag) { + IS_SHOW_LOG = isShowLog; + mGlobalTag = tag; + mIsGlobalTagEmpty = TextUtils.isEmpty(mGlobalTag); + } + + public static void v() { + printLog(V, null, DEFAULT_MESSAGE); + } + + public static void v(Object msg) { + printLog(V, null, msg); + } + + public static void v(String tag, Object... objects) { + printLog(V, tag, objects); + } + + public static void d() { + printLog(D, null, DEFAULT_MESSAGE); + } + + public static void d(Object msg) { + printLog(D, null, msg); + } + + public static void d(String tag, Object... objects) { + printLog(D, tag, objects); + } + + public static void i() { + printLog(I, null, DEFAULT_MESSAGE); + } + + public static void i(Object msg) { + printLog(I, null, msg); + } + + public static void i(String tag, Object... objects) { + printLog(I, tag, objects); + } + + public static void w() { + printLog(W, null, DEFAULT_MESSAGE); + } + + public static void w(Object msg) { + printLog(W, null, msg); + } + + public static void w(String tag, Object... objects) { + printLog(W, tag, objects); + } + + public static void e() { + printLog(E, null, DEFAULT_MESSAGE); + } + + public static void e(Object msg) { + printLog(E, null, msg); + } + + public static void e(String tag, Object... objects) { + printLog(E, tag, objects); + } + + public static void a() { + printLog(A, null, DEFAULT_MESSAGE); + } + + public static void a(Object msg) { + printLog(A, null, msg); + } + + public static void a(String tag, Object... objects) { + printLog(A, tag, objects); + } + + public static void json(String jsonFormat) { + printLog(JSON, null, jsonFormat); + } + + public static void json(String tag, String jsonFormat) { + printLog(JSON, tag, jsonFormat); + } + + public static void xml(String xml) { + printLog(XML, null, xml); + } + + public static void xml(String tag, String xml) { + printLog(XML, tag, xml); + } + + public static void file(File targetDirectory, Object msg) { + printFile(null, targetDirectory, null, msg); + } + + public static void file(String tag, File targetDirectory, Object msg) { + printFile(tag, targetDirectory, null, msg); + } + + public static void file(String tag, File targetDirectory, String fileName, Object msg) { + printFile(tag, targetDirectory, fileName, msg); + } + + public static void debug() { + printDebug(null, DEFAULT_MESSAGE); + } + + public static void debug(Object msg) { + printDebug(null, msg); + } + + public static void debug(String tag, Object... objects) { + printDebug(tag, objects); + } + + public static void trace() { + printStackTrace(); + } + + private static void printStackTrace() { + + if (!IS_SHOW_LOG) { + return; + } + + Throwable tr = new Throwable(); + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + tr.printStackTrace(pw); + pw.flush(); + String message = sw.toString(); + + String traceString[] = message.split("\\n\\t"); + StringBuilder sb = new StringBuilder(); + sb.append("\n"); + for (String trace : traceString) { + if (trace.contains("at com.socks.library.KLog")) { + continue; + } + sb.append(trace).append("\n"); + } + String[] contents = wrapperContent(STACK_TRACE_INDEX_4, null, sb.toString()); + String tag = contents[0]; + String msg = contents[1]; + String headString = contents[2]; + BaseLog.printDefault(D, tag, headString + msg); + } + + private static void printLog(int type, String tagStr, Object... objects) { + + if (!IS_SHOW_LOG) { + return; + } + + String[] contents = wrapperContent(STACK_TRACE_INDEX_5, tagStr, objects); + String tag = contents[0]; + String msg = contents[1]; + String headString = contents[2]; + + switch (type) { + case V: + case D: + case I: + case W: + case E: + case A: + BaseLog.printDefault(type, tag, headString + msg); + break; + case JSON: + JsonLog.printJson(tag, msg, headString); + break; + case XML: + XmlLog.printXml(tag, msg, headString); + break; + } + + } + + private static void printDebug(String tagStr, Object... objects) { + String[] contents = wrapperContent(STACK_TRACE_INDEX_5, tagStr, objects); + String tag = contents[0]; + String msg = contents[1]; + String headString = contents[2]; + BaseLog.printDefault(D, tag, headString + msg); + } + + + private static void printFile(String tagStr, File targetDirectory, String fileName, Object objectMsg) { + + if (!IS_SHOW_LOG) { + return; + } + + String[] contents = wrapperContent(STACK_TRACE_INDEX_5, tagStr, objectMsg); + String tag = contents[0]; + String msg = contents[1]; + String headString = contents[2]; + + FileLog.printFile(tag, targetDirectory, fileName, headString, msg); + } + + private static String[] wrapperContent(int stackTraceIndex, String tagStr, Object... objects) { + + StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); + + StackTraceElement targetElement = stackTrace[stackTraceIndex]; + String className = targetElement.getClassName(); + String[] classNameInfo = className.split("\\."); + if (classNameInfo.length > 0) { + className = classNameInfo[classNameInfo.length - 1] + SUFFIX; + } + + if (className.contains("$")) { + className = className.split("\\$")[0] + SUFFIX; + } + + String methodName = targetElement.getMethodName(); + int lineNumber = targetElement.getLineNumber(); + + if (lineNumber < 0) { + lineNumber = 0; + } + + String tag = (tagStr == null ? className : tagStr); + + if (mIsGlobalTagEmpty && TextUtils.isEmpty(tag)) { + tag = TAG_DEFAULT; + } else if (!mIsGlobalTagEmpty) { + tag = mGlobalTag; + } + + String msg = (objects == null) ? NULL_TIPS : getObjectsString(objects); + String headString = "[ (" + className + ":" + lineNumber + ")#" + methodName + " ] "; + + return new String[]{tag, msg, headString}; + } + + private static String getObjectsString(Object... objects) { + + if (objects.length > 1) { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("\n"); + for (int i = 0; i < objects.length; i++) { + Object object = objects[i]; + if (object == null) { + stringBuilder.append(PARAM).append("[").append(i).append("]").append(" = ").append(NULL).append("\n"); + } else { + stringBuilder.append(PARAM).append("[").append(i).append("]").append(" = ").append(object.toString()).append("\n"); + } + } + return stringBuilder.toString(); + } else { + Object object = objects[0]; + return object == null ? NULL : object.toString(); + } + } + +} \ No newline at end of file diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/LogcatUtil.java b/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/LogcatUtil.java new file mode 100644 index 00000000..d042beee --- /dev/null +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/LogcatUtil.java @@ -0,0 +1,23 @@ +package android.lectcoding.ui.logcat; + +import android.text.TextUtils; +import android.util.Log; + +/** + * Created by zhaokaiqiang on 15/12/11. + */ +public class LogcatUtil { + + public static boolean isEmpty(String line) { + return TextUtils.isEmpty(line) || line.equals("\n") || line.equals("\t") || TextUtils.isEmpty(line.trim()); + } + + public static void printLine(String tag, boolean isTop) { + if (isTop) { + Log.d(tag, "╔═══════════════════════════════════════════════════════════════════════════════════════"); + } else { + Log.d(tag, "╚═══════════════════════════════════════════════════════════════════════════════════════"); + } + } + +} diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/BaseLog.java b/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/BaseLog.java new file mode 100644 index 00000000..f901ab9b --- /dev/null +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/BaseLog.java @@ -0,0 +1,51 @@ +package android.lectcoding.ui.logcat.base; + +import android.lectcoding.ui.logcat.Logcat; +import android.util.Log; + +public class BaseLog { + + private static final int MAX_LENGTH = 4000; + + public static void printDefault(int type, String tag, String msg) { + + int index = 0; + int length = msg.length(); + int countOfSub = length / MAX_LENGTH; + + if (countOfSub > 0) { + for (int i = 0; i < countOfSub; i++) { + String sub = msg.substring(index, index + MAX_LENGTH); + printSub(type, tag, sub); + index += MAX_LENGTH; + } + printSub(type, tag, msg.substring(index, length)); + } else { + printSub(type, tag, msg); + } + } + + private static void printSub(int type, String tag, String sub) { + switch (type) { + case Logcat.V: + Log.v(tag, sub); + break; + case Logcat.D: + Log.d(tag, sub); + break; + case Logcat.I: + Log.i(tag, sub); + break; + case Logcat.W: + Log.w(tag, sub); + break; + case Logcat.E: + Log.e(tag, sub); + break; + case Logcat.A: + Log.wtf(tag, sub); + break; + } + } + +} diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java b/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java new file mode 100644 index 00000000..017f7fd8 --- /dev/null +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java @@ -0,0 +1,51 @@ +package android.lectcoding.ui.logcat.base; + +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.util.Log; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.util.Random; + +public class FileLog { + + private static final String FILE_PREFIX = "KLog_"; + private static final String FILE_FORMAT = ".log"; + + public static void printFile(String tag, File targetDirectory, @Nullable String fileName, String headString, String msg) { + + fileName = (fileName == null) ? getFileName() : fileName; + if (save(targetDirectory, fileName, msg)) { + Log.d(tag, headString + " save log success ! location is >>>" + targetDirectory.getAbsolutePath() + "/" + fileName); + } else { + Log.e(tag, headString + "save log fails !"); + } + } + + private static boolean save(File dic, @NonNull String fileName, String msg) { + + File file = new File(dic, fileName); + + try { + OutputStream outputStream = new FileOutputStream(file); + OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-8"); + outputStreamWriter.write(msg); + outputStreamWriter.flush(); + outputStream.close(); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + + } + + private static String getFileName() { + Random random = new Random(); + return FILE_PREFIX + Long.toString(System.currentTimeMillis() + random.nextInt(10000)).substring(4) + FILE_FORMAT; + } + +} diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/JsonLog.java b/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/JsonLog.java new file mode 100644 index 00000000..93a908d6 --- /dev/null +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/JsonLog.java @@ -0,0 +1,37 @@ +package android.lectcoding.ui.logcat.base; + +import android.lectcoding.ui.logcat.Logcat; +import android.lectcoding.ui.logcat.LogcatUtil; +import android.util.Log; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +public class JsonLog { + + public static void printJson(String tag, String msg, String headString) { + String message; + try { + if (msg.startsWith("{")) { + JSONObject jsonObject = new JSONObject(msg); + message = jsonObject.toString(Logcat.JSON_INDENT); + } else if (msg.startsWith("[")) { + JSONArray jsonArray = new JSONArray(msg); + message = jsonArray.toString(Logcat.JSON_INDENT); + } else { + message = msg; + } + } catch (JSONException e) { + message = msg; + } + + LogcatUtil.printLine(tag, true); + message = headString + Logcat.LINE_SEPARATOR + message; + String[] lines = message.split(Logcat.LINE_SEPARATOR); + for (String line : lines) { + Log.d(tag, "║ " + line); + } + LogcatUtil.printLine(tag, false); + } +} diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/XmlLog.java b/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/XmlLog.java new file mode 100644 index 00000000..334ce167 --- /dev/null +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/XmlLog.java @@ -0,0 +1,56 @@ +package android.lectcoding.ui.logcat.base; + +import android.lectcoding.ui.logcat.Logcat; +import android.lectcoding.ui.logcat.LogcatUtil; +import android.util.Log; + +import java.io.StringReader; +import java.io.StringWriter; + +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Source; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; + +/** + * Created by zhaokaiqiang on 15/11/18. + */ +public class XmlLog { + + public static void printXml(String tag, String xml, String headString) { + + if (xml != null) { + xml = XmlLog.formatXML(xml); + xml = headString + "\n" + xml; + } else { + xml = headString + Logcat.NULL_TIPS; + } + + LogcatUtil.printLine(tag, true); + String[] lines = xml.split(Logcat.LINE_SEPARATOR); + for (String line : lines) { + if (!LogcatUtil.isEmpty(line)) { + Log.d(tag, "║ " + line); + } + } + LogcatUtil.printLine(tag, false); + } + + private static String formatXML(String inputXML) { + try { + Source xmlInput = new StreamSource(new StringReader(inputXML)); + StreamResult xmlOutput = new StreamResult(new StringWriter()); + Transformer transformer = TransformerFactory.newInstance().newTransformer(); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); + transformer.transform(xmlInput, xmlOutput); + return xmlOutput.getWriter().toString().replaceFirst(">", ">\n"); + } catch (Exception e) { + e.printStackTrace(); + return inputXML; + } + } + +} From 700436465f8d841204e5dbfbfe2d7b706dcafc86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=87=8C=E7=82=8E?= Date: Wed, 21 Mar 2018 18:16:24 +0800 Subject: [PATCH 14/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/gank/gankly/ui/android/AndroidFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java index b1826212..233055af 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java @@ -122,7 +122,7 @@ private void initLoadAndroid() { @Override public void refreshAndroidSuccess(List list) { if (pageConfig != null) { - pageConfig.curPage += 1; + pageConfig.curPage = pageConfig.initPage + 1; } if (androidAdapter != null) { androidAdapter.fillItems(list); From 01d482eb52c9a176c8be4053f6c60e4affc47c85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=87=8C=E7=82=8E?= Date: Thu, 22 Mar 2018 18:07:22 +0800 Subject: [PATCH 15/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 4 +- .../main/java/com/gank/gankly/AppConfig.java | 124 +++++------- .../java/com/gank/gankly/bean/BaiSiBean.java | 1 - .../com/gank/gankly/bean/BuDeJieBean.java | 1 - .../com/gank/gankly/bean/BuDeJieVideo.java | 1 - .../com/gank/gankly/bean/GallerySize.java | 1 - .../com/gank/gankly/bean/JianDanResult.java | 1 - .../gankly/config/glide/MyGlideModule.java | 2 +- .../gankly/config/glide/ProgressTarget.java | 3 - .../gank/gankly/listener/DialogOnClick.java | 1 - .../java/com/gank/gankly/mvp/BaseModel.java | 1 - .../com/gank/gankly/mvp/FetchPresenter.java | 179 ------------------ .../gank/gankly/mvp/ILoadMorePresenter.java | 1 - .../gank/gankly/mvp/base/BasePresenter.java | 2 +- .../com/gank/gankly/mvp/base/BaseView.java | 2 +- .../com/gank/gankly/mvp/base/PageView.java | 17 ++ .../gankly/mvp/observer/PageOnObserver.java | 12 +- .../mvp/source/BaseDataSourceModel.java | 1 - .../gankly/mvp/source/LocalDataSource.java | 6 +- .../mvp/source/remote/BuDeJieDataSource.java | 1 - .../mvp/source/remote/JiandanDataSource.java | 1 - .../mvp/source/remote/MeiZiTuDataSource.java | 1 - .../mvp/source/remote/MeiziDataSource.java | 1 - .../gankly/mvp/subseribe/PageSubscribe.java | 74 ++++++++ .../gank/gankly/network/api/ApiManager.java | 1 - .../gankly/ui/android/AndroidAdapter.java | 32 ++-- .../gankly/ui/android/AndroidContract.java | 17 +- .../gankly/ui/android/AndroidFragment.java | 64 +++---- .../gankly/ui/android/AndroidPresenter.java | 87 ++------- .../gank/gankly/ui/baisi/BaiSiActivity.java | 1 - .../gankly/ui/baisi/BaiSiMainFragment.java | 5 +- .../gankly/ui/baisi/BaiSiVideoContract.java | 1 - .../gankly/ui/baisi/BaiSiVideoPresenter.java | 9 +- .../ui/baisi/image/BaiSiGalleryFragment.java | 1 - .../ui/baisi/image/BaiSiImageContract.java | 10 +- .../ui/baisi/image/BaiSiImageFragment.java | 12 +- .../ui/baisi/image/BaiSiImagePresenter.java | 27 +-- .../com/gank/gankly/ui/base/BaseHolder.java | 1 - .../gankly/ui/base/BaseJiandanActivity.java | 1 - .../ui/base/BaseSwipeRefreshFragment.java | 1 - .../gank/gankly/ui/base/ISwipeRefresh.java | 1 - .../gankly/ui/base/InitializeService.java | 75 -------- .../gankly/ui/base/activity/BaseActivity.java | 13 +- .../gankly/ui/base/fragment/BaseFragment.java | 5 - .../ui/base/fragment/SupportFragment.java | 6 +- .../ui/base/fragment/ThemeFragment.java | 1 - .../gankly/ui/collect/CollectContract.java | 1 - .../ui/{girls => }/cure/CureAdapter.java | 2 +- .../ui/{girls => }/cure/CureContract.java | 15 +- .../ui/{girls => }/cure/CureFragment.java | 10 +- .../ui/{girls => }/cure/CurePresenter.java | 58 +++--- .../dailymeizi/DailyMeiziAdapter.java | 2 +- .../dailymeizi/DailyMeiziContract.java | 16 +- .../dailymeizi/DailyMeiziFragment.java | 15 +- .../dailymeizi/DailyMeiziPresenter.java | 25 +-- .../ui/discovered/DiscoveredFragment.java | 5 +- .../discovered/jiandan/JiandanContract.java | 10 +- .../discovered/jiandan/JiandanFragment.java | 9 +- .../discovered/jiandan/JiandanPresenter.java | 56 +++--- .../more/DiscoveredMoreFragment.java | 1 - .../discovered/teamBlog/TeamBlogFragment.java | 10 +- .../teamBlog/TeamBlogPresenter.java | 32 +--- .../technology/TechnologyContract.java | 11 +- .../technology/TechnologyFragment.java | 9 +- .../technology/TechnologyPresenter.java | 53 +++--- .../ui/discovered/video/VideoContract.java | 9 +- .../ui/discovered/video/VideoFragment.java | 11 +- .../ui/discovered/video/VideoPresenter.java | 34 +--- .../gankly/ui/gallery/GalleryActivity.java | 20 +- .../gankly/ui/gallery/GalleryContract.java | 10 +- .../gankly/ui/gallery/GalleryFragment.java | 1 - .../gankly/ui/gallery/GalleryPresenter.java | 36 ++-- .../gank/gankly/ui/girls/GirlsFragment.java | 34 +--- .../ui/history/BrowseHistoryAdapter.java | 1 - .../ui/history/BrowseHistoryContract.java | 14 +- .../ui/history/BrowseHistoryFragment.java | 10 +- .../ui/history/BrowseHistoryPresenter.java | 97 +++++----- .../com/gank/gankly/ui/ios/IosAdapter.java | 35 ++-- .../com/gank/gankly/ui/ios/IosContract.java | 14 +- .../com/gank/gankly/ui/ios/IosFragment.java | 105 +++++----- .../com/gank/gankly/ui/ios/IosPresenter.java | 128 +++---------- .../gank/gankly/ui/main/IndexFragment.java | 3 +- .../com/gank/gankly/ui/main/MainActivity.java | 2 +- .../com/gank/gankly/ui/mine/MineFragment.java | 16 +- .../gank/gankly/ui/more/AboutFragment.java | 3 +- .../com/gank/gankly/ui/more/MoreActivity.java | 1 - .../gank/gankly/ui/more/SettingFragment.java | 22 +-- .../ui/{girls => }/pure/PureAdapter.java | 2 +- .../ui/{girls => }/pure/PureContract.java | 2 +- .../ui/{girls => }/pure/PureFragment.java | 108 +++-------- .../ui/{girls => }/pure/PurePresenter.java | 2 +- .../gank/gankly/ui/splash/SplashActivity.java | 1 - .../gankly/ui/web/JiandanWebActivity.java | 7 +- .../gankly/ui/web/WebVideoViewActivity.java | 2 +- .../gankly/ui/web/normal/WebActivity.java | 53 ++---- .../gankly/ui/web/normal/WebContract.java | 1 - .../gankly/ui/web/normal/WebPresenter.java | 1 - .../gankly/ui/welfare/WelfareAdapter.java | 26 +-- .../gankly/ui/welfare/WelfareContract.java | 12 +- .../gankly/ui/welfare/WelfareFragment.java | 12 +- .../gankly/ui/welfare/WelfarePresenter.java | 51 +++-- .../java/com/gank/gankly/utils/AppUtils.java | 9 +- .../com/gank/gankly/utils/DisplayUtils.java | 10 +- .../gank/gankly/utils/GanklyPreferences.java | 58 +++--- .../com/gank/gankly/utils/GlideCatchUtil.java | 20 +- .../com/gank/gankly/utils/NetworkUtils.java | 16 +- .../java/com/gank/gankly/utils/RxClick.java | 1 - .../com/gank/gankly/utils/ShareUtils.java | 5 +- .../com/gank/gankly/utils/StyleUtils.java | 13 +- .../com/gank/gankly/utils/ToastUtils.java | 37 ++-- .../utils/gilde/GlideImageLoaderStrategy.java | 10 +- .../gankly/utils/gilde/WifiOnlyLoader.java | 15 +- .../gankly/utils/theme/RecyclerViewColor.java | 1 - .../com/gank/gankly/widget/ItemTextView.java | 6 +- .../java/com/gank/gankly/widget/LSwitch.java | 21 +- .../gank/gankly/widget/ProgressImageView.java | 10 +- app/src/main/res/layout/fragment_gift.xml | 2 +- .../android/ly/business/api/GankServer.java | 13 +- .../java/android/ly/business/domain/Gank.java | 7 +- .../ly/business/domain/PageConfig.java | 4 + .../lectcoding/ui/adapter/BasicHolder.java | 2 +- 121 files changed, 871 insertions(+), 1424 deletions(-) delete mode 100644 app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java create mode 100644 app/src/main/java/com/gank/gankly/mvp/base/PageView.java create mode 100644 app/src/main/java/com/gank/gankly/mvp/subseribe/PageSubscribe.java delete mode 100644 app/src/main/java/com/gank/gankly/ui/base/InitializeService.java rename app/src/main/java/com/gank/gankly/ui/{girls => }/cure/CureAdapter.java (98%) rename app/src/main/java/com/gank/gankly/ui/{girls => }/cure/CureContract.java (59%) rename app/src/main/java/com/gank/gankly/ui/{girls => }/cure/CureFragment.java (95%) rename app/src/main/java/com/gank/gankly/ui/{girls => }/cure/CurePresenter.java (88%) rename app/src/main/java/com/gank/gankly/ui/{girls => }/dailymeizi/DailyMeiziAdapter.java (98%) rename app/src/main/java/com/gank/gankly/ui/{girls => }/dailymeizi/DailyMeiziContract.java (59%) rename app/src/main/java/com/gank/gankly/ui/{girls => }/dailymeizi/DailyMeiziFragment.java (94%) rename app/src/main/java/com/gank/gankly/ui/{girls => }/dailymeizi/DailyMeiziPresenter.java (92%) rename app/src/main/java/com/gank/gankly/ui/{girls => }/pure/PureAdapter.java (98%) rename app/src/main/java/com/gank/gankly/ui/{girls => }/pure/PureContract.java (95%) rename app/src/main/java/com/gank/gankly/ui/{girls => }/pure/PureFragment.java (56%) rename app/src/main/java/com/gank/gankly/ui/{girls => }/pure/PurePresenter.java (99%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8e73410a..ef9bbebf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -29,7 +29,7 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" - android:theme="@style/AppTheme"> + android:theme="@style/AppTheme.light"> - - diff --git a/app/src/main/java/com/gank/gankly/AppConfig.java b/app/src/main/java/com/gank/gankly/AppConfig.java index ae518b99..d8b7b083 100644 --- a/app/src/main/java/com/gank/gankly/AppConfig.java +++ b/app/src/main/java/com/gank/gankly/AppConfig.java @@ -1,21 +1,18 @@ package com.gank.gankly; import android.app.Application; -import android.content.Context; -import android.content.res.Resources; import android.database.sqlite.SQLiteDatabase; import android.ly.business.api.InitGankServer; +import android.util.Log; -import com.gank.gankly.config.Preferences; +import com.facebook.stetho.Stetho; +import com.gank.gankly.config.Constants; import com.gank.gankly.data.DaoMaster; -import com.gank.gankly.data.DaoSession; -import com.gank.gankly.ui.base.InitializeService; -import com.gank.gankly.ui.more.SettingFragment; -import com.gank.gankly.utils.GanklyPreferences; -import com.gank.gankly.utils.NetworkUtils; import com.leftcoding.network.intercept.HttpLogging; import com.squareup.leakcanary.LeakCanary; -import com.squareup.leakcanary.RefWatcher; +import com.tencent.bugly.Bugly; +import com.tencent.bugly.beta.Beta; +import com.tencent.smtt.sdk.QbSdk; import okhttp3.logging.HttpLoggingInterceptor; @@ -23,15 +20,8 @@ /** * Create by LingYan on 2016-04-01 - * Email:137387869@qq.com */ public class AppConfig extends Application { - private static final int PREFERENCES_VERSION = 1; - private static Context mContext; - private static DaoSession daoSession; - private static boolean isNight; - - private RefWatcher mRefWatcher; public AppConfig() { } @@ -39,80 +29,64 @@ public AppConfig() { @Override public void onCreate() { super.onCreate(); - - mContext = this; - // leakCanary -- start - if (LeakCanary.isInAnalyzerProcess(this)) { - return; - } - mRefWatcher = LeakCanary.install(this); - // leakCanary -- end + setupLeakCanary(); + setupStetho(); + setupBugly(); + setupX5WebView(); InitGankServer.init(AppConfig.this) .baseUrl(BuildConfig.GANK_SERVER_ULR) .addNetworkInterceptor(HttpLogging.get().setLevel(HttpLoggingInterceptor.Level.HEADERS).build()); - initPreferences(); - - InitializeService.start(getApplicationContext()); - - // GreenDao -- start DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(getApplicationContext(), DB_NAME, null); SQLiteDatabase db = helper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); - daoSession = daoMaster.newSession(); - // GreenDao -- end - } - - private void initPreferences() { - int version = GanklyPreferences.getInt(Preferences.APP_VERSION, 1); - - if (version < PREFERENCES_VERSION) { - GanklyPreferences.clear(); - GanklyPreferences.putInt(Preferences.APP_VERSION, PREFERENCES_VERSION); - } - - isNight = GanklyPreferences.getBoolean(SettingFragment.IS_NIGHT, false); - } - - @Override - protected void attachBaseContext(Context base) { - super.attachBaseContext(base); - } - - public static Context getGankContext() { - return mContext.getApplicationContext(); - } - - public static Resources getAppResources() { - return getGankContext().getResources(); - } - - public static int getAppColor(int id) { - return getAppResources().getColor(id); +// daoSession = daoMaster.newSession(); } - public static String getAppString(int res) { - return getAppResources().getString(res); + /** + * 数据库Chrome上调试 + */ + private void setupStetho() { + Stetho.initializeWithDefaults(AppConfig.this); } - public static DaoSession getDaoSession() { - return daoSession; + /** + * Bugly 测试 + */ + private void setupBugly() { + Beta.autoDownloadOnWifi = true; +// Beta.autoCheckUpgrade = GanklyPreferences.getBoolean(Preferences.SETTING_AUTO_CHECK, true); + Bugly.init(AppConfig.this, Constants.CRASH_LOG_ID, false); } - public static boolean isNight() { - return isNight; + /** + * x5 搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。 + */ + private void setupX5WebView() { + QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() { + + @Override + public void onViewInitFinished(boolean arg0) { + //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。 + Log.e("app", " onViewInitFinished is " + arg0); + } + + @Override + public void onCoreInitFinished() { + } + }; + //x5内核初始化接口 + QbSdk.initX5Environment(AppConfig.this, cb); } - public static void setIsNight(boolean isNight) { - AppConfig.isNight = isNight; - } - - public static boolean isNetConnect() { - return NetworkUtils.isNetworkAvailable(); - } - - public RefWatcher getRefWatcher() { - return mRefWatcher; + /** + * 内存监视 + */ + private void setupLeakCanary() { + if (LeakCanary.isInAnalyzerProcess(this)) { + return; + } + LeakCanary.install(this); } } diff --git a/app/src/main/java/com/gank/gankly/bean/BaiSiBean.java b/app/src/main/java/com/gank/gankly/bean/BaiSiBean.java index 94b3172b..b7b09a56 100644 --- a/app/src/main/java/com/gank/gankly/bean/BaiSiBean.java +++ b/app/src/main/java/com/gank/gankly/bean/BaiSiBean.java @@ -4,7 +4,6 @@ /** * Create by LingYan on 2016-11-30 - * Email:137387869@qq.com */ public class BaiSiBean { diff --git a/app/src/main/java/com/gank/gankly/bean/BuDeJieBean.java b/app/src/main/java/com/gank/gankly/bean/BuDeJieBean.java index bfd2cefd..f9efd7e6 100644 --- a/app/src/main/java/com/gank/gankly/bean/BuDeJieBean.java +++ b/app/src/main/java/com/gank/gankly/bean/BuDeJieBean.java @@ -4,7 +4,6 @@ /** * Create by LingYan on 2016-12-07 - * Email:137387869@qq.com */ public class BuDeJieBean { diff --git a/app/src/main/java/com/gank/gankly/bean/BuDeJieVideo.java b/app/src/main/java/com/gank/gankly/bean/BuDeJieVideo.java index 9ec7b1cf..36d49050 100644 --- a/app/src/main/java/com/gank/gankly/bean/BuDeJieVideo.java +++ b/app/src/main/java/com/gank/gankly/bean/BuDeJieVideo.java @@ -4,7 +4,6 @@ /** * Create by LingYan on 2016-12-13 - * Email:137387869@qq.com */ public class BuDeJieVideo { diff --git a/app/src/main/java/com/gank/gankly/bean/GallerySize.java b/app/src/main/java/com/gank/gankly/bean/GallerySize.java index 094247fd..b5bb70a7 100644 --- a/app/src/main/java/com/gank/gankly/bean/GallerySize.java +++ b/app/src/main/java/com/gank/gankly/bean/GallerySize.java @@ -2,7 +2,6 @@ /** * Create by LingYan on 2016-12-12 - * Email:137387869@qq.com */ public class GallerySize { diff --git a/app/src/main/java/com/gank/gankly/bean/JianDanResult.java b/app/src/main/java/com/gank/gankly/bean/JianDanResult.java index a15bc4eb..00ae290d 100644 --- a/app/src/main/java/com/gank/gankly/bean/JianDanResult.java +++ b/app/src/main/java/com/gank/gankly/bean/JianDanResult.java @@ -4,7 +4,6 @@ /** * Create by LingYan on 2016-07-20 - * Email:137387869@qq.com */ public class JianDanResult { private String status; diff --git a/app/src/main/java/com/gank/gankly/config/glide/MyGlideModule.java b/app/src/main/java/com/gank/gankly/config/glide/MyGlideModule.java index 5a6a55b1..c2926ca2 100644 --- a/app/src/main/java/com/gank/gankly/config/glide/MyGlideModule.java +++ b/app/src/main/java/com/gank/gankly/config/glide/MyGlideModule.java @@ -21,7 +21,7 @@ public class MyGlideModule extends AppGlideModule { @Override public void registerComponents(Context context, Glide glide, Registry registry) { - registry.append(GlideUrl.class, InputStream.class, new WifiOnlyLoader.Factory()); + registry.append(GlideUrl.class, InputStream.class, new WifiOnlyLoader.Factory(context)); } @Override diff --git a/app/src/main/java/com/gank/gankly/config/glide/ProgressTarget.java b/app/src/main/java/com/gank/gankly/config/glide/ProgressTarget.java index 8c516d74..dbc3ed28 100644 --- a/app/src/main/java/com/gank/gankly/config/glide/ProgressTarget.java +++ b/app/src/main/java/com/gank/gankly/config/glide/ProgressTarget.java @@ -3,10 +3,8 @@ import android.graphics.drawable.Drawable; import android.support.annotation.Nullable; -import com.bumptech.glide.Glide; import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.transition.Transition; -import com.gank.gankly.AppConfig; public abstract class ProgressTarget extends WrappingTarget implements OkHttpProgressGlideModule.UIProgressListener { private T model; @@ -26,7 +24,6 @@ public final T getModel() { } public final void setModel(T model) { - Glide.get(AppConfig.getGankContext()).clearMemory(); this.model = model; } diff --git a/app/src/main/java/com/gank/gankly/listener/DialogOnClick.java b/app/src/main/java/com/gank/gankly/listener/DialogOnClick.java index f075d587..53b2ccf4 100644 --- a/app/src/main/java/com/gank/gankly/listener/DialogOnClick.java +++ b/app/src/main/java/com/gank/gankly/listener/DialogOnClick.java @@ -2,7 +2,6 @@ /** * Create by LingYan on 2016-09-09 - * Email:137387869@qq.com */ public interface DialogOnClick { void cancel(); diff --git a/app/src/main/java/com/gank/gankly/mvp/BaseModel.java b/app/src/main/java/com/gank/gankly/mvp/BaseModel.java index 04e1803a..e2552484 100644 --- a/app/src/main/java/com/gank/gankly/mvp/BaseModel.java +++ b/app/src/main/java/com/gank/gankly/mvp/BaseModel.java @@ -6,7 +6,6 @@ /** * Create by LingYan on 2016-10-24 - * Email:137387869@qq.com */ public class BaseModel { diff --git a/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java b/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java deleted file mode 100644 index 07469bc0..00000000 --- a/app/src/main/java/com/gank/gankly/mvp/FetchPresenter.java +++ /dev/null @@ -1,179 +0,0 @@ -package com.gank.gankly.mvp; - -import android.ly.business.domain.Gank; - -import com.gank.gankly.AppConfig; -import com.gank.gankly.R; -import com.gank.gankly.bean.GankResult; -import com.gank.gankly.mvp.base.SupportView; -import com.gank.gankly.utils.ListUtils; - -import java.util.List; - -/** - * Create by LingYan on 2016-10-25 - */ - -public abstract class FetchPresenter implements ISubscribePresenter { - private int fetchLimit = 20; - private int fetchPage = 1; - private boolean hasMore = true; - private int offSetPage = 0; - - public int getOffSet() { - return offSetPage * fetchLimit; - } - - public void setOffSetPage(int page) { - this.offSetPage = page; - } - - public int getOffSetPage() { - return offSetPage; - } - - public int getInitPage() { - return fetchPage = 1; - } - - public boolean hasMore() { - return hasMore; - } - - public void setHasMore(boolean hasMore) { - this.hasMore = hasMore; - } - - public int getFetchLimit() { - return fetchLimit; - } - - public void setFetchLimit(int fetchLimit) { - this.fetchLimit = fetchLimit; - } - - public void setFetchPage(int fetchPage) { - this.fetchPage = fetchPage; - } - - public int getFetchPage() { - return fetchPage; - } - - public List filterData(GankResult gankResult, SupportView view) { - view.hideProgress(); - if (gankResult != null) { - int size = gankResult.getSize(); - if (size > 0) { - if (size >= fetchLimit) { - view.showContent(); - } else { - view.hasNoMoreDate(); - } - return gankResult.getResults(); - } else { - if (fetchPage == 1) { - view.showEmpty(); - } else { - view.hasNoMoreDate(); - } - } - } else { - if (fetchPage > 1) { - view.showShortToast(AppConfig.getAppString(R.string.loading_error)); - } else { - view.showError(); - } - } - return null; - } - - public List filterData(List t, SupportView view) { - view.hideProgress(); - if (t != null) { - int size = ListUtils.getSize(t); - if (size > 0) { - if (size >= fetchLimit) { - view.showContent(); - } else { - hasMore = false; - view.hasNoMoreDate(); - } - return t; - } else { - if (fetchPage == 1) { - view.showEmpty(); - } else { - hasMore = false; - view.hasNoMoreDate(); - } - } - } else { - if (fetchPage > 1) { - view.showShortToast(AppConfig.getAppString(R.string.loading_error)); - } else { - view.showError(); - } - } - return null; - } - - /** - * 过滤数据,数据加载完、空数据、显示数据 - * - * @param t 集合 - * @param view IFetch 视图 - * @param 实体类 - * @return 最后返回数据集合 - */ - public List filterDataBase(List t, SupportView view) { - if (t != null) { - int size = ListUtils.getSize(t); - if (size > 0) { - if (size >= fetchLimit) { - view.showContent(); - } else { - hasMore = false; - view.hasNoMoreDate(); - } - return t; - } else { - if (offSetPage == 0) { - view.showEmpty(); - } else { - hasMore = false; - view.hasNoMoreDate(); - } - } - } else { - if (offSetPage > 0) { - view.showShortToast(AppConfig.getAppString(R.string.loading_error)); - } else { - view.showError(); - } - } - return null; - } - - /** - * 解析请求失败,显示网络错误、服务器问题 - * - * @param view IFetch 视图 - */ - public void parseError(SupportView view) { - view.hideProgress(); - if (AppConfig.isNetConnect()) { - if (fetchPage > 1) { - view.showShortToast(AppConfig.getAppString(R.string.loading_error)); - } else { - view.showError(); - } - } else { - if (fetchPage > 1) { - view.showShortToast(AppConfig.getAppString(R.string.loading_network_failure)); - } else { - view.showDisNetWork(); - } - } - } -} diff --git a/app/src/main/java/com/gank/gankly/mvp/ILoadMorePresenter.java b/app/src/main/java/com/gank/gankly/mvp/ILoadMorePresenter.java index 852acb4a..1b3e4e89 100644 --- a/app/src/main/java/com/gank/gankly/mvp/ILoadMorePresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/ILoadMorePresenter.java @@ -3,7 +3,6 @@ /** * Create by LingYan on 2016-10-21 - * Email:137387869@qq.com */ public interface ILoadMorePresenter{ diff --git a/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java b/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java index c860c7cb..f366ad7d 100644 --- a/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java @@ -14,7 +14,7 @@ public abstract class BasePresenter extends BaseContract.Pre protected E view; protected Context context; protected String requestTag = UUID.randomUUID().toString(); - protected String errorTip; + private String errorTip; public BasePresenter(Context context, E view) { checkNotNull(context); diff --git a/app/src/main/java/com/gank/gankly/mvp/base/BaseView.java b/app/src/main/java/com/gank/gankly/mvp/base/BaseView.java index 33850345..f6cff6da 100644 --- a/app/src/main/java/com/gank/gankly/mvp/base/BaseView.java +++ b/app/src/main/java/com/gank/gankly/mvp/base/BaseView.java @@ -5,5 +5,5 @@ */ public interface BaseView extends BaseContract.View { - public void showShortToast(String string); + public void shortToast(String string); } diff --git a/app/src/main/java/com/gank/gankly/mvp/base/PageView.java b/app/src/main/java/com/gank/gankly/mvp/base/PageView.java new file mode 100644 index 00000000..52f85e3d --- /dev/null +++ b/app/src/main/java/com/gank/gankly/mvp/base/PageView.java @@ -0,0 +1,17 @@ +package com.gank.gankly.mvp.base; + +import java.util.List; + +/** + * Create by LingYan on 2016-10-20 + */ + +public interface PageView extends SupportView { + void refreshSuccess(List list); + + void refreshFailure(String msg); + + void appendSuccess(List list); + + void appendFailure(String msg); +} diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/PageOnObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/PageOnObserver.java index 3f1691c3..2ad31552 100644 --- a/app/src/main/java/com/gank/gankly/mvp/observer/PageOnObserver.java +++ b/app/src/main/java/com/gank/gankly/mvp/observer/PageOnObserver.java @@ -9,12 +9,8 @@ */ public abstract class PageOnObserver extends RefreshOnObserver { - protected boolean isFirst = true; - protected int limit; - - protected PageOnObserver(String requestTag, V v, boolean isFirst) { + protected PageOnObserver(String requestTag, V v) { super(requestTag, v); - this.isFirst = isFirst; } @Override @@ -36,8 +32,10 @@ public final void onError(Throwable e) { protected abstract void loadMoreFailure(); + protected abstract boolean isFirst(); + private void onSuccess(T t) { - if (isFirst) { + if (isFirst()) { onRefreshSuccess(t); } else { loadMoreSuccess(t); @@ -45,7 +43,7 @@ private void onSuccess(T t) { } private void onFailure() { - if (isFirst) { + if (isFirst()) { onRefreshFailure(); } else { loadMoreFailure(); diff --git a/app/src/main/java/com/gank/gankly/mvp/source/BaseDataSourceModel.java b/app/src/main/java/com/gank/gankly/mvp/source/BaseDataSourceModel.java index 990b05fb..44a505b5 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/BaseDataSourceModel.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/BaseDataSourceModel.java @@ -18,7 +18,6 @@ /** * Create by LingYan on 2016-10-26 - * Email:137387869@qq.com */ public class BaseDataSourceModel { diff --git a/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java index 1329c734..9c4c19c0 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java @@ -2,7 +2,6 @@ import android.support.annotation.NonNull; -import com.gank.gankly.AppConfig; import com.gank.gankly.data.entity.ReadHistory; import com.gank.gankly.data.entity.ReadHistoryDao; import com.gank.gankly.data.entity.UrlCollect; @@ -22,7 +21,6 @@ /** * 本地数据库 * Create by LingYan on 2016-10-24 - * Email:137387869@qq.com */ public class LocalDataSource extends BaseModel { @@ -46,8 +44,8 @@ public static LocalDataSource getInstance() { } private LocalDataSource() { - mUrlCollectDao = AppConfig.getDaoSession().getUrlCollectDao(); - mReadHistoryDao = AppConfig.getDaoSession().getReadHistoryDao(); +// mUrlCollectDao = AppConfig.getDaoSession().getUrlCollectDao(); +// mReadHistoryDao = AppConfig.getDaoSession().getReadHistoryDao(); } public Observable> getCollect(final int offset, final int limit) { diff --git a/app/src/main/java/com/gank/gankly/mvp/source/remote/BuDeJieDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/remote/BuDeJieDataSource.java index 0ebde989..ba589c25 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/remote/BuDeJieDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/remote/BuDeJieDataSource.java @@ -10,7 +10,6 @@ /** * Create by LingYan on 2016-11-30 - * Email:137387869@qq.com */ public class BuDeJieDataSource extends BaseDataSourceModel { diff --git a/app/src/main/java/com/gank/gankly/mvp/source/remote/JiandanDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/remote/JiandanDataSource.java index 8ee8d9c4..48e803e7 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/remote/JiandanDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/remote/JiandanDataSource.java @@ -15,7 +15,6 @@ /** * Create by LingYan on 2016-11-21 - * Email:137387869@qq.com */ public class JiandanDataSource extends BaseDataSourceModel { diff --git a/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiZiTuDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiZiTuDataSource.java index 1ad67f25..06618a53 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiZiTuDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiZiTuDataSource.java @@ -16,7 +16,6 @@ /** * Create by LingYan on 2016-10-26 - * Email:137387869@qq.com */ public class MeiZiTuDataSource extends BaseDataSourceModel { diff --git a/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiziDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiziDataSource.java index 561bb165..b19725b9 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiziDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiziDataSource.java @@ -14,7 +14,6 @@ /** * Create by LingYan on 2016-10-26 - * Email:137387869@qq.com */ public class MeiziDataSource extends BaseDataSourceModel { diff --git a/app/src/main/java/com/gank/gankly/mvp/subseribe/PageSubscribe.java b/app/src/main/java/com/gank/gankly/mvp/subseribe/PageSubscribe.java new file mode 100644 index 00000000..b6395873 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/mvp/subseribe/PageSubscribe.java @@ -0,0 +1,74 @@ +package com.gank.gankly.mvp.subseribe; + +import android.ly.business.domain.Gank; +import android.ly.business.domain.PageConfig; +import android.ly.business.domain.PageEntity; + +import com.gank.gankly.mvp.base.PageView; +import com.gank.gankly.mvp.observer.PageOnObserver; + +/** + * Create by LingYan on 2018-03-22 + */ + +public class PageSubscribe extends PageOnObserver, PageView> { + private PageConfig pageConfig; + + public PageSubscribe(String requestTag, PageView view, PageConfig pageConfig) { + super(requestTag, view); + this.pageConfig = pageConfig; + } + + @Override + protected void loadMoreSuccess(PageEntity pageEntity) { + if (view == null) { + return; + } + + if (pageEntity.results == null) { + view.appendFailure(pageEntity.msg); + return; + } + + view.appendSuccess(pageEntity.results); + } + + @Override + protected void loadMoreFailure() { + if (view != null) { + view.appendFailure(null); + } + } + + @Override + protected boolean isFirst() { + return pageConfig.isFirst(); + } + + @Override + protected void onRefreshSuccess(PageEntity pageEntity) { + if (view == null) { + return; + } + + if (pageEntity.results == null) { + view.refreshFailure(pageEntity.msg); + return; + } + + view.refreshSuccess(pageEntity.results); + } + + @Override + protected void onRefreshFailure() { + if (view != null) { + view.refreshFailure(null); + } + } + + @Override + public void onComplete() { + super.onComplete(); + pageConfig.curPage++; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gank/gankly/network/api/ApiManager.java b/app/src/main/java/com/gank/gankly/network/api/ApiManager.java index 40e2a25c..d4208852 100644 --- a/app/src/main/java/com/gank/gankly/network/api/ApiManager.java +++ b/app/src/main/java/com/gank/gankly/network/api/ApiManager.java @@ -17,7 +17,6 @@ /** * Create by LingYan on 2016-12-20 - * Email:137387869@qq.com */ public class ApiManager { diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java index d8b9f0ab..12dae193 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java @@ -7,13 +7,13 @@ import android.ly.business.domain.Gank; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; +import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.bumptech.glide.Glide; import com.gank.gankly.R; import com.gank.gankly.butterknife.ButterKnifeHolder; -import com.gank.gankly.listener.ItemCallBack; import com.gank.gankly.utils.DateUtils; import java.util.ArrayList; @@ -27,7 +27,7 @@ * Create by LingYan on 2016-04-25 */ class AndroidAdapter extends BaseAdapter { - private ItemCallBack itemCallBack; + private ItemCallback itemCallback; private Context context; private final List resultsBeans = new ArrayList<>(); @@ -66,8 +66,8 @@ public int getItemViewType(int position) { public ButterKnifeHolder onCreateViewHolder(ViewGroup parent, int viewType) { ButterKnifeHolder defaultHolder; switch (viewType) { - case TextKnifeHolder.LAYOUT: - defaultHolder = new TextKnifeHolder(parent, itemCallBack); + case NormalViewHolder.LAYOUT: + defaultHolder = new NormalViewHolder(parent, itemCallback); break; default: defaultHolder = null; @@ -80,8 +80,8 @@ public ButterKnifeHolder onCreateViewHolder(ViewGroup parent, int viewType) { public void onBindViewHolder(ButterKnifeHolder holder, int position) { final Item item = itemList.get(position); switch (holder.getItemViewType()) { - case TextKnifeHolder.LAYOUT: - ((TextKnifeHolder) holder).bindItem((TextItem) item); + case NormalViewHolder.LAYOUT: + ((NormalViewHolder) holder).bindHolder((TextItem) item); break; } } @@ -111,8 +111,8 @@ public void appendItems(List results) { resultsBeans.addAll(results); } - public void setOnItemClickListener(ItemCallBack itemCallBack) { - this.itemCallBack = itemCallBack; + public void setOnItemClickListener(ItemCallback itemCallBack) { + this.itemCallback = itemCallBack; } @Override @@ -146,11 +146,11 @@ public String getTime() { @Override public int getViewType() { - return TextKnifeHolder.LAYOUT; + return NormalViewHolder.LAYOUT; } } - static class TextKnifeHolder extends ButterKnifeHolder { + static class NormalViewHolder extends ButterKnifeHolder { static final int LAYOUT = R.layout.adapter_android; @BindView(R.id.author_name) @@ -164,23 +164,27 @@ static class TextKnifeHolder extends ButterKnifeHolder { private Gank resultsBean; - TextKnifeHolder(ViewGroup parent, final ItemCallBack itemCallBack) { + NormalViewHolder(ViewGroup parent, final ItemCallback itemCallBack) { super(parent, R.layout.adapter_android); itemView.setOnClickListener(v -> { if (itemCallBack != null && resultsBean != null) { - itemCallBack.onClick(v, getAdapterPosition(), resultsBean); + itemCallBack.onItemClick(v, resultsBean); } }); } @Override - public void bindItem(TextItem item) { + public void bindHolder(TextItem item) { final Gank resultsBean = item.getResultsBean(); this.resultsBean = resultsBean; time.setText(item.getTime()); title.setText(resultsBean.desc); - authorName.setText(resultsBean.getWho()); + authorName.setText(resultsBean.who); } } + + public interface ItemCallback { + void onItemClick(View view, Gank gank); + } } diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java index b302037f..793f52c4 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java @@ -5,23 +5,14 @@ import android.support.annotation.NonNull; import com.gank.gankly.mvp.base.LoadMorePresenter; -import com.gank.gankly.mvp.base.SupportView; - -import java.util.List; +import com.gank.gankly.mvp.base.PageView; /** * Create by LingYan on 2016-10-25 */ public interface AndroidContract { - interface View extends SupportView { - void refreshAndroidSuccess(List list); - - void refreshAndroidFailure(String msg); - - void appendAndroidSuccess(List list); - - void appendAndroidFailure(String msg); + interface View extends PageView { } abstract class Presenter extends LoadMorePresenter { @@ -30,8 +21,8 @@ public Presenter(@NonNull Context context, @NonNull View view) { super(context, view); } - protected abstract void refreshAndroid(int page); + protected abstract void refreshAndroid(); - protected abstract void appendAndroid(int page); + protected abstract void appendAndroid(); } } diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java index 233055af..29b9e870 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.ly.business.domain.Gank; -import android.ly.business.domain.PageConfig; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -13,7 +12,6 @@ import com.gank.gankly.R; import com.gank.gankly.config.Constants; -import com.gank.gankly.listener.ItemCallBack; import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.web.normal.WebActivity; @@ -40,8 +38,7 @@ public class AndroidFragment extends LazyFragment implements AndroidContract.Vie private AndroidAdapter androidAdapter; private AndroidContract.Presenter androidPresenter; - private AtomicBoolean firstRefresh = new AtomicBoolean(true); - private PageConfig pageConfig; + private AtomicBoolean isFirst = new AtomicBoolean(true); @Override protected int getLayoutId() { @@ -57,8 +54,6 @@ public void onAttach(Context context) { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - pageConfig = new PageConfig(); - initRecycler(); androidAdapter.setOnItemClickListener(itemCallBack); @@ -68,7 +63,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - androidPresenter = new AndroidPresenter(getBaseContext(), this); + androidPresenter = new AndroidPresenter(context, this); initLoadAndroid(); } @@ -84,14 +79,14 @@ private void initRecycler() { swipeRefreshLayout.setOnScrollListener(onRefreshListener); } - private final ItemCallBack itemCallBack = (view, position, object) -> { - if (object instanceof Gank) { - Gank resultsBean = (Gank) object; + private final AndroidAdapter.ItemCallback itemCallBack = new AndroidAdapter.ItemCallback() { + @Override + public void onItemClick(View view, Gank gank) { Bundle bundle = new Bundle(); - bundle.putString(WebActivity.TITLE, resultsBean.desc); - bundle.putString(WebActivity.URL, resultsBean.url); + bundle.putString(WebActivity.TITLE, gank.desc); + bundle.putString(WebActivity.URL, gank.url); bundle.putString(WebActivity.TYPE, Constants.ANDROID); - bundle.putString(WebActivity.AUTHOR, resultsBean.who); + bundle.putString(WebActivity.AUTHOR, gank.who); Intent intent = new Intent(context, WebActivity.class); intent.putExtras(bundle); CircularAnimUtils.startActivity((MainActivity) context, intent, view, R.color.white_half); @@ -106,7 +101,7 @@ public void onRefresh() { @Override public void onLoadMore() { - androidPresenter.appendAndroid(pageConfig.curPage); + androidPresenter.appendAndroid(); } }; @@ -116,14 +111,20 @@ public void onLoadMore() { }; private void initLoadAndroid() { - androidPresenter.refreshAndroid(pageConfig.initPage); + androidPresenter.refreshAndroid(); } @Override - public void refreshAndroidSuccess(List list) { - if (pageConfig != null) { - pageConfig.curPage = pageConfig.initPage + 1; + public void refreshSuccess(List list) { + showContent(); + + if (isFirst.compareAndSet(true, false)) { + if (list == null || list.isEmpty()) { + showEmpty(); + return; + } } + if (androidAdapter != null) { androidAdapter.fillItems(list); androidAdapter.notifyDataSetChanged(); @@ -131,15 +132,12 @@ public void refreshAndroidSuccess(List list) { } @Override - public void refreshAndroidFailure(String msg) { - showShortToast(msg); + public void refreshFailure(String msg) { + shortToast(msg); } @Override - public void appendAndroidSuccess(List list) { - if (pageConfig != null) { - pageConfig.curPage += 1; - } + public void appendSuccess(List list) { if (androidAdapter != null) { androidAdapter.appendItems(list); androidAdapter.notifyDataSetChanged(); @@ -147,15 +145,17 @@ public void appendAndroidSuccess(List list) { } @Override - public void appendAndroidFailure(String msg) { - showShortToast(msg); + public void appendFailure(String msg) { + shortToast(msg); } @Override public void showProgress() { - if (firstRefresh.get()) { - showLoading(); - return; + if (isFirst.get()) { + if (swipeRefreshLayout != null && !swipeRefreshLayout.isRefreshing()) { + showLoading(); + return; + } } if (swipeRefreshLayout != null) { @@ -177,10 +177,6 @@ public void hasNoMoreDate() { @Override public void showContent() { - if (firstRefresh.get()) { - firstRefresh.set(false); - } - if (multipleStatusView != null) { multipleStatusView.showContent(); } @@ -225,12 +221,10 @@ public void onDestroyView() { super.onDestroyView(); if (androidAdapter != null) { androidAdapter.destroy(); - androidAdapter = null; } if (androidPresenter != null) { androidPresenter.unSubscribe(); - androidPresenter = null; } } } diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java index aee47f52..31278c48 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java @@ -2,11 +2,10 @@ import android.content.Context; import android.ly.business.api.GankServer; -import android.ly.business.domain.Gank; -import android.ly.business.domain.PageEntity; +import android.ly.business.domain.PageConfig; -import com.gank.gankly.mvp.observer.PageOnObserver; import com.gank.gankly.ui.android.AndroidContract.Presenter; +import com.gank.gankly.mvp.subseribe.PageSubscribe; import com.leftcoding.rxbus.RxApiManager; import java.util.concurrent.atomic.AtomicBoolean; @@ -18,19 +17,22 @@ class AndroidPresenter extends Presenter { // 请求个数 private static final int INIT_LIMIT = 20; private final AtomicBoolean destroyTag = new AtomicBoolean(false); + private PageConfig pageConfig; AndroidPresenter(Context context, AndroidContract.View view) { super(context, view); + pageConfig = new PageConfig(); } @Override - protected void refreshAndroid(int page) { - fetchAndroid(page); + protected void refreshAndroid() { + pageConfig.curPage = 1; + fetchAndroid(); } @Override - protected void appendAndroid(int page) { - fetchAndroid(page); + protected void appendAndroid() { + fetchAndroid(); } @Override @@ -41,13 +43,13 @@ public void unSubscribe() { super.unSubscribe(); } - private void fetchAndroid(final int curPage) { + private void fetchAndroid() { if (destroyTag.get()) { return; } GankServer.get(context) - .androids(curPage, INIT_LIMIT) + .androids(pageConfig.curPage, INIT_LIMIT) .doOnSubscribe(disposable -> { if (isViewLife()) { view.showProgress(); @@ -58,71 +60,6 @@ private void fetchAndroid(final int curPage) { view.hideProgress(); } }) - .subscribe(new PageSubscribe(requestTag, view, isFirst(curPage)) - .limit(INIT_LIMIT)); - } - - private boolean isFirst(int curPage) { - return curPage == 1; - } - - private static class PageSubscribe extends PageOnObserver, AndroidContract.View> { - PageSubscribe(String requestTag, AndroidContract.View view, boolean isFirst) { - super(requestTag, view, isFirst); - } - - public PageSubscribe limit(int limit) { - this.limit = limit; - return this; - } - - @Override - protected void loadMoreSuccess(PageEntity gankPageEntity) { - if (view == null) { - return; - } - - if (gankPageEntity.results == null) { - view.appendAndroidFailure(gankPageEntity.msg); - return; - } - - if (gankPageEntity.hasNoMore(limit)) { - view.hasNoMoreDate(); - } - - view.appendAndroidSuccess(gankPageEntity.results); - } - - @Override - protected void loadMoreFailure() { - if (view != null) { - view.appendAndroidFailure(null); - } - } - - @Override - protected void onRefreshSuccess(PageEntity gankPageEntity) { - if (view == null) { - return; - } - - if (gankPageEntity.results == null) { - view.refreshAndroidFailure(gankPageEntity.msg); - view.showEmpty(); - return; - } - - view.showContent(); - view.refreshAndroidSuccess(gankPageEntity.results); - } - - @Override - protected void onRefreshFailure() { - if (view != null) { - view.refreshAndroidFailure(null); - view.showEmpty(); - } - } + .subscribe(new PageSubscribe(requestTag, view, pageConfig)); } } diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiActivity.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiActivity.java index 98e6d422..b18b8f0c 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiActivity.java @@ -6,7 +6,6 @@ /** * 百思不得姐 * Create by LingYan on 2016-11-29 - * Email:137387869@qq.com */ public class BaiSiActivity extends BaseActivity { diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java index cd3f68c7..0fb4aee6 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java @@ -12,11 +12,10 @@ import android.util.TypedValue; import android.view.View; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; +import com.gank.gankly.butterknife.ButterKnifeFragment; import com.gank.gankly.ui.baisi.image.BaiSiImageFragment; import com.gank.gankly.ui.base.fragment.LazyFragment; -import com.gank.gankly.butterknife.ButterKnifeFragment; import com.gank.gankly.ui.main.GankPagerAdapter; import java.util.ArrayList; @@ -99,7 +98,7 @@ private void initTabLayout() { mTabLayout.setupWithViewPager(mViewPager); mTabLayout.setTabMode(TabLayout.MODE_FIXED); - mTabLayout.setSelectedTabIndicatorColor(AppConfig.getAppColor(R.color.white)); + mTabLayout.setSelectedTabIndicatorColor(context.getResources().getColor(R.color.white)); } /** diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoContract.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoContract.java index 73c37c4d..335306ff 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoContract.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoContract.java @@ -8,7 +8,6 @@ /** * Create by LingYan on 2016-11-30 - * Email:137387869@qq.com */ public interface BaiSiVideoContract { diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPresenter.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPresenter.java index 68ed661d..9e655cb6 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPresenter.java @@ -1,7 +1,6 @@ package com.gank.gankly.ui.baisi; import com.gank.gankly.bean.BuDeJieVideo; -import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.BuDeJieDataSource; import com.gank.gankly.utils.ListUtils; import com.socks.library.KLog; @@ -15,7 +14,7 @@ * Create by LingYan on 2016-11-30 */ -public class BaiSiVideoPresenter extends FetchPresenter implements BaiSiVideoContract.Presenter { +public class BaiSiVideoPresenter implements BaiSiVideoContract.Presenter { private final BuDeJieDataSource mTask; private final BaiSiVideoContract.View mView; private int mNextPage; @@ -47,7 +46,6 @@ public void onError(Throwable e) { @Override public void onComplete() { mView.hideProgress(); - setFetchPage(getFetchPage() + 1); } @Override @@ -69,9 +67,4 @@ public void onNext(BuDeJieVideo baiSiBean) { } }); } - - @Override - public void unSubscribe() { - - } } diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java index fa9f5371..b7330ba8 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java @@ -26,7 +26,6 @@ /** * Create by LingYan on 2016-12-05 - * Email:137387869@qq.com */ public class BaiSiGalleryFragment extends SupportFragment { diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java index b6f664c8..777122f3 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java @@ -1,7 +1,10 @@ package com.gank.gankly.ui.baisi.image; +import android.content.Context; +import android.support.annotation.NonNull; + import com.gank.gankly.bean.BuDeJieBean; -import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; import java.util.List; @@ -17,7 +20,10 @@ interface View extends SupportView { void appendData(List list); } - interface Presenter extends ILoadMorePresenter { + abstract class Presenter extends LoadMorePresenter { + public Presenter(@NonNull Context context, View view) { + super(context, view); + } } } diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java index 38074140..54c6f79e 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java @@ -9,12 +9,11 @@ import com.gank.gankly.R; import com.gank.gankly.bean.BuDeJieBean; -import com.gank.gankly.mvp.source.remote.BuDeJieDataSource; import com.gank.gankly.ui.baisi.BaiSiActivity; import com.gank.gankly.ui.base.fragment.LazyFragment; -import com.gank.gankly.widget.SpaceItemDecoration; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; +import com.gank.gankly.widget.SpaceItemDecoration; import java.util.List; @@ -22,7 +21,6 @@ /** * Create by LingYan on 2016-12-05 - * Email:137387869@qq.com */ public class BaiSiImageFragment extends LazyFragment implements BaiSiImageContract.View { @@ -44,7 +42,7 @@ public void onAttach(Context context) { @Override protected void initLazy() { mSwipeRefreshLayout.setRefreshing(true); - mPresenter.fetchNew(); +// mPresenter.fetchNew(); } @Override @@ -63,12 +61,12 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { - mPresenter.fetchNew(); +// mPresenter.fetchNew(); } @Override public void onLoadMore() { - mPresenter.fetchMore(); +// mPresenter.fetchMore(); } }); } @@ -76,7 +74,7 @@ public void onLoadMore() { @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mPresenter = new BaiSiImagePresenter(BuDeJieDataSource.getInstance(), this); +// mPresenter = new BaiSiImagePresenter(BuDeJieDataSource.getInstance(), this); } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImagePresenter.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImagePresenter.java index 1ffc5819..319856a9 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImagePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImagePresenter.java @@ -1,7 +1,8 @@ package com.gank.gankly.ui.baisi.image; +import android.content.Context; + import com.gank.gankly.bean.BuDeJieBean; -import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.BuDeJieDataSource; import com.socks.library.KLog; @@ -12,26 +13,14 @@ * Create by LingYan on 2016-12-05 */ -public class BaiSiImagePresenter extends FetchPresenter implements BaiSiImageContract.Presenter { - private final BuDeJieDataSource mTask; - private final BaiSiImageContract.View mView; +public class BaiSiImagePresenter extends BaiSiImageContract.Presenter { + private BuDeJieDataSource mTask; + private BaiSiImageContract.View mView; private int np; + private Context context; - public BaiSiImagePresenter(BuDeJieDataSource task, BaiSiImageContract.View view) { - mTask = task; - mView = view; - } - - @Override - public void fetchNew() { - np = 0; - fetchData(); - } - - @Override - public void fetchMore() { - mView.showProgress(); - fetchData(); + public BaiSiImagePresenter(Context context, BaiSiImageContract.View view) { + super(context, view); } private void fetchData() { diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseHolder.java b/app/src/main/java/com/gank/gankly/ui/base/BaseHolder.java index b93ba2c5..7cc90e2d 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseHolder.java +++ b/app/src/main/java/com/gank/gankly/ui/base/BaseHolder.java @@ -5,7 +5,6 @@ /** * Create by LingYan on 2016-11-10 - * Email:137387869@qq.com */ public abstract class BaseHolder extends RecyclerView.ViewHolder { diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseJiandanActivity.java b/app/src/main/java/com/gank/gankly/ui/base/BaseJiandanActivity.java index 10754dd1..aebf3383 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseJiandanActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/base/BaseJiandanActivity.java @@ -5,7 +5,6 @@ /** * Create by LingYan on 2016-07-20 - * Email:137387869@qq.com */ public abstract class BaseJiandanActivity extends BaseActivity implements ISwipeRefreshView { @Override diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseSwipeRefreshFragment.java b/app/src/main/java/com/gank/gankly/ui/base/BaseSwipeRefreshFragment.java index a5cfdb05..343d4c32 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseSwipeRefreshFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/BaseSwipeRefreshFragment.java @@ -8,7 +8,6 @@ /** * Create by LingYan on 2016-04-05 - * Email:137387869@qq.com */ public abstract class BaseSwipeRefreshFragment extends BaseThemeFragment { diff --git a/app/src/main/java/com/gank/gankly/ui/base/ISwipeRefresh.java b/app/src/main/java/com/gank/gankly/ui/base/ISwipeRefresh.java index 8224143c..a2261d02 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/ISwipeRefresh.java +++ b/app/src/main/java/com/gank/gankly/ui/base/ISwipeRefresh.java @@ -4,7 +4,6 @@ /** * Create by LingYan on 2016-09-13 - * Email:137387869@qq.com */ public interface ISwipeRefresh { void setSwipeRefreshLayout(SwipeRefreshLayout swipeRefreshLayout); diff --git a/app/src/main/java/com/gank/gankly/ui/base/InitializeService.java b/app/src/main/java/com/gank/gankly/ui/base/InitializeService.java deleted file mode 100644 index a1914f62..00000000 --- a/app/src/main/java/com/gank/gankly/ui/base/InitializeService.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.gank.gankly.ui.base; - -import android.app.IntentService; -import android.content.Context; -import android.content.Intent; -import android.util.Log; - -import com.facebook.stetho.Stetho; -import com.gank.gankly.config.Constants; -import com.gank.gankly.config.Preferences; -import com.gank.gankly.utils.GanklyPreferences; -import com.tencent.bugly.Bugly; -import com.tencent.bugly.beta.Beta; -import com.tencent.smtt.sdk.QbSdk; - -/** - * Create by LingYan on 2016-09-18 - * Email:137387869@qq.com - */ -public class InitializeService extends IntentService { - public static final String SERVICE_ACTION = "com.gank.gankly.ui.base.InitializeService"; - private static final String DB_NAME = "gank.db"; - private Context mContext; - - public InitializeService() { - this(SERVICE_ACTION); - } - - public InitializeService(String name) { - super(name); - } - - @Override - protected void onHandleIntent(Intent intent) { - if (intent != null && SERVICE_ACTION.equals(intent.getAction())) { - initStart(); - } - } - - public static void start(Context context) { - Intent intent = new Intent(context, InitializeService.class); - intent.setAction(SERVICE_ACTION); - context.startService(intent); - } - - private void initStart() { - //数据库Chrome上调试 -- start - Stetho.initializeWithDefaults(getApplicationContext()); - //stetho -- end - - //Bugly 测试:true -- start - Beta.autoDownloadOnWifi = true; - Beta.autoCheckUpgrade = GanklyPreferences.getBoolean(Preferences.SETTING_AUTO_CHECK, true); - Bugly.init(getApplicationContext(), Constants.CRASH_LOG_ID, false); - //Bugly -- end - - //x5 -- start - //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。 - QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() { - - @Override - public void onViewInitFinished(boolean arg0) { - //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。 - Log.d("app", " onViewInitFinished is " + arg0); - } - - @Override - public void onCoreInitFinished() { - } - }; - //x5内核初始化接口 - QbSdk.initX5Environment(getApplicationContext(), cb); - //x5 -- end - } -} diff --git a/app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java b/app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java index 81a4a828..15fb0faf 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java @@ -17,7 +17,6 @@ import android.view.View; import android.widget.TextView; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; import butterknife.ButterKnife; @@ -193,11 +192,11 @@ private void addFragment(Fragment fragment, Bundle bundle, String tag) { protected void initPresenter() {} protected void initTheme() { - if (AppConfig.isNight()) { - setTheme(R.style.AppTheme_Night); - } else { - setTheme(R.style.AppTheme_light); - } +// if (AppConfig.isNight()) { +// setTheme(R.style.AppTheme_Night); +// } else { +// setTheme(R.style.AppTheme_light); +// } } public void gotoActivity(Class cls, boolean isFinish) { @@ -230,7 +229,7 @@ public void showSnackbar(View view, int rexText, int resColor) { @Override protected void onDestroy() { super.onDestroy(); - ((AppConfig) this.getApplication()).getRefWatcher().watch(this); +// ((AppConfig) this.getApplication()).getRefWatcher().watch(this); if (mUnBinder != null) { mUnBinder.unbind(); mUnBinder = null; diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java index 4ec4d290..df1f5c96 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/BaseFragment.java @@ -9,10 +9,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - -import com.gank.gankly.AppConfig; - - /** * Create by LingYan on 2016-04-05 */ @@ -46,7 +42,6 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { @Override public void onDestroyView() { super.onDestroyView(); - ((AppConfig) activity.getApplication()).getRefWatcher().watch(this); } public Context getBaseContext() { diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java index 4e342867..534aa90d 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java @@ -61,9 +61,9 @@ public void showError() { } @Override - public void showShortToast(String str) { - if(!TextUtils.isEmpty(str)){ - ToastUtils.showToast(str); + public void shortToast(String str) { + if (!TextUtils.isEmpty(str)) { + ToastUtils.showToast(context, str); } } } diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java index 744784ae..02532cd0 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java @@ -18,7 +18,6 @@ /** * Create by LingYan on 2016-10-21 - * Email:137387869@qq.com */ public abstract class ThemeFragment extends ButterKnifeFragment { diff --git a/app/src/main/java/com/gank/gankly/ui/collect/CollectContract.java b/app/src/main/java/com/gank/gankly/ui/collect/CollectContract.java index 1ee457da..499fea23 100644 --- a/app/src/main/java/com/gank/gankly/ui/collect/CollectContract.java +++ b/app/src/main/java/com/gank/gankly/ui/collect/CollectContract.java @@ -8,7 +8,6 @@ /** * Create by LingYan on 2016-10-20 - * Email:137387869@qq.com */ public interface CollectContract { diff --git a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureAdapter.java b/app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java similarity index 98% rename from app/src/main/java/com/gank/gankly/ui/girls/cure/CureAdapter.java rename to app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java index 2c24ad92..12d58489 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.girls.cure; +package com.gank.gankly.ui.cure; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; diff --git a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureContract.java b/app/src/main/java/com/gank/gankly/ui/cure/CureContract.java similarity index 59% rename from app/src/main/java/com/gank/gankly/ui/girls/cure/CureContract.java rename to app/src/main/java/com/gank/gankly/ui/cure/CureContract.java index ef2a6789..41b0003c 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureContract.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CureContract.java @@ -1,8 +1,11 @@ -package com.gank.gankly.ui.girls.cure; +package com.gank.gankly.ui.cure; + +import android.content.Context; +import android.support.annotation.NonNull; import com.gank.gankly.bean.DailyMeiziBean; import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; import java.util.ArrayList; @@ -25,7 +28,11 @@ interface View extends SupportView { void openBrowseActivity(ArrayList list); } - interface Presenter extends ILoadMorePresenter { - void girlsImages(String url); + abstract class Presenter extends LoadMorePresenter { + public Presenter(@NonNull Context context, View view) { + super(context, view); + } + + abstract void girlsImages(String url); } } diff --git a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java b/app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java similarity index 95% rename from app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java rename to app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java index 3c777a56..c47d37cd 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/cure/CureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.girls.cure; +package com.gank.gankly.ui.cure; import android.app.ProgressDialog; import android.content.Context; @@ -14,12 +14,10 @@ import android.view.ViewGroup; import android.widget.TextView; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.bean.DailyMeiziBean; import com.gank.gankly.bean.GiftBean; import com.gank.gankly.listener.ItemClick; -import com.gank.gankly.mvp.source.remote.MeiziDataSource; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; import com.gank.gankly.ui.base.fragment.LazyFragment; @@ -42,7 +40,7 @@ public class CureFragment extends LazyFragment implements CureContract.View, ItemClick { @BindView(R.id.multiple_status_view) MultipleStatusView mMultipleStatusView; - @BindView(R.id.meizi_swipe_refresh) + @BindView(R.id.swipe_refresh) LySwipeRefreshLayout mSwipeRefreshLayout; private CureAdapter mCureAdapter; @@ -85,7 +83,7 @@ public void onLoadMore() { @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mPresenter = new CurePresenter(MeiziDataSource.getInstance(), this); +// mPresenter = new CurePresenter(MeiziDataSource.getInstance(), this); } @Override @@ -123,7 +121,7 @@ private void showLoadingDialog() { mDialog = new ProgressDialog(mActivity); } mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); - mDialog.setMessage(AppConfig.getAppString(R.string.loading_meizi_images)); + mDialog.setMessage(context.getString(R.string.loading_meizi_images)); mDialog.setIndeterminate(true); mDialog.setCanceledOnTouchOutside(true); mDialog.setOnCancelListener(dialog -> mPresenter.unSubscribe()); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/cure/CurePresenter.java b/app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java similarity index 88% rename from app/src/main/java/com/gank/gankly/ui/girls/cure/CurePresenter.java rename to app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java index 1597a6ba..8c168ce5 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/cure/CurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java @@ -1,8 +1,9 @@ -package com.gank.gankly.ui.girls.cure; +package com.gank.gankly.ui.cure; + +import android.content.Context; import com.gank.gankly.bean.DailyMeiziBean; import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.MeiziDataSource; import com.gank.gankly.utils.ListUtils; import com.socks.library.KLog; @@ -20,35 +21,36 @@ * Create by LingYan on 2016-10-26 */ -class CurePresenter extends FetchPresenter implements CureContract.Presenter { +class CurePresenter extends CureContract.Presenter { private static final String MEIZI_FIRST_URL = "http://www.meizitu.com/a/qingchun_3_"; private static final int LIMIT = 30; - private final MeiziDataSource mTask; + private MeiziDataSource mTask; private final CureContract.View mModelView; private ArrayList imagesList; private int max; - CurePresenter(MeiziDataSource task, CureContract.View view) { - mTask = task; + CurePresenter(Context context, CureContract.View view) { + super(context, view); +// mTask = task; mModelView = view; } - @Override + // @Override public void fetchNew() { - String url = getMeiziUrl(); - setFetchLimit(LIMIT); - fetchData(url); +// String url = getMeiziUrl(); +// setFetchLimit(LIMIT); +// fetchData(url); } - @Override + // @Override public void fetchMore() { - String url = getMeiziUrl(); - if (hasMore()) { - mModelView.showProgress(); - fetchData(url); - } +// String url = getMeiziUrl(); +// if (hasMore()) { +// mModelView.showProgress(); +// fetchData(url); +// } //empty } @@ -57,7 +59,7 @@ private void fetchData(String url) { .subscribe(new Observer() { @Override public void onComplete() { - setFetchPage(getFetchPage() + 1); +// setFetchPage(getFetchPage() + 1); mModelView.showContent(); mModelView.hideProgress(); } @@ -65,7 +67,7 @@ public void onComplete() { @Override public void onError(Throwable e) { KLog.e(e); - parseError(mModelView); +// parseError(mModelView); } @Override @@ -125,9 +127,9 @@ private void getImagesList(Document doc) { } } - private String getMeiziUrl() { - return MEIZI_FIRST_URL + getFetchPage() + ".html"; - } +// private String getMeiziUrl() { +// return MEIZI_FIRST_URL + getFetchPage() + ".html"; +// } private void getImages(String url) { mTask.fetchDailyDetailUrls(url) @@ -188,13 +190,13 @@ public void onNext(String url) { private void parseMeiZiTu(Document document) { if (document != null) { List list = getColumnList(document); - list = filterData(list, mModelView); +// list = filterData(list, mModelView); if (ListUtils.getSize(list) > 0) { - if(getFetchPage() >1){ - mModelView.appendItem(list); - }else { - mModelView.refillData(list); - } +// if (getFetchPage() > 1) { +// mModelView.appendItem(list); +// } else { +// mModelView.refillData(list); +// } } } } @@ -202,7 +204,7 @@ private void parseMeiZiTu(Document document) { private void parseDocument(Document document) { if (document != null) { List list = getDays(document); - list = filterData(list, mModelView); +// list = filterData(list, mModelView); if (ListUtils.getSize(list) > 0) { mModelView.refillData(list); } diff --git a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziAdapter.java b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziAdapter.java similarity index 98% rename from app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziAdapter.java rename to app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziAdapter.java index 5768f6cc..ccc51ab2 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziAdapter.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.girls.dailymeizi; +package com.gank.gankly.ui.dailymeizi; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; diff --git a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziContract.java b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziContract.java similarity index 59% rename from app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziContract.java rename to app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziContract.java index 642302f2..d2b42989 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziContract.java +++ b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziContract.java @@ -1,8 +1,11 @@ -package com.gank.gankly.ui.girls.dailymeizi; +package com.gank.gankly.ui.dailymeizi; + +import android.content.Context; +import android.support.annotation.NonNull; import com.gank.gankly.bean.DailyMeiziBean; import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; import java.util.ArrayList; @@ -10,7 +13,6 @@ /** * Create by LingYan on 2016-10-26 - * Email:137387869@qq.com */ public interface DailyMeiziContract { @@ -26,7 +28,11 @@ interface View extends SupportView { void openBrowseActivity(ArrayList list); } - interface Presenter extends ILoadMorePresenter { - void girlsImages(String url); + abstract class Presenter extends LoadMorePresenter { + public Presenter(@NonNull Context context, View view) { + super(context, view); + } + + abstract void girlsImages(String url); } } diff --git a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziFragment.java similarity index 94% rename from app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java rename to app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziFragment.java index 852b8fef..cf83ac6c 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziFragment.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.girls.dailymeizi; +package com.gank.gankly.ui.dailymeizi; import android.app.ProgressDialog; import android.content.Context; @@ -14,14 +14,12 @@ import android.view.ViewGroup; import android.widget.TextView; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; -import com.gank.gankly.rxjava.RxBus_; -import com.gank.gankly.rxjava.theme.ThemeEvent; import com.gank.gankly.bean.DailyMeiziBean; import com.gank.gankly.bean.GiftBean; import com.gank.gankly.listener.ItemClick; -import com.gank.gankly.mvp.source.remote.MeiziDataSource; +import com.gank.gankly.rxjava.RxBus_; +import com.gank.gankly.rxjava.theme.ThemeEvent; import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.gallery.GalleryActivity; import com.gank.gankly.ui.main.MainActivity; @@ -38,12 +36,11 @@ /** * 妹子每日更新 * Create by LingYan on 2016-07-01 - * Email:137387869@qq.com */ public class DailyMeiziFragment extends LazyFragment implements DailyMeiziContract.View, ItemClick { @BindView(R.id.multiple_status_view) MultipleStatusView mMultipleStatusView; - @BindView(R.id.meizi_swipe_refresh) + @BindView(R.id.swipe_refresh) LySwipeRefreshLayout mSwipeRefreshLayout; private DailyMeiziAdapter mDailyMeiziAdapter; @@ -85,7 +82,7 @@ public void onLoadMore() { @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mPresenter = new DailyMeiziPresenter(MeiziDataSource.getInstance(), this); +// mPresenter = new DailyMeiziPresenter(MeiziDataSource.getInstance(), this); } @Override @@ -123,7 +120,7 @@ private void showLoadingDialog() { mDialog = new ProgressDialog(mActivity); } mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); - mDialog.setMessage(AppConfig.getAppString(R.string.loading_meizi_images)); + mDialog.setMessage(context.getString(R.string.loading_meizi_images)); mDialog.setIndeterminate(true); mDialog.setCanceledOnTouchOutside(true); mDialog.setOnCancelListener(dialog -> mPresenter.unSubscribe()); diff --git a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziPresenter.java b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziPresenter.java similarity index 92% rename from app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziPresenter.java rename to app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziPresenter.java index b1a0a13c..3a864010 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/dailymeizi/DailyMeiziPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziPresenter.java @@ -1,8 +1,9 @@ -package com.gank.gankly.ui.girls.dailymeizi; +package com.gank.gankly.ui.dailymeizi; + +import android.content.Context; import com.gank.gankly.bean.DailyMeiziBean; import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.MeiziDataSource; import com.gank.gankly.utils.ListUtils; import com.socks.library.KLog; @@ -20,25 +21,25 @@ * Create by LingYan on 2016-10-26 */ -public class DailyMeiziPresenter extends FetchPresenter implements DailyMeiziContract.Presenter { +public class DailyMeiziPresenter extends DailyMeiziContract.Presenter { private static final String MEIZI_FIRST_URL = "http://m.mzitu.com/all"; - private final MeiziDataSource mTask; + private MeiziDataSource mTask; private final DailyMeiziContract.View mModelView; private ArrayList imagesList; private int max; - public DailyMeiziPresenter(MeiziDataSource task, DailyMeiziContract.View view) { - mTask = task; + public DailyMeiziPresenter(Context context, DailyMeiziContract.View view) { + super(context, view); mModelView = view; } - @Override +// @Override public void fetchNew() { - setFetchLimit(24); +// setFetchLimit(24); fetchData(MEIZI_FIRST_URL); } - @Override +// @Override public void fetchMore() { //empty } @@ -48,7 +49,7 @@ private void fetchData(String url) { .subscribe(new Observer() { @Override public void onComplete() { - setFetchPage(getFetchPage() + 1); +// setFetchPage(getFetchPage() + 1); mModelView.showContent(); mModelView.hideProgress(); } @@ -56,7 +57,7 @@ public void onComplete() { @Override public void onError(Throwable e) { KLog.e(e); - parseError(mModelView); +// parseError(mModelView); } @Override @@ -169,7 +170,7 @@ public void onNext(String url) { private void parseDocument(Document document) { if (document != null) { List list = getDays(document); - list = filterData(list, mModelView); +// list = filterData(list, mModelView); if (ListUtils.getSize(list) > 0) { mModelView.refillData(list); } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java index 62d4608f..b219068f 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java @@ -10,12 +10,11 @@ import android.util.TypedValue; import android.view.View; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; +import com.gank.gankly.butterknife.ButterKnifeFragment; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; import com.gank.gankly.ui.base.fragment.LazyFragment; -import com.gank.gankly.butterknife.ButterKnifeFragment; import com.gank.gankly.ui.discovered.jiandan.JiandanFragment; import com.gank.gankly.ui.discovered.more.DiscoveredAdapter; import com.gank.gankly.ui.discovered.more.DiscoveredMoreFragment; @@ -94,7 +93,7 @@ private void initTabLayout() { mTabLayout.setupWithViewPager(mViewPager); mTabLayout.setTabMode(TabLayout.MODE_FIXED); - mTabLayout.setSelectedTabIndicatorColor(AppConfig.getAppColor(R.color.white)); + mTabLayout.setSelectedTabIndicatorColor(context.getResources().getColor(R.color.white)); } private void refreshUi() { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java index 89e2c07b..5de01fd0 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java @@ -1,7 +1,10 @@ package com.gank.gankly.ui.discovered.jiandan; +import android.content.Context; +import android.support.annotation.NonNull; + import com.gank.gankly.bean.JianDanBean; -import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; import java.util.List; @@ -17,7 +20,10 @@ interface View extends SupportView { void appendMoreDate(List list); } - interface Presenter extends ILoadMorePresenter { + abstract class Presenter extends LoadMorePresenter { + public Presenter(@NonNull Context context, View view) { + super(context, view); + } } } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java index c6880761..c319ece3 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java @@ -16,7 +16,6 @@ import com.gank.gankly.bean.JianDanBean; import com.gank.gankly.config.Constants; import com.gank.gankly.listener.ItemClick; -import com.gank.gankly.mvp.source.remote.JiandanDataSource; import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.web.JiandanWebActivity; @@ -60,7 +59,7 @@ protected int getLayoutId() { @Override protected void initLazy() { mMultipleStatusView.showLoading(); - mPresenter.fetchNew(); +// mPresenter.fetchNew(); } @Override @@ -77,12 +76,12 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { - mPresenter.fetchNew(); +// mPresenter.fetchNew(); } @Override public void onLoadMore() { - mPresenter.fetchMore(); +// mPresenter.fetchMore(); } }); } @@ -90,7 +89,7 @@ public void onLoadMore() { @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mPresenter = new JiandanPresenter(JiandanDataSource.getInstance(), this); +// mPresenter = new JiandanPresenter(JiandanDataSource.getInstance(), this); } protected void callBackRefreshUi() { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java index 03fde359..61895574 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java @@ -1,9 +1,9 @@ package com.gank.gankly.ui.discovered.jiandan; +import android.content.Context; + import com.gank.gankly.bean.JianDanBean; -import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.JiandanDataSource; -import com.gank.gankly.utils.ListUtils; import com.socks.library.KLog; import org.jsoup.nodes.Document; @@ -22,17 +22,15 @@ * Create by LingYan on 2016-11-21 */ -public class JiandanPresenter extends FetchPresenter implements JiandanContract.Presenter { +public class JiandanPresenter extends JiandanContract.Presenter { private static final String BASE_URL = "http://i.jandan.net/page/"; private static final int LIMIT = 24; private JiandanDataSource mJiandanDataSource; private JiandanContract.View mView; - public JiandanPresenter(JiandanDataSource jiandanDataSource, JiandanContract.View view) { - mJiandanDataSource = jiandanDataSource; - mView = view; - setFetchLimit(LIMIT); + public JiandanPresenter(Context context, JiandanContract.View view) { + super(context, view); } @Override @@ -56,8 +54,8 @@ public void onError(Throwable e) { @Override public void onComplete() { mView.showContent(); - int nextPage = getFetchPage() + 1; - setFetchPage(nextPage); +// int nextPage = getFetchPage() + 1; +// setFetchPage(nextPage); } @Override @@ -67,14 +65,14 @@ public void onSubscribe(Disposable d) { @Override public void onNext(List list) { - list = filterData(list, mView); - if (ListUtils.getSize(list) > 0) { - if (getFetchPage() > 1) { - mView.appendMoreDate(list); - } else { - mView.refillData(list); - } - } +// list = filterData(list, mView); +// if (ListUtils.getSize(list) > 0) { +// if (getFetchPage() > 1) { +// mView.appendMoreDate(list); +// } else { +// mView.refillData(list); +// } +// } } }); } @@ -106,16 +104,16 @@ private List mapResult(Document doc) { return list; } - @Override - public void fetchNew() { - fetchData(getInitPage()); - } - - @Override - public void fetchMore() { - if (hasMore()) { - mView.showProgress(); - fetchData(getFetchPage()); - } - } +// @Override +// public void fetchNew() { +// fetchData(getInitPage()); +// } +// +// @Override +// public void fetchMore() { +// if (hasMore()) { +// mView.showProgress(); +// fetchData(getFetchPage()); +// } +// } } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredMoreFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredMoreFragment.java index d96f116d..4582946e 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredMoreFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredMoreFragment.java @@ -15,7 +15,6 @@ /** * Create by LingYan on 2016-12-02 - * Email:137387869@qq.com */ public class DiscoveredMoreFragment extends LazyFragment { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java index 4f8b5f15..33bcc3a6 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java @@ -13,7 +13,6 @@ import com.gank.gankly.bean.JianDanBean; import com.gank.gankly.config.Constants; import com.gank.gankly.listener.ItemClick; -import com.gank.gankly.mvp.source.remote.TeamBlogDataSource; import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.discovered.technology.TechnologyContract; import com.gank.gankly.ui.main.MainActivity; @@ -30,7 +29,6 @@ /** * Create by LingYan on 2016-11-23 - * Email:137387869@qq.com */ public class TeamBlogFragment extends LazyFragment implements TechnologyContract.View, ItemClick { @@ -53,7 +51,7 @@ public void onAttach(Context context) { @Override protected void initLazy() { showProgress(); - mPresenter.fetchNew(); +// mPresenter.fetchNew(); } @Override @@ -65,7 +63,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mPresenter = new TeamBlogPresenter(TeamBlogDataSource.getInstance(), this); +// mPresenter = new TeamBlogPresenter(TeamBlogDataSource.getInstance(), this); } @Override @@ -83,12 +81,12 @@ protected void initValues() { mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { - mPresenter.fetchNew(); +// mPresenter.fetchNew(); } @Override public void onLoadMore() { - mPresenter.fetchMore(); +// mPresenter.fetchMore(); } }); } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java index eb5ccf9a..fb45eca2 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java @@ -1,7 +1,8 @@ package com.gank.gankly.ui.discovered.teamBlog; +import android.content.Context; + import com.gank.gankly.bean.JianDanBean; -import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.TeamBlogDataSource; import com.gank.gankly.ui.discovered.technology.TechnologyContract; import com.socks.library.KLog; @@ -19,18 +20,12 @@ * Create by LingYan on 2016-11-23 */ -public class TeamBlogPresenter extends FetchPresenter implements TechnologyContract.Presenter { +public class TeamBlogPresenter extends TechnologyContract.Presenter { private TeamBlogDataSource mTask; private TechnologyContract.View mView; - TeamBlogPresenter(TeamBlogDataSource task, TechnologyContract.View view) { - mTask = task; - mView = view; - } - - @Override - public void fetchNew() { - fetchData(getInitPage()); + TeamBlogPresenter(Context context, TechnologyContract.View view) { + super(context, view); } private void fetchData(int page) { @@ -39,8 +34,6 @@ private void fetchData(int page) { public void onComplete() { mView.showContent(); mView.hideProgress(); - int nextPage = getFetchPage() + 1; - setFetchPage(nextPage); } @Override @@ -57,13 +50,6 @@ public void onSubscribe(Disposable d) { @Override public void onNext(Document document) { List list = parseDocument(document); - if (list.size() > 0) { - if (getFetchPage() > 1) { - mView.appendData(list); - } else { - mView.refillData(list); - } - } } }); } @@ -90,14 +76,6 @@ private List parseDocument(Document document) { return jiandanBeen; } - @Override - public void fetchMore() { - if (hasMore()) { - mView.showProgress(); - fetchData(getFetchPage()); - } - } - @Override public void unSubscribe() { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyContract.java index 32aa5152..465db05d 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyContract.java @@ -1,14 +1,16 @@ package com.gank.gankly.ui.discovered.technology; +import android.content.Context; +import android.support.annotation.NonNull; + import com.gank.gankly.bean.JianDanBean; -import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; import java.util.List; /** * Create by LingYan on 2016-11-23 - * Email:137387869@qq.com */ public interface TechnologyContract { @@ -18,7 +20,10 @@ interface View extends SupportView { void appendData(List list); } - interface Presenter extends ILoadMorePresenter { + abstract class Presenter extends LoadMorePresenter { + public Presenter(@NonNull Context context, View view) { + super(context, view); + } } } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java index d4324a7a..270c5d0f 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java @@ -13,7 +13,6 @@ import com.gank.gankly.bean.JianDanBean; import com.gank.gankly.config.Constants; import com.gank.gankly.listener.ItemClick; -import com.gank.gankly.mvp.source.remote.TechnologyDataSource; import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.web.normal.WebActivity; @@ -55,7 +54,7 @@ public void onAttach(Context context) { @Override protected void initLazy() { showProgress(); - mPresenter.fetchNew(); +// mPresenter.fetchNew(); } @Override @@ -67,7 +66,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mPresenter = new TechnologyPresenter(TechnologyDataSource.getInstance(), this); +// mPresenter = new TechnologyPresenter(TechnologyDataSource.getInstance(), this); } private void initValues() { @@ -80,12 +79,12 @@ private void initValues() { mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { - mPresenter.fetchNew(); +// mPresenter.fetchNew(); } @Override public void onLoadMore() { - mPresenter.fetchMore(); +// mPresenter.fetchMore(); } }); } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyPresenter.java index f2288465..2217e5cd 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyPresenter.java @@ -1,7 +1,8 @@ package com.gank.gankly.ui.discovered.technology; +import android.content.Context; + import com.gank.gankly.bean.JianDanBean; -import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.TechnologyDataSource; import com.socks.library.KLog; @@ -16,22 +17,20 @@ /** * Create by LingYan on 2016-11-23 - * Email:137387869@qq.com */ -public class TechnologyPresenter extends FetchPresenter implements TechnologyContract.Presenter { +public class TechnologyPresenter extends TechnologyContract.Presenter { private TechnologyDataSource mTask; private TechnologyContract.View mView; - public TechnologyPresenter(TechnologyDataSource task, TechnologyContract.View view) { - mTask = task; - mView = view; + public TechnologyPresenter(Context context, TechnologyContract.View view) { + super(context, view); } - @Override - public void fetchNew() { - fetchData(getInitPage()); - } +// @Override +// public void fetchNew() { +// fetchData(getInitPage()); +// } private void fetchData(int page) { mTask.fetchData(page).subscribe(new Observer() { @@ -45,8 +44,8 @@ public void onError(Throwable e) { public void onComplete() { mView.showContent(); mView.hideProgress(); - int nextPage = getFetchPage() + 1; - setFetchPage(nextPage); +// int nextPage = getFetchPage() + 1; +// setFetchPage(nextPage); } @Override @@ -56,14 +55,14 @@ public void onSubscribe(Disposable d) { @Override public void onNext(Document document) { - List list = parseDocument(document); - if (list.size() > 0) { - if (getFetchPage() > 1) { - mView.appendData(list); - } else { - mView.refillData(list); - } - } +// List list = parseDocument(document); +// if (list.size() > 0) { +// if (getFetchPage() > 1) { +// mView.appendData(list); +// } else { +// mView.refillData(list); +// } +// } } }); } @@ -90,13 +89,13 @@ private List parseDocument(Document document) { return jiandanBeen; } - @Override - public void fetchMore() { - if (hasMore()) { - mView.showProgress(); - fetchData(getFetchPage()); - } - } +// @Override +// public void fetchMore() { +// if (hasMore()) { +// mView.showProgress(); +// fetchData(getFetchPage()); +// } +// } @Override public void unSubscribe() { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java index 8b32d51d..bde45121 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java @@ -1,8 +1,10 @@ package com.gank.gankly.ui.discovered.video; +import android.content.Context; import android.ly.business.domain.Gank; +import android.support.annotation.NonNull; -import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; import java.util.List; @@ -18,8 +20,11 @@ interface View extends SupportView { void appendData(List list); } - interface Presenter extends ILoadMorePresenter { + abstract class Presenter extends LoadMorePresenter { + public Presenter(@NonNull Context context, View view) { + super(context, view); + } } } diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java index 6f9bdcc8..245e0794 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java @@ -17,7 +17,6 @@ import com.gank.gankly.R; import com.gank.gankly.listener.MeiziOnClick; -import com.gank.gankly.mvp.source.remote.GankDataSource; import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.web.WebVideoViewActivity; @@ -73,12 +72,12 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { - mPresenter.fetchNew(); +// mPresenter.fetchNew(); } @Override public void onLoadMore() { - mPresenter.fetchMore(); +// mPresenter.fetchMore(); } }); } @@ -86,11 +85,11 @@ public void onLoadMore() { @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mPresenter = new VideoPresenter(GankDataSource.getInstance(), this); +// mPresenter = new VideoPresenter(GankDataSource.getInstance(), this); } private void onLoading() { - mPresenter.fetchNew(); +// mPresenter.fetchNew(); } protected void callBackRefreshUi() { @@ -132,7 +131,7 @@ public void onRefresh() { @Override protected void initLazy() { - mPresenter.fetchNew(); +// mPresenter.fetchNew(); } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java index 7e8dddc8..94543012 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoPresenter.java @@ -1,10 +1,10 @@ package com.gank.gankly.ui.discovered.video; +import android.content.Context; import android.ly.business.domain.Gank; import com.gank.gankly.bean.GankResult; import com.gank.gankly.config.MeiziArrayList; -import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.GankDataSource; import com.socks.library.KLog; @@ -18,31 +18,20 @@ * Create by LingYan on 2017-01-03 */ -public class VideoPresenter extends FetchPresenter implements VideoContract.Presenter { +public class VideoPresenter extends VideoContract.Presenter { private GankDataSource mTask; private VideoContract.View mModelView; - VideoPresenter(GankDataSource task, VideoContract.View view) { - mTask = task; - mModelView = view; - } - - @Override - public void fetchNew() { - fetchData(getInitPage()); - } - - @Override - public void fetchMore() { - fetchData(getFetchPage()); + VideoPresenter(Context context, VideoContract.View view) { + super(context, view); } private void fetchData(int page) { Observable observable; if (MeiziArrayList.getInstance().isOneItemsEmpty()) { - observable = mTask.fetchVideoAndImages(page, getFetchLimit()); + observable = mTask.fetchVideoAndImages(page, 20); } else { - observable = mTask.fetchVideo(page, getFetchLimit()); + observable = mTask.fetchVideo(page, 20); } observable.subscribe(new Observer() { @@ -53,25 +42,16 @@ public void onSubscribe(Disposable d) { @Override public void onNext(GankResult gankResult) { - List list = filterData(gankResult.getResults(), mModelView); - if (list != null) { - if (page == 1) { - mModelView.refillData(list); - } else { - mModelView.appendData(list); - } - } + List list = gankResult.getResults(), mModelView; } @Override public void onError(Throwable e) { KLog.e(e); - parseError(mModelView); } @Override public void onComplete() { - setFetchPage(page + 1); } }); } diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java index 8fa8857d..4ef255d2 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java @@ -41,7 +41,6 @@ import com.gank.gankly.R; import com.gank.gankly.bean.GiftBean; import com.gank.gankly.config.MeiziArrayList; -import com.gank.gankly.mvp.source.remote.GankDataSource; import com.gank.gankly.ui.base.activity.BaseActivity; import com.gank.gankly.utils.CrashUtils; import com.gank.gankly.utils.ListUtils; @@ -75,7 +74,6 @@ /** * 相册 * Create by LingYan on 2016-4-25 - * Email:137387869@qq.com */ public class GalleryActivity extends BaseActivity implements ViewPager.OnPageChangeListener, GalleryContract.View { @@ -138,7 +136,7 @@ protected int getContentId() { protected void initTheme() { super.initTheme(); setTheme(R.style.BrowseThemeBase); - mPresenter = new GalleryPresenter(GankDataSource.getInstance(), this); +// mPresenter = new GalleryPresenter(GankDataSource.getInstance(), this); } @Override @@ -150,7 +148,7 @@ public void onPageSelected(int position) { if (EXTRA_GANK.equals(mViewsModel)) { boolean isFetch = isFetch(); if (isFetch) { - mPresenter.fetchMore(); +// mPresenter.fetchMore(); } } @@ -193,7 +191,7 @@ private void getGiftList() { if (size > 5) { int point = size - 5; if (mPosition >= point) { - mPresenter.fetchMore(); +// mPresenter.fetchMore(); } } } else { @@ -496,7 +494,7 @@ private boolean isEmpty() { } @Override - public void showShortToast(String string) { + public void shortToast(String string) { } @@ -583,7 +581,7 @@ private void setWallPaper(final String url, final FragmentActivity activity) { .subscribe(new Observer() { @Override public void onError(Throwable e) { - ToastUtils.showToast(R.string.meizi_wallpaper_failure); + ToastUtils.showToast(getBaseContext(), R.string.meizi_wallpaper_failure); KLog.e(e); CrashUtils.crashReport(e); } @@ -626,7 +624,7 @@ private void revokeWallpaper() { } finally { mBitmap = null; } - ToastUtils.showToast(R.string.meizi_revoke_success); + ToastUtils.showToast(getBaseContext(), R.string.meizi_revoke_success); }) .show(); } @@ -650,7 +648,7 @@ private void saveImagePath(String imgUrl, final boolean isShare) { public void onError(Throwable e) { KLog.e(e); CrashUtils.crashReport(e); - ToastUtils.showToast(e.getMessage()); + ToastUtils.showToast(getBaseContext(), e.getMessage()); } @Override @@ -667,14 +665,14 @@ public void onSubscribe(Disposable d) { public void onNext(Uri uri) { String imgPath = getImagePath(); if (TextUtils.isEmpty(imgPath)) { - ToastUtils.showToast(R.string.tip_img_path_error); + ToastUtils.showToast(getBaseContext(), R.string.tip_img_path_error); return; } if (isShare) { ShareUtils.shareSingleImage(GalleryActivity.this, uri); } else { String msg = String.format(getString(R.string.meizi_picture_save_path), imgPath); - ToastUtils.showToast(msg); + ToastUtils.showToast(getBaseContext(), msg); } } }); diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java index f2aa7cb8..ea712953 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java @@ -1,15 +1,16 @@ package com.gank.gankly.ui.gallery; +import android.content.Context; import android.ly.business.domain.Gank; +import android.support.annotation.NonNull; -import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; import java.util.List; /** * Create by LingYan on 2017-01-16 - * Email:137387869@qq.com */ public interface GalleryContract { @@ -20,7 +21,10 @@ interface View extends SupportView { void sysNumText(); } - interface Presenter extends ILoadMorePresenter { + abstract class Presenter extends LoadMorePresenter { + public Presenter(@NonNull Context context, View view) { + super(context, view); + } } } diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java index dfaa6d77..90f2ef8b 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java @@ -15,7 +15,6 @@ /** * 图片浏览 * Create by LingYan on 2016-12-19 - * Email:137387869@qq.com */ public class GalleryFragment extends SupportFragment implements ProgressImageView.ImageViewOnClick { public static final String IMAGE_URL = "Image_Url"; diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java index 7c950668..d28487e9 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPresenter.java @@ -1,45 +1,33 @@ package com.gank.gankly.ui.gallery; -import android.ly.business.domain.Gank; +import android.content.Context; import com.gank.gankly.bean.GankResult; import com.gank.gankly.config.MeiziArrayList; -import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.GankDataSource; import com.gank.gankly.utils.CrashUtils; -import com.gank.gankly.utils.ListUtils; import com.socks.library.KLog; -import java.util.List; - import io.reactivex.Observer; import io.reactivex.disposables.Disposable; /** * Create by LingYan on 2017-01-16 - * Email:137387869@qq.com */ -public class GalleryPresenter extends FetchPresenter implements GalleryContract.Presenter { +public class GalleryPresenter extends GalleryContract.Presenter { private GankDataSource mTask; private GalleryContract.View mModelView; private boolean isFetch; - public GalleryPresenter(GankDataSource task, GalleryContract.View view) { - mTask = task; - mModelView = view; - } - - @Override - public void fetchNew() { - + public GalleryPresenter(Context context, GalleryContract.View view) { + super(context, view); } - @Override public void fetchMore() { if (!isFetch) { int nextPage = MeiziArrayList.getInstance().getPage() + 1; - mTask.fetchWelfare(nextPage, getFetchLimit()) + mTask.fetchWelfare(nextPage,20) .subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { @@ -48,19 +36,19 @@ public void onSubscribe(Disposable d) { @Override public void onNext(GankResult gankResult) { - List list = filterData(gankResult.getResults(), mModelView); - if (ListUtils.getSize(list) > 0) { - mModelView.appendData(list); - mModelView.sysNumText(); - MeiziArrayList.getInstance().addImages(gankResult.getResults(), nextPage); - } +// List list = filterData(gankResult.getResults(), mModelView); +// if (ListUtils.getSize(list) > 0) { +// mModelView.appendData(list); +// mModelView.sysNumText(); +// MeiziArrayList.getInstance().addImages(gankResult.getResults(), nextPage); +// } } @Override public void onError(Throwable e) { KLog.e(e); CrashUtils.crashReport(e); - parseError(mModelView); +// parseError(mModelView); } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java index a8c52c11..fbad87af 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java @@ -1,25 +1,18 @@ package com.gank.gankly.ui.girls; -import android.content.Context; -import android.content.res.Resources; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; -import android.util.TypedValue; import android.view.View; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.config.Constants; -import com.gank.gankly.rxjava.RxBus_; -import com.gank.gankly.rxjava.theme.ThemeEvent; import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.base.fragment.SupportFragment; -import com.gank.gankly.ui.girls.cure.CureFragment; -import com.gank.gankly.ui.girls.pure.PureFragment; -import com.gank.gankly.ui.main.MainActivity; +import com.gank.gankly.ui.cure.CureFragment; +import com.gank.gankly.ui.pure.PureFragment; import java.util.ArrayList; import java.util.List; @@ -34,10 +27,10 @@ public class GirlsFragment extends SupportFragment implements ViewPager.OnPageChangeListener { @BindView(R.id.girl_tabLayout) TabLayout mTabLayout; + @BindView(R.id.girl_view_pager) ViewPager mViewPager; - private MainActivity mActivity; private GirlsAdapter mPagerAdapter; private Disposable mDisposable; @@ -66,11 +59,6 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat mViewPager.setCurrentItem(0); initTabLayout(); - - mDisposable = RxBus_.getInstance().toObservable(ThemeEvent.class) - .subscribe(themeEvent -> { - refreshUi(); - }); } @Override @@ -85,15 +73,7 @@ private void initTabLayout() { mTabLayout.setupWithViewPager(mViewPager); mTabLayout.setTabMode(TabLayout.MODE_FIXED); - mTabLayout.setSelectedTabIndicatorColor(AppConfig.getAppColor(R.color.white)); - } - - private void refreshUi() { - TypedValue typedValue = new TypedValue(); - Resources.Theme theme = mActivity.getTheme(); - theme.resolveAttribute(R.attr.colorPrimary, typedValue, true); - int background = typedValue.data; - mTabLayout.setBackgroundColor(background); + mTabLayout.setSelectedTabIndicatorColor(context.getResources().getColor(R.color.white)); } @Override @@ -107,10 +87,4 @@ public void onPageSelected(int position) { @Override public void onPageScrollStateChanged(int state) { } - - @Override - public void onAttach(Context context) { - super.onAttach(context); - mActivity = (MainActivity) context; - } } \ No newline at end of file diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryAdapter.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryAdapter.java index eb5c85ec..3366bf40 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryAdapter.java @@ -20,7 +20,6 @@ /** * Create by LingYan on 2016-10-31 - * Email:137387869@qq.com */ public class BrowseHistoryAdapter extends RecyclerView.Adapter { diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryContract.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryContract.java index 3e0f82dc..9bd3730c 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryContract.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryContract.java @@ -1,14 +1,16 @@ package com.gank.gankly.ui.history; +import android.content.Context; +import android.support.annotation.NonNull; + import com.gank.gankly.data.entity.ReadHistory; -import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; import java.util.List; /** * Create by LingYan on 2016-10-31 - * Email:137387869@qq.com */ public interface BrowseHistoryContract { @@ -18,7 +20,11 @@ interface View extends SupportView { void appendData(List history); } - interface Presenter extends ILoadMorePresenter { - void deleteHistory(long id); + abstract class Presenter extends LoadMorePresenter { + public Presenter(@NonNull Context context, View view) { + super(context, view); + } + + abstract void deleteHistory(long id); } } diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java index 66dc3116..3d579dc2 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java @@ -15,7 +15,6 @@ import com.gank.gankly.R; import com.gank.gankly.data.entity.ReadHistory; import com.gank.gankly.listener.ItemClick; -import com.gank.gankly.mvp.source.LocalDataSource; import com.gank.gankly.ui.base.fragment.SupportFragment; import com.gank.gankly.ui.more.MoreActivity; import com.gank.gankly.ui.web.normal.WebActivity; @@ -29,7 +28,6 @@ /** * Create by LingYan on 2016-10-31 - * Email:137387869@qq.com */ public class BrowseHistoryFragment extends SupportFragment implements BrowseHistoryContract.View, ItemClick { @@ -90,12 +88,12 @@ public void onClick(int pos) { mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { - mPresenter.fetchNew(); +// mPresenter.fetchNew(); } @Override public void onLoadMore() { - mPresenter.fetchMore(); +// mPresenter.fetchMore(); } }); } @@ -103,8 +101,8 @@ public void onLoadMore() { @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mPresenter = new BrowseHistoryPresenter(LocalDataSource.getInstance(), this); - mPresenter.fetchNew(); +// mPresenter = new BrowseHistoryPresenter(LocalDataSource.getInstance(), this); +// mPresenter.fetchNew(); } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryPresenter.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryPresenter.java index 29a7ffbb..5718973c 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryPresenter.java @@ -1,79 +1,74 @@ package com.gank.gankly.ui.history; -import com.gank.gankly.data.entity.ReadHistory; -import com.gank.gankly.mvp.FetchPresenter; +import android.content.Context; + import com.gank.gankly.mvp.source.LocalDataSource; -import com.gank.gankly.utils.ListUtils; import com.socks.library.KLog; -import java.util.List; - import io.reactivex.Observer; import io.reactivex.disposables.Disposable; /** * Create by LingYan on 2016-10-31 - * Email:137387869@qq.com */ -public class BrowseHistoryPresenter extends FetchPresenter implements BrowseHistoryContract.Presenter { +public class BrowseHistoryPresenter extends BrowseHistoryContract.Presenter { private LocalDataSource mTask; private BrowseHistoryContract.View mModelView; - public BrowseHistoryPresenter(LocalDataSource task, BrowseHistoryContract.View view) { - mTask = task; - mModelView = view; + public BrowseHistoryPresenter(Context context, BrowseHistoryContract.View view) { + super(context, view); } - @Override +// @Override public void fetchNew() { - setOffSetPage(0); - setHasMore(true); +// setOffSetPage(0); +// setHasMore(true); fetch(); } - @Override +// @Override public void fetchMore() { - if (hasMore()) { - mModelView.showProgress(); - fetch(); - } +// if (hasMore()) { +// mModelView.showProgress(); +// fetch(); +// } } private void fetch() { - int offset = getOffSet(); - mTask.selectReadHistory(offset, getFetchLimit()) - .subscribe(new Observer>() { - @Override - public void onError(Throwable e) { - KLog.e(e); - } - - @Override - public void onComplete() { - mModelView.hideProgress(); - int nextOffsetPage = getOffSetPage() + 1; - setOffSetPage(nextOffsetPage); - } - - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onNext(List readHistories) { - List list = filterDataBase(readHistories, mModelView); - int size = ListUtils.getSize(list); - if (size > 0) { - if (getOffSetPage() == 0) { - mModelView.refillData(list); - } else { - mModelView.appendData(list); - } - } - } - }); +// int offset = getOffSet(); +// mTask.selectReadHistory(offset, getFetchLimit()) +// .subscribe(new Observer>() { +// @Override +// public void onError(Throwable e) { +// KLog.e(e); +// } +// +// @Override +// public void onComplete() { +// mModelView.hideProgress(); +// int nextOffsetPage = getOffSetPage() + 1; +// setOffSetPage(nextOffsetPage); +// } +// +// @Override +// public void onSubscribe(Disposable d) { +// +// } +// +// @Override +// public void onNext(List readHistories) { +// List list = filterDataBase(readHistories, mModelView); +// int size = ListUtils.getSize(list); +// if (size > 0) { +// if (getOffSetPage() == 0) { +// mModelView.refillData(list); +// } else { +// mModelView.appendData(list); +// } +// } +// } +// }); } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java index a91a6054..0957252d 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java @@ -6,13 +6,13 @@ import android.lectcoding.ui.adapter.Item; import android.ly.business.domain.Gank; import android.support.v7.widget.RecyclerView; +import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.bumptech.glide.Glide; import com.gank.gankly.R; import com.gank.gankly.butterknife.ButterKnifeHolder; -import com.gank.gankly.listener.ItemCallBack; import com.gank.gankly.utils.DateUtils; import java.util.ArrayList; @@ -30,7 +30,7 @@ class IosAdapter extends BaseAdapter { private Context context; - private ItemCallBack itemCallBack; + private ItemCallback itemCallBack; IosAdapter(Context context) { this.context = context; @@ -56,8 +56,8 @@ public void onChanged() { public ButterKnifeHolder onCreateViewHolder(ViewGroup parent, int viewType) { ButterKnifeHolder defaultHolder; switch (viewType) { - case TextHolder.LAYOUT: - defaultHolder = new TextHolder(parent, itemCallBack); + case NormalViewHolder.LAYOUT: + defaultHolder = new NormalViewHolder(parent, itemCallBack); break; default: defaultHolder = null; @@ -70,8 +70,8 @@ public ButterKnifeHolder onCreateViewHolder(ViewGroup parent, int viewType) { public void onBindViewHolder(ButterKnifeHolder holder, int position) { final Item item = itemList.get(position); switch (holder.getItemViewType()) { - case TextHolder.LAYOUT: - ((TextHolder) holder).bindItem((TextItem) item); + case NormalViewHolder.LAYOUT: + ((NormalViewHolder) holder).bindHolder((TextItem) item); break; } } @@ -99,7 +99,6 @@ void fillItems(List results) { public void appendItems(List results) { resultsBeans.addAll(results); - this.notifyDataSetChanged(); } @Override @@ -112,11 +111,11 @@ public void destroy() { unregisterAdapterDataObserver(mObserver); } - public void setOnItemClickListener(ItemCallBack itemCallBack) { + public void setOnItemClickListener(ItemCallback itemCallBack) { this.itemCallBack = itemCallBack; } - static class TextHolder extends ButterKnifeHolder { + static class NormalViewHolder extends ButterKnifeHolder { static final int LAYOUT = R.layout.adapter_ios; @BindView(R.id.author_name) TextView authorName; @@ -127,30 +126,30 @@ static class TextHolder extends ButterKnifeHolder { @BindView(R.id.title) TextView title; - ItemCallBack itemCallBack; + ItemCallback itemCallBack; - TextHolder(ViewGroup parent, ItemCallBack itemCallBack) { + NormalViewHolder(ViewGroup parent, ItemCallback itemCallBack) { super(parent, LAYOUT); this.itemCallBack = itemCallBack; } @Override - public void bindItem(TextItem item) { + public void bindHolder(TextItem item) { final Gank resultsBean = item.getResultsBean(); time.setText(item.getTime()); title.setText(resultsBean.desc); - authorName.setText(resultsBean.getWho()); + authorName.setText(resultsBean.who); itemView.setOnClickListener(v -> { if (itemCallBack != null) { - itemCallBack.onClick(v, getAdapterPosition(), resultsBean); + itemCallBack.onItemClick(v, resultsBean); } }); } } - class TextItem extends BasicItem { + static class TextItem extends BasicItem { private Gank resultsBean; TextItem(Gank resultsBean) { @@ -168,7 +167,11 @@ public String getTime() { @Override public int getViewType() { - return TextHolder.LAYOUT; + return NormalViewHolder.LAYOUT; } } + + public interface ItemCallback { + void onItemClick(View view, Gank gank); + } } diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java b/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java index 646bd233..f15a21ca 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java @@ -5,24 +5,14 @@ import android.support.annotation.NonNull; import com.gank.gankly.mvp.base.LoadMorePresenter; -import com.gank.gankly.mvp.base.SupportView; - -import java.util.List; +import com.gank.gankly.mvp.base.PageView; /** * Create by LingYan on 2016-12-20 - * Email:137387869@qq.com */ public interface IosContract { - interface View extends SupportView { - void refreshIosSuccess(List list); - - void refreshIosFailure(String msg); - - void appendIosSuccess(List list); - - void appendIosFailure(String msg); + interface View extends PageView { } abstract class Presenter extends LoadMorePresenter { diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java index 9537db54..612e38bd 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java @@ -5,14 +5,12 @@ import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.design.widget.Snackbar; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import com.gank.gankly.R; import com.gank.gankly.config.Constants; -import com.gank.gankly.listener.ItemCallBack; import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.web.normal.WebActivity; import com.gank.gankly.widget.LySwipeRefreshLayout; @@ -37,7 +35,7 @@ public class IosFragment extends LazyFragment implements IosContract.View { private IosAdapter iosAdapter; private IosContract.Presenter iosPresenter; - private final AtomicBoolean first = new AtomicBoolean(true); + private final AtomicBoolean isFirst = new AtomicBoolean(true); @Override protected int getLayoutId() { @@ -88,16 +86,13 @@ public void onLoadMore() { } }; - private final ItemCallBack mItemCallBack = (view, position, object) -> { - if (object instanceof Gank) { - Gank bean = (Gank) object; - Bundle bundle = new Bundle(); - bundle.putString(WebActivity.TITLE, bean.desc); - bundle.putString(WebActivity.URL, bean.url); - bundle.putString(WebActivity.AUTHOR, bean.who); - bundle.putString(WebActivity.TYPE, Constants.IOS); - WebActivity.startWebActivity(getBaseContext(), bundle); - } + private final IosAdapter.ItemCallback mItemCallBack = (view, gank) -> { + Bundle bundle = new Bundle(); + bundle.putString(WebActivity.TITLE, gank.desc); + bundle.putString(WebActivity.URL, gank.url); + bundle.putString(WebActivity.AUTHOR, gank.who); + bundle.putString(WebActivity.TYPE, Constants.IOS); + WebActivity.startWebActivity(getBaseContext(), bundle); }; @Override @@ -116,9 +111,11 @@ public void showEmpty() { @Override public void showProgress() { - if (first.get()) { + if (isFirst.get()) { if (multipleStatusView != null) { - multipleStatusView.showLoading(); + if (swipeRefresh != null && !swipeRefresh.isRefreshing()) { + multipleStatusView.showLoading(); + } } } @@ -140,7 +137,7 @@ public void hideProgress() { @Override public void hasNoMoreDate() { - showSnackBar(getBaseContext().getString(R.string.loading_all_over)); + shortToast(getBaseContext().getString(R.string.loading_all_over)); } @Override @@ -157,37 +154,6 @@ public void showDisNetWork() { } } - @Override - public void refreshIosSuccess(List list) { - if (iosAdapter != null) { - iosAdapter.fillItems(list); - } - } - - @Override - public void refreshIosFailure(String msg) { - showSnackBar(msg); - } - - private void showSnackBar(String msg) { - if (swipeRefresh != null) { - Snackbar.make(swipeRefresh, msg, Snackbar.LENGTH_LONG) - .setAction(R.string.retry, v -> loadMoreIos()); - } - } - - @Override - public void appendIosSuccess(List list) { - if (iosAdapter != null) { - iosAdapter.appendItems(list); - } - } - - @Override - public void appendIosFailure(String msg) { - showSnackBar(msg); - } - public static IosFragment newInstance() { IosFragment fragment = new IosFragment(); Bundle args = new Bundle(); @@ -215,15 +181,38 @@ public void onDestroyView() { } } -// protected void callBackRefreshUi() { -// ThemeColor themeColor = new ThemeColor(this); -// RecyclerViewColor mRecycler = new RecyclerViewColor(recyclerView); -// mRecycler.setItemColor(R.id.title, R.attr.baseAdapterItemTextColor); -// mRecycler.setItemColor(R.id.time, R.attr.textSecondaryColor); -// -// themeColor.setBackgroundResource(R.attr.themeBackground, recyclerView); -// themeColor.swipeRefresh(swipeRefresh); -// themeColor.recyclerViewColor(mRecycler); -// themeColor.start(); -// } + @Override + public void refreshSuccess(List list) { + showContent(); + + if (isFirst.compareAndSet(true, false)) { + if (list == null || list.isEmpty()) { + showEmpty(); + return; + } + } + + if (iosAdapter != null) { + iosAdapter.fillItems(list); + iosAdapter.notifyDataSetChanged(); + } + } + + @Override + public void refreshFailure(String msg) { + shortToast(msg); + } + + @Override + public void appendSuccess(List list) { + if (iosAdapter != null) { + iosAdapter.appendItems(list); + iosAdapter.notifyDataSetChanged(); + } + } + + @Override + public void appendFailure(String msg) { + shortToast(msg); + } } diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java index baeea574..f8a66483 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java @@ -1,11 +1,11 @@ package com.gank.gankly.ui.ios; import android.content.Context; -import android.ly.business.domain.Gank; +import android.ly.business.api.GankServer; import android.ly.business.domain.PageConfig; -import android.ly.business.domain.PageEntity; import android.support.annotation.NonNull; +import com.gank.gankly.mvp.subseribe.PageSubscribe; import com.leftcoding.rxbus.RxApiManager; import java.util.concurrent.atomic.AtomicBoolean; @@ -16,121 +16,49 @@ */ public class IosPresenter extends IosContract.Presenter { - private static final String TAG = "ios_presenter"; - private static final int INIT_PAGE = 1; - - private PageEntity mPageResult; - private AtomicBoolean first = new AtomicBoolean(true); - - private PageConfig mPageConfig; + private PageConfig pageConfig; + private final AtomicBoolean destroyFlag = new AtomicBoolean(false); public IosPresenter(@NonNull Context context, IosContract.View view) { super(context, view); - mPageConfig = new PageConfig(); + pageConfig = new PageConfig(); } @Override void refreshIos() { - fetchData(INIT_PAGE); + pageConfig.curPage = 1; + fetchData(); } @Override void appendIos() { - if (mPageResult != null) { - fetchData(mPageResult.nextPage); - } + fetchData(); } - private void fetchData(final int page) { -// mPageConfig.mCurPage = page; - -// GankServerManager.with(context) -// .ios(page, mPageConfig.mLimit) -// .doOnSubscribe(disposable -> { -// if (isViewLife()) { -// view.showProgress(); -// } -// }) -// .doFinally(() -> { -// if (isViewLife()) { -// view.hideProgress(); -// } -// }) -// .flatMap(new Function>, ObservableSource>>() { -// @Override -// public ObservableSource> apply(@io.reactivex.annotations.NonNull Response> response) throws Exception { -// if (response != null) { -// if (response.isSuccessful()) { -// if (response.body() != null) { -// return Observable.create(e -> e.onNext(response.body())); -// } -// } -// } -// return Observable.error(new Throwable()); -// } -// }) -// .map(new Function, PageResult>() { -// @Override -// public PageResult apply(@io.reactivex.annotations.NonNull PageResult result) throws Exception { -// if (result != null) { -// return result; -// } -// return null; -// } -// }) -// .flatMap(new Function, ObservableSource>>() { -// @Override -// public ObservableSource> apply(@io.reactivex.annotations.NonNull PageResult result) throws Exception { -// if (result != null && result.results != null) { -// return Observable.create(e -> e.onNext(result)); -// } -// return Observable.error(new Throwable()); -// } -// }) -// .subscribe(new Observer>() { -// @Override -// public void onSubscribe(Disposable d) { -// -// } -// -// @Override -// public void onNext(PageResult result) { -// mPageResult = result; -// mPageResult.nextPage = getNextPage(); -// -// if (isViewLife()) { -// if (isFirst()) { -// view.refreshIosSuccess(result.results); -// } else { -// view.appendIosSuccess(result.results); -// } -// } -// } -// -// @Override -// public void onError(Throwable e) { -// KLog.e(e); -// } -// -// @Override -// public void onComplete() { -// -// } -// }); + private void fetchData() { + if (destroyFlag.get()) { + return; + } + GankServer.get(context) + .ios(pageConfig.curPage, pageConfig.limit) + .doOnSubscribe(disposable -> { + if (isViewLife()) { + view.showProgress(); + } + }) + .doFinally(() -> { + if (isViewLife()) { + view.hideProgress(); + } + }) + .subscribe(new PageSubscribe(requestTag, view, pageConfig)); } @Override public void unSubscribe() { + if (destroyFlag.compareAndSet(false, true)) { + RxApiManager.get().clear(requestTag); + } super.unSubscribe(); - mPageResult = null; - RxApiManager.get().clear(TAG); - } - - private boolean isFirst() { - return first.get(); } - -// private int getNextPage() { -// return mPageConfig.mCurPage + 1; -// } } diff --git a/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java b/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java index 677c6b43..4f633716 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java @@ -12,7 +12,6 @@ import android.util.TypedValue; import android.view.View; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.bean.CheckVersion; import com.gank.gankly.config.Constants; @@ -101,7 +100,7 @@ private void initTabLayout() { mTabLayout.setupWithViewPager(mViewPager); mTabLayout.setTabMode(TabLayout.MODE_FIXED); - mTabLayout.setSelectedTabIndicatorColor(AppConfig.getAppColor(R.color.white)); + mTabLayout.setSelectedTabIndicatorColor(context.getResources().getColor(R.color.white)); } /** diff --git a/app/src/main/java/com/gank/gankly/ui/main/MainActivity.java b/app/src/main/java/com/gank/gankly/ui/main/MainActivity.java index ae5fc8d3..c40ca136 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/MainActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/main/MainActivity.java @@ -151,7 +151,7 @@ public boolean onKeyDown(int keyCode, KeyEvent event) { return false; } else if ((System.currentTimeMillis() - mKeyDownTime) > 2000) { mKeyDownTime = System.currentTimeMillis(); - ToastUtils.shortBottom(R.string.app_again_out); + ToastUtils.shortBottom(getBaseContext(), R.string.app_again_out); return false; } else { finish(); diff --git a/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java b/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java index 5e541a1a..6b869c5b 100644 --- a/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java @@ -14,11 +14,10 @@ import android.view.View; import android.widget.TextView; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; +import com.gank.gankly.butterknife.ButterKnifeFragment; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; -import com.gank.gankly.butterknife.ButterKnifeFragment; import com.gank.gankly.ui.main.MainActivity; import com.gank.gankly.ui.more.MoreActivity; import com.gank.gankly.utils.GanklyPreferences; @@ -38,7 +37,6 @@ /** * 我的 * Create by LingYan on 2016-09-21 - * Email:137387869@qq.com */ public class MineFragment extends ButterKnifeFragment { @@ -78,8 +76,8 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat } private void selectTheme(boolean isChecked) { - AppConfig.setIsNight(isChecked); - GanklyPreferences.putBoolean(IS_NIGHT, isChecked); +// AppConfig.setIsNight(isChecked); + GanklyPreferences.putBoolean(context, IS_NIGHT, isChecked); if (isChecked) { mActivity.setTheme(R.style.AppTheme_Night); @@ -113,7 +111,7 @@ public void apply(@NonNull LSwitch view, int index) { ButterKnife.apply(mTextViewList, new ButterKnife.Action() { @Override public void apply(@NonNull TextView view, int index) { - view.setTextColor(AppConfig.getAppColor(itemTextColor)); + view.setTextColor(context.getResources().getColor(itemTextColor)); } }); @@ -126,8 +124,8 @@ public void apply(@NonNull LinearLayoutCompat view, int index) { } private void selectItemSwitch() { - boolean isNight = AppConfig.isNight(); - themeSwitch.setChecked(isNight); +// boolean isNight = AppConfig.isNight(); +// themeSwitch.setChecked(isNight); } @@ -156,7 +154,7 @@ void onSetting() { @OnClick(R.id.mine_rl_night) void onNight() { - isNight = !AppConfig.isNight(); +// isNight = !AppConfig.isNight(); selectTheme(isNight); } diff --git a/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java b/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java index 36751491..0d856a1b 100644 --- a/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java @@ -12,7 +12,6 @@ import android.support.v7.widget.Toolbar; import android.view.View; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.ui.base.fragment.SupportFragment; @@ -48,7 +47,7 @@ public void onAttach(Context context) { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - mCollapsingToolbarLayout.setTitle(AppConfig.getAppString(R.string.navigation_about)); + mCollapsingToolbarLayout.setTitle(getContext().getString(R.string.navigation_about)); mActivity.setSupportActionBar(mToolbar); ActionBar bar = mActivity.getSupportActionBar(); if (bar != null) { diff --git a/app/src/main/java/com/gank/gankly/ui/more/MoreActivity.java b/app/src/main/java/com/gank/gankly/ui/more/MoreActivity.java index fda7c4db..d390f342 100644 --- a/app/src/main/java/com/gank/gankly/ui/more/MoreActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/more/MoreActivity.java @@ -10,7 +10,6 @@ /** * Create by LingYan on 2016-09-21 - * Email:137387869@qq.com */ public class MoreActivity extends BaseActivity { diff --git a/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java b/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java index 5af1df48..8be1d427 100644 --- a/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java @@ -10,7 +10,6 @@ import android.view.View; import android.widget.TextView; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.bean.CheckVersion; import com.gank.gankly.config.Preferences; @@ -36,7 +35,6 @@ /** * 设置 * Create by LingYan on 2016-05-10 - * Email:137387869@qq.com */ public class SettingFragment extends SupportFragment implements ILauncher { public static final String TAG = "SettingFragment"; @@ -90,11 +88,11 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat } mToolbar.setNavigationOnClickListener(v -> mActivity.onBackPressed()); - String cacheSize = GlideCatchUtil.getInstance().getCacheSize(); + String cacheSize = GlideCatchUtil.getInstance().getCacheSize(context); itemCleanCache.setTextSummary(mActivity.getResources().getString(R.string.setting_picture_cache, cacheSize)); - itemCheckSwitch.setSwitchListener(isCheck -> GanklyPreferences.putBoolean(Preferences.SETTING_AUTO_CHECK, isCheck)); - itemOnlyWifi.setSwitchListener(isCheck -> GanklyPreferences.putBoolean(Preferences.SETTING_WIFI_ONLY, isCheck)); + itemCheckSwitch.setSwitchListener(isCheck -> GanklyPreferences.putBoolean(context, Preferences.SETTING_AUTO_CHECK, isCheck)); + itemOnlyWifi.setSwitchListener(isCheck -> GanklyPreferences.putBoolean(context, Preferences.SETTING_WIFI_ONLY, isCheck)); } @Override @@ -105,7 +103,7 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { private void initPreferences() { - String summary = AppConfig.getAppResources().getString(R.string.setting_current_version, + String summary = context.getString(R.string.setting_current_version, AppUtils.getVersionName(mActivity)); itemUpdate.setTextSummary(summary); itemUpdate.setTextName(R.string.setting_check_version); @@ -114,9 +112,9 @@ private void initPreferences() { } private void selectItemSwitch() { - boolean isAutoCheck = GanklyPreferences.getBoolean(Preferences.SETTING_AUTO_CHECK, true); + boolean isAutoCheck = GanklyPreferences.getBoolean(context, Preferences.SETTING_AUTO_CHECK, true); itemCheckSwitch.setSwitchChecked(isAutoCheck); - boolean isOnlyWifi = GanklyPreferences.getBoolean(Preferences.SETTING_WIFI_ONLY, false); + boolean isOnlyWifi = GanklyPreferences.getBoolean(context, Preferences.SETTING_WIFI_ONLY, false); itemOnlyWifi.setSwitchChecked(isOnlyWifi); } @@ -127,7 +125,7 @@ public void callUpdate(CheckVersion checkVersion) { @Override public void noNewVersion() { - ToastUtils.showToast(R.string.tip_no_new_version); + ToastUtils.showToast(context, R.string.tip_no_new_version); } private void showVersionDialog(String content) { @@ -146,7 +144,7 @@ public void cancel() { @Override public void submit() { mVersionDialog.dismiss(); - ToastUtils.showToast(R.string.update_downing); + ToastUtils.showToast(context, R.string.update_downing); mPresenter.downloadApk(); } }); @@ -158,7 +156,7 @@ private void createDialog() { if (mProgressDialog == null) { mProgressDialog = new ProgressDialog(mActivity); } - mProgressDialog.setMessage(AppConfig.getAppString(R.string.dialog_checking)); + mProgressDialog.setMessage(context.getString(R.string.dialog_checking)); mProgressDialog.show(); } @@ -190,7 +188,7 @@ void onClickAbout() { @OnClick(R.id.setting_item_text_clean_cache) void onClickCache() { - GlideCatchUtil.getInstance().clearCacheDiskSelf(); + GlideCatchUtil.getInstance().clearCacheDiskSelf(context); itemCleanCache.setTextSummary(mActivity.getResources().getString(R.string.setting_picture_cache_string)); } diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureAdapter.java b/app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java similarity index 98% rename from app/src/main/java/com/gank/gankly/ui/girls/pure/PureAdapter.java rename to app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java index a4dfe973..d2f07693 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.girls.pure; +package com.gank.gankly.ui.pure; import android.content.Context; import android.support.v7.widget.RecyclerView; diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureContract.java b/app/src/main/java/com/gank/gankly/ui/pure/PureContract.java similarity index 95% rename from app/src/main/java/com/gank/gankly/ui/girls/pure/PureContract.java rename to app/src/main/java/com/gank/gankly/ui/pure/PureContract.java index 78c1fb6f..fb178e6a 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureContract.java +++ b/app/src/main/java/com/gank/gankly/ui/pure/PureContract.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.girls.pure; +package com.gank.gankly.ui.pure; import android.content.Context; import android.support.annotation.NonNull; diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java b/app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java similarity index 56% rename from app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java rename to app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java index 1703e7fe..2a3c8535 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java @@ -1,31 +1,19 @@ -package com.gank.gankly.ui.girls.pure; +package com.gank.gankly.ui.pure; import android.app.ProgressDialog; -import android.content.Context; import android.content.Intent; -import android.content.res.Resources; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.ActivityOptionsCompat; -import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; -import android.util.TypedValue; import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.bean.GiftBean; import com.gank.gankly.listener.ItemClick; -import com.gank.gankly.rxjava.RxBus_; -import com.gank.gankly.rxjava.theme.ThemeEvent; import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.gallery.GalleryActivity; -import com.gank.gankly.ui.main.MainActivity; -import com.gank.gankly.utils.DisplayUtils; -import com.gank.gankly.utils.StyleUtils; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; @@ -36,23 +24,19 @@ import butterknife.BindView; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; /** * 清纯妹子 * Create by LingYan on 2016-05-17 - * Email:137387869@qq.com */ public class PureFragment extends LazyFragment implements ItemClick, PureContract.View { - @BindView(R.id.meizi_swipe_refresh) - LySwipeRefreshLayout mSwipeRefreshLayout; + @BindView(R.id.swipe_refresh) + LySwipeRefreshLayout swipeRefresh; + @BindView(R.id.multiple_status_view) - MultipleStatusView mMultipleStatusView; + MultipleStatusView multipleStatusView; - private RecyclerView mRecyclerView; private PureAdapter mAdapter; - private MainActivity mActivity; - private Disposable mDisposable; private ArrayList mImageCountList = new ArrayList<>(); private ProgressDialog mDialog; @@ -73,9 +57,6 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat initRecycler(); mAdapter.setOnItemClickListener(this); - - mDisposable = RxBus_.getInstance().toObservable(ThemeEvent.class) - .subscribe(themeEvent -> changeUi()); } @Override @@ -91,46 +72,18 @@ protected void initLazy() { } private void initRefresh() { - mMultipleStatusView.showLoading(); + multipleStatusView.showLoading(); mPresenter.refreshPure(); } - private void changeUi() { - TypedValue typedValue = new TypedValue(); - Resources.Theme theme = mActivity.getTheme(); - theme.resolveAttribute(R.attr.baseAdapterItemBackground, typedValue, true); - int background = typedValue.data; - TypedValue textValue = new TypedValue(); - theme.resolveAttribute(R.attr.baseAdapterItemTextColor, textValue, true); - int textColor = textValue.data; - theme.resolveAttribute(R.attr.themeBackground, textValue, true); - int recyclerColor = textValue.data; - mRecyclerView.setBackgroundColor(recyclerColor); - - int childCount = mRecyclerView.getChildCount(); - for (int childIndex = 0; childIndex < childCount; childIndex++) { - ViewGroup childView = (ViewGroup) mRecyclerView.getChildAt(childIndex); - TextView title = (TextView) childView.findViewById(R.id.goods_txt_title); - title.setTextColor(textColor); - View rlView = childView.findViewById(R.id.goods_rl_title); - rlView.setBackgroundColor(background); - } - - StyleUtils.clearRecyclerViewItem(mRecyclerView); - StyleUtils.changeSwipeRefreshLayout(mSwipeRefreshLayout); - } - private void initRecycler() { - mAdapter = new PureAdapter(mActivity); - mSwipeRefreshLayout.setAdapter(mAdapter); + mAdapter = new PureAdapter(context); + swipeRefresh.setAdapter(mAdapter); - mRecyclerView = mSwipeRefreshLayout.getRecyclerView(); - mSwipeRefreshLayout.setLayoutManager(new StaggeredGridLayoutManager(2, + swipeRefresh.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); - float leftPadding = DisplayUtils.dp2px(8);// because StaggeredGridLayoutManager left margin - mRecyclerView.setPadding((int) leftPadding, 0, 0, 0); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { + swipeRefresh.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { @@ -147,11 +100,11 @@ public void onLoadMore() { private void showDialog() { if (mDialog == null) { - mDialog = new ProgressDialog(mActivity); + mDialog = new ProgressDialog(context); } mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); - mDialog.setMessage(AppConfig.getAppString(R.string.loading_meizi_images)); + mDialog.setMessage(context.getString(R.string.loading_meizi_images)); mDialog.setIndeterminate(true); mDialog.setCanceledOnTouchOutside(true); mDialog.setOnCancelListener(dialog -> mPresenter.unSubscribe()); @@ -180,12 +133,6 @@ public List getList() { return mImageCountList; } - @Override - public void onAttach(Context context) { - super.onAttach(context); - this.mActivity = (MainActivity) context; - } - @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -195,16 +142,16 @@ public void onCreate(@Nullable Bundle savedInstanceState) { @Override public void showProgress() { - mSwipeRefreshLayout.setRefreshing(true); + swipeRefresh.setRefreshing(true); } @Override public void hideProgress() { - if (mSwipeRefreshLayout != null) { - mSwipeRefreshLayout.setRefreshing(false); + if (swipeRefresh != null) { + swipeRefresh.setRefreshing(false); } - if (mMultipleStatusView != null) { - mMultipleStatusView.showContent(); + if (multipleStatusView != null) { + multipleStatusView.showContent(); } } @@ -215,27 +162,27 @@ public void hasNoMoreDate() { @Override public void showContent() { - mMultipleStatusView.showContent(); + multipleStatusView.showContent(); } @Override public void showEmpty() { - mMultipleStatusView.showEmpty(); + multipleStatusView.showEmpty(); } @Override public void showDisNetWork() { - mMultipleStatusView.showDisNetwork(); + multipleStatusView.showDisNetwork(); } @Override public void showError() { - mMultipleStatusView.showError(); + multipleStatusView.showError(); } private void showLoading() { - if (mMultipleStatusView != null) { - mMultipleStatusView.showLoading(); + if (multipleStatusView != null) { + multipleStatusView.showLoading(); } } @@ -252,13 +199,13 @@ public void appendData(List list) { @Override public void openGalleryActivity(ArrayList list) { Bundle bundle = new Bundle(); - Intent intent = new Intent(mActivity, GalleryActivity.class); + Intent intent = new Intent(context, GalleryActivity.class); bundle.putString(GalleryActivity.EXTRA_MODEL, GalleryActivity.EXTRA_GIFT); intent.putExtra(GalleryActivity.EXTRA_LIST, list); intent.putExtras(bundle); - ActivityOptionsCompat compat = ActivityOptionsCompat.makeCustomAnimation(mActivity, + ActivityOptionsCompat compat = ActivityOptionsCompat.makeCustomAnimation(context, R.anim.alpha_in, R.anim.alpha_out); - mActivity.startActivity(intent, compat.toBundle()); + context.startActivity(intent, compat.toBundle()); } @Override @@ -271,8 +218,5 @@ public void disLoadingDialog() { @Override public void onDestroyView() { super.onDestroyView(); - if (mDisposable != null && !mDisposable.isDisposed()) { - mDisposable.dispose(); - } } } diff --git a/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java b/app/src/main/java/com/gank/gankly/ui/pure/PurePresenter.java similarity index 99% rename from app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java rename to app/src/main/java/com/gank/gankly/ui/pure/PurePresenter.java index d24457f0..1bf4f078 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/pure/PurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/pure/PurePresenter.java @@ -1,4 +1,4 @@ -package com.gank.gankly.ui.girls.pure; +package com.gank.gankly.ui.pure; import android.content.Context; import android.ly.business.domain.PageConfig; diff --git a/app/src/main/java/com/gank/gankly/ui/splash/SplashActivity.java b/app/src/main/java/com/gank/gankly/ui/splash/SplashActivity.java index c713f4c9..25e16067 100644 --- a/app/src/main/java/com/gank/gankly/ui/splash/SplashActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/splash/SplashActivity.java @@ -22,7 +22,6 @@ /** * Create by LingYan on 2016-06-01 - * Email:137387869@qq.com */ public class SplashActivity extends BaseActivity { @BindView(R.id.splash_main) diff --git a/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java b/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java index b75761e2..802b3305 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java @@ -18,7 +18,6 @@ import android.widget.FrameLayout; import android.widget.ProgressBar; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.config.Constants; import com.gank.gankly.data.entity.UrlCollect; @@ -157,7 +156,7 @@ protected void initValues() { mFromWay = bundle.getInt(FROM_WAY); } - mUrlCollectDao = AppConfig.getDaoSession().getUrlCollectDao(); +// mUrlCollectDao = AppConfig.getDaoSession().getUrlCollectDao(); List list = mUrlCollectDao.queryBuilder().where(UrlCollectDao.Properties.Url.eq(mUrl)).list(); if (!ListUtils.isListEmpty(list)) { isInitCollect = true; @@ -355,7 +354,7 @@ public boolean onOptionsItemSelected(MenuItem item) { return true; case R.id.welfare_copy_url: AppUtils.copyText(this, mUrl); - ToastUtils.showToast(R.string.tip_copy_success); + ToastUtils.showToast(getBaseContext(), R.string.tip_copy_success); return true; case R.id.welfare_refresh: mWebView.reload(); @@ -385,7 +384,7 @@ private void openBrowser(String url) { if (intent.resolveActivity(JiandanWebActivity.this.getPackageManager()) != null) { JiandanWebActivity.this.startActivity(intent); } else { - ToastUtils.showToast(R.string.web_open_failed); + ToastUtils.showToast(getBaseContext(), R.string.web_open_failed); } } diff --git a/app/src/main/java/com/gank/gankly/ui/web/WebVideoViewActivity.java b/app/src/main/java/com/gank/gankly/ui/web/WebVideoViewActivity.java index 7c5cbe65..ee22484c 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/WebVideoViewActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/web/WebVideoViewActivity.java @@ -62,7 +62,7 @@ protected void initViews() { if (!TextUtils.isEmpty(mUrl)) { mWebView.loadUrl(mUrl); } else { - ToastUtils.showToast(R.string.tip_server_error); + ToastUtils.showToast(getBaseContext(), R.string.tip_server_error); } } diff --git a/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java b/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java index 5e2925d2..5369fce2 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java @@ -1,6 +1,5 @@ package com.gank.gankly.ui.web.normal; -import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.net.Uri; @@ -15,10 +14,10 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.view.ViewParent; import android.widget.FrameLayout; import android.widget.ProgressBar; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.config.Constants; import com.gank.gankly.data.entity.ReadHistory; @@ -29,7 +28,6 @@ import com.gank.gankly.utils.CircularAnimUtils; import com.gank.gankly.utils.ShareUtils; import com.gank.gankly.utils.ToastUtils; -import com.socks.library.KLog; import com.tencent.smtt.export.external.interfaces.IX5WebChromeClient; import com.tencent.smtt.sdk.CookieSyncManager; import com.tencent.smtt.sdk.ValueCallback; @@ -82,7 +80,7 @@ public class WebActivity extends BaseActivity implements WebContract.View { private ValueCallback uploadFile; @Override - public void showShortToast(String string) { + public void shortToast(String string) { } @@ -110,17 +108,16 @@ protected void initPresenter() { @Override protected void initTheme() { super.initTheme(); - if (AppConfig.isNight()) { - setTheme(R.style.AppTheme_Night_NoActionBar); - } else { - setTheme(R.style.AppTheme_light_NoActionBar); - } +// if (AppConfig.isNight()) { +// setTheme(R.style.AppTheme_Night_NoActionBar); +// } else { +// setTheme(R.style.AppTheme_light_NoActionBar); +// } } - @SuppressLint("SetJavaScriptEnabled") @Override protected void initViews() { - mWebView = new WebView(this, null); + mWebView = new WebView(getApplicationContext(), null); mWebParent.addView(mWebView, new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, @@ -245,7 +242,7 @@ public boolean onOptionsItemSelected(MenuItem item) { isCollect = !isCollect; mPresenter.collectAction(isCollect); - showSnackbar(mView, resText, AppConfig.getAppColor(resColor)); + showSnackbar(mView, resText, getResources().getColor(resColor)); switchCollectIcon(isCollect); return true; case R.id.welfare_share: @@ -253,7 +250,7 @@ public boolean onOptionsItemSelected(MenuItem item) { return true; case R.id.welfare_copy_url: AppUtils.copyText(this, mWebView.getUrl()); - ToastUtils.showToast(R.string.tip_copy_success); + ToastUtils.showToast(getBaseContext(), R.string.tip_copy_success); return true; case R.id.welfare_refresh: mWebView.reload(); @@ -287,7 +284,7 @@ private void openBrowser(String url) { if (intent.resolveActivity(WebActivity.this.getPackageManager()) != null) { WebActivity.this.startActivity(intent); } else { - ToastUtils.showToast(R.string.web_open_failed); + ToastUtils.showToast(getBaseContext(), R.string.web_open_failed); } } @@ -392,7 +389,6 @@ public void onHideCustomView() { @Override public boolean onShowFileChooser(WebView arg0, ValueCallback arg1, WebChromeClient.FileChooserParams arg2) { - KLog.e("onShowFileChooser"); return super.onShowFileChooser(arg0, arg1, arg2); } @@ -409,23 +405,6 @@ public void openFileChooser(ValueCallback uploadFile, String acceptType, St @Override public boolean onJsAlert(WebView arg0, String arg1, String arg2, com.tencent.smtt.export.external.interfaces.JsResult arg3) { - /** - * 这里写入你自定义的window alert - */ - // AlertDialog.Builder builder = new Builder(getContext()); - // builder.setTitle("X5内核"); - // builder.setPositiveButton("确定", new - // DialogInterface.OnClickListener() { - // - // @Override - // public void onClick(DialogInterface dialog, int which) { - // dialog.dismiss(); - // } - // }); - // builder.show(); - // arg3.confirm(); - // return true; - KLog.d("setX5webview = null"); return super.onJsAlert(null, "www.baidu.com", "aa", arg3); } @@ -468,9 +447,17 @@ protected void onStop() { @Override protected void onDestroy() { if (mWebView != null) { - mWebView.destroy(); + ViewParent viewParent = mWebView.getParent(); + if (viewParent != null) { + ((ViewGroup) viewParent).removeView(mWebView); + } + mWebView.stopLoading(); + mWebView.getSettings().setJavaScriptEnabled(false); + mWebView.clearView(); mWebView.clearFormData(); mWebView.clearHistory(); + mWebView.removeAllViews(); + mWebView.destroy(); mWebView = null; } super.onDestroy(); // All you have to do is destroy() the WebView before Activity finishes diff --git a/app/src/main/java/com/gank/gankly/ui/web/normal/WebContract.java b/app/src/main/java/com/gank/gankly/ui/web/normal/WebContract.java index efab94f4..3c8fe343 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/normal/WebContract.java +++ b/app/src/main/java/com/gank/gankly/ui/web/normal/WebContract.java @@ -9,7 +9,6 @@ /** * Create by LingYan on 2016-10-27 - * Email:137387869@qq.com */ public interface WebContract { diff --git a/app/src/main/java/com/gank/gankly/ui/web/normal/WebPresenter.java b/app/src/main/java/com/gank/gankly/ui/web/normal/WebPresenter.java index 39fb6163..b92fa08e 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/normal/WebPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/web/normal/WebPresenter.java @@ -24,7 +24,6 @@ /** * Create by LingYan on 2016-10-27 - * Email:137387869@qq.com */ public class WebPresenter implements WebContract.Presenter { diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java index f9115c62..60b3dd82 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareAdapter.java @@ -1,6 +1,5 @@ package com.gank.gankly.ui.welfare; -import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.ly.business.domain.Gank; @@ -42,29 +41,30 @@ */ public class WelfareAdapter extends RecyclerView.Adapter { private List mResults; - private Activity mActivity; private LayoutInflater inflater; - private int mScreenWidth = AppUtils.getDisplayWidth() / 2; - private int mScreenHeight = AppUtils.getDisplayWidth() / 2; + private int mScreenWidth; + private int mScreenHeight; private ArrayMap heights = new ArrayMap<>(); private ItemCallBack itemCallBack; - private Context mContext; + private Context context; public void setMeiZiOnClick(ItemCallBack itemCallBack) { this.itemCallBack = itemCallBack; } - public WelfareAdapter(Activity activity) { + public WelfareAdapter(Context context) { setHasStableIds(true); - inflater = LayoutInflater.from(activity); - mActivity = activity; + this.context = context; mResults = new ArrayList<>(); + inflater = LayoutInflater.from(context); + mScreenWidth = AppUtils.getDisplayWidth(context) / 2; + mScreenHeight = AppUtils.getDisplayWidth(context) / 2; } @Override public GoodsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - mContext = parent.getContext(); + context = parent.getContext(); View view = inflater.inflate(R.layout.adapter_meizi, parent, false); return new GoodsViewHolder(view); } @@ -74,7 +74,7 @@ public void onBindViewHolder(final GoodsViewHolder holder, int position) { final Gank bean = mResults.get(position); final String url = bean.url; RequestBuilder requestBuilder = ImageLoaderUtil.getInstance() - .glideAsBitmap(mContext, url); + .glideAsBitmap(context, url); requestBuilder .listener(new RequestListener() { @@ -121,7 +121,7 @@ public boolean onResourceReady(Bitmap resource, Object model, Target tar } holder.imgMeizi.showLoading(); ImageLoaderUtil.getInstance() - .loadAsImage(mContext, url) + .loadAsImage(context, url) .apply(new RequestOptions() .fitCenter() ) @@ -150,7 +150,7 @@ public boolean onResourceReady(Bitmap resource, Object model, Target tar @Override public void onViewRecycled(GoodsViewHolder holder) { super.onViewRecycled(holder); - Glide.get(mActivity).clearMemory();//view recycled,clear image request + Glide.get(context).clearMemory();//view recycled,clear image request holder.mImageView.setImageBitmap(null); } @@ -235,7 +235,7 @@ class GoodsViewHolder extends RecyclerView.ViewHolder { public GoodsViewHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); - mImageView = new ImageView(mContext); + mImageView = new ImageView(context); mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imgMeizi.setFrameLayout(mImageView); } diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java index 041ce266..6f3c88c1 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java @@ -1,18 +1,19 @@ package com.gank.gankly.ui.welfare; +import android.content.Context; import android.ly.business.domain.Gank; +import android.support.annotation.NonNull; -import com.gank.gankly.mvp.ILoadMorePresenter; +import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; import java.util.List; /** * Create by LingYan on 2016-12-23 - * Email:137387869@qq.com */ -public class WelfareContract { +public interface WelfareContract { interface View extends SupportView { void refreshData(List list); @@ -23,7 +24,10 @@ interface View extends SupportView { void appendWelfareFailure(String msg); } - interface Presenter extends ILoadMorePresenter { + public abstract class Presenter extends LoadMorePresenter { + public Presenter(@NonNull Context context, View view) { + super(context, view); + } } } diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java index a7069a1c..74ff6690 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java @@ -13,10 +13,8 @@ import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.View; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.gank.gankly.listener.ItemCallBack; -import com.gank.gankly.mvp.source.remote.GankDataSource; import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.gallery.GalleryActivity; import com.gank.gankly.ui.main.MainActivity; @@ -89,7 +87,7 @@ public void onLoadMore() { @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mPresenter = new WelfarePresenter(GankDataSource.getInstance(), this); +// mPresenter = new WelfarePresenter(GankDataSource.getInstance(), this); } @Override @@ -101,7 +99,7 @@ protected void initLazy() { @Override public void hasNoMoreDate() { Snackbar.make(mSwipeRefreshLayout, R.string.tip_no_more_load, Snackbar.LENGTH_LONG) - .setActionTextColor(AppConfig.getAppColor(R.color.Blue)) + .setActionTextColor(context.getResources().getColor(R.color.Blue)) .show(); } @@ -119,11 +117,11 @@ public void onClick(View view, int position, Object object) { }; private void fetchNew() { - mPresenter.fetchNew(); +// mPresenter.fetchNew(); } private void fetchMore() { - mPresenter.fetchMore(); +// mPresenter.fetchMore(); } @Override @@ -194,7 +192,7 @@ public void appendWelfareFailure(String msg) { private void showSnackbar(String msg) { if (mSwipeRefreshLayout != null) { Snackbar.make(mSwipeRefreshLayout, msg, Snackbar.LENGTH_LONG) - .setActionTextColor(AppConfig.getAppColor(R.color.Blue)) + .setActionTextColor(context.getResources().getColor(R.color.Blue)) .setAction(R.string.retry, v -> fetchMore()).show(); } } diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java index 1bfe7a0e..40142698 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java @@ -1,15 +1,11 @@ package com.gank.gankly.ui.welfare; -import android.ly.business.domain.Gank; +import android.content.Context; import com.gank.gankly.bean.GankResult; -import com.gank.gankly.config.MeiziArrayList; -import com.gank.gankly.mvp.FetchPresenter; import com.gank.gankly.mvp.source.remote.GankDataSource; import com.socks.library.KLog; -import java.util.List; - import io.reactivex.Observer; import io.reactivex.disposables.Disposable; @@ -17,22 +13,21 @@ * Create by LingYan on 2016-12-23 */ -public class WelfarePresenter extends FetchPresenter implements WelfareContract.Presenter { +public class WelfarePresenter extends WelfareContract.Presenter { private WelfareContract.View mModelView; private GankDataSource mTask; - WelfarePresenter(GankDataSource task, WelfareContract.View view) { - mTask = task; - mModelView = view; + WelfarePresenter(Context context, WelfareContract.View view) { + super(context, view); } - @Override + // @Override public void fetchNew() { - fetchData(getInitPage()); +// fetchData(getInitPage()); } private void fetchData(final int page) { - mTask.fetchWelfare(page, getFetchLimit()) + mTask.fetchWelfare(page, 20) .subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { @@ -41,36 +36,36 @@ public void onSubscribe(Disposable d) { @Override public void onNext(GankResult gankResult) { - List list = filterData(gankResult.getResults(), mModelView); - if (list != null) { - if (page == 1) { - mModelView.refreshData(list); - } else { - mModelView.appendData(list); - } - MeiziArrayList.getInstance().addImages(list, page); - } +// List list = filterData(gankResult.getResults(), mModelView); +// if (list != null) { +// if (page == 1) { +// mModelView.refreshData(list); +// } else { +// mModelView.appendData(list); +// } +// MeiziArrayList.getInstance().addImages(list, page); +// } } @Override public void onError(Throwable e) { KLog.e(e); - parseError(mModelView); +// parseError(mModelView); } @Override public void onComplete() { - setFetchPage(page + 1); +// setFetchPage(page + 1); } }); } - @Override + // @Override public void fetchMore() { - if (hasMore()) { - mModelView.showProgress(); - fetchData(getFetchPage()); - } +// if (hasMore()) { +// mModelView.showProgress(); +// fetchData(getFetchPage()); +// } } @Override diff --git a/app/src/main/java/com/gank/gankly/utils/AppUtils.java b/app/src/main/java/com/gank/gankly/utils/AppUtils.java index 28214359..130f641f 100644 --- a/app/src/main/java/com/gank/gankly/utils/AppUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/AppUtils.java @@ -8,7 +8,6 @@ import android.os.Build; import android.util.DisplayMetrics; -import com.gank.gankly.AppConfig; import com.socks.library.KLog; import java.util.List; @@ -71,13 +70,13 @@ public static String getVersionName(Context context) { return appVersionName; } - public static int getDisplayWidth() { - DisplayMetrics dm = AppConfig.getGankContext().getResources().getDisplayMetrics(); + public static int getDisplayWidth(Context context) { + DisplayMetrics dm = context.getResources().getDisplayMetrics(); return dm.widthPixels; } - public static int getDisplayHeight() { - DisplayMetrics dm = AppConfig.getGankContext().getResources().getDisplayMetrics(); + public static int getDisplayHeight(Context context) { + DisplayMetrics dm = context.getResources().getDisplayMetrics(); return dm.heightPixels; } diff --git a/app/src/main/java/com/gank/gankly/utils/DisplayUtils.java b/app/src/main/java/com/gank/gankly/utils/DisplayUtils.java index 345c6770..c2e73e0b 100644 --- a/app/src/main/java/com/gank/gankly/utils/DisplayUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/DisplayUtils.java @@ -8,17 +8,15 @@ import android.content.Context; -import com.gank.gankly.AppConfig; - public class DisplayUtils { - public static float px2dp(final float px) { - return px / AppConfig.getAppResources().getDisplayMetrics().density; + public static float px2dp(Context context, final float px) { + return px / context.getResources().getDisplayMetrics().density; } - public static float dp2px(final float dp) { - return dp * AppConfig.getAppResources().getDisplayMetrics().density; + public static float dp2px(Context context, final float dp) { + return dp * context.getResources().getDisplayMetrics().density; } /** diff --git a/app/src/main/java/com/gank/gankly/utils/GanklyPreferences.java b/app/src/main/java/com/gank/gankly/utils/GanklyPreferences.java index f133c6c4..f4bcdf6d 100644 --- a/app/src/main/java/com/gank/gankly/utils/GanklyPreferences.java +++ b/app/src/main/java/com/gank/gankly/utils/GanklyPreferences.java @@ -3,28 +3,24 @@ import android.content.Context; import android.content.SharedPreferences; -import com.gank.gankly.AppConfig; - import javax.annotation.Nullable; /** - * 偏好设置 * Create by LingYan on 2016-06-01 - * Email:137387869@qq.com */ public class GanklyPreferences { - public static final String PREFERENCES_NAME_DEFAULT = "gankly_config"; + private static final String PREFERENCES_NAME_DEFAULT = "gankly_config"; private volatile static SharedPreferences mSharedPreferences; private volatile static SharedPreferences.Editor sEditor; - public static SharedPreferences getDefaultPreference() { - return initPreference(PREFERENCES_NAME_DEFAULT); + public static SharedPreferences getDefaultPreference(Context context) { + return initPreference(context, PREFERENCES_NAME_DEFAULT); } - public static SharedPreferences.Editor getDefaultEditor() { + public static SharedPreferences.Editor getDefaultEditor(Context context) { if (mSharedPreferences == null) { - initPreference(PREFERENCES_NAME_DEFAULT); + initPreference(context, PREFERENCES_NAME_DEFAULT); } if (sEditor == null) { @@ -37,55 +33,55 @@ public static SharedPreferences.Editor getDefaultEditor() { return sEditor; } - public static SharedPreferences getPreference(String name) { - return initPreference(name); + public static SharedPreferences getPreference(Context context, String name) { + return initPreference(context, name); } - public static SharedPreferences initPreference(String name) { + public static SharedPreferences initPreference(Context context, String name) { if (mSharedPreferences == null) { synchronized (GanklyPreferences.class) { if (mSharedPreferences == null) { - mSharedPreferences = AppConfig.getGankContext().getSharedPreferences(name, Context.MODE_PRIVATE); + mSharedPreferences = context.getSharedPreferences(name, Context.MODE_PRIVATE); } } } return mSharedPreferences; } - public static void clear() { - getDefaultPreference().edit().clear().commit(); + public static void clear(Context context) { + getDefaultPreference(context).edit().clear().commit(); } - public static int getInt(String key, int defValue) { - return getDefaultPreference().getInt(key, defValue); + public static int getInt(Context context, String key, int defValue) { + return getDefaultPreference(context).getInt(key, defValue); } - public static long getLong(String key, int defValue) { - return getDefaultPreference().getLong(key, defValue); + public static long getLong(Context context, String key, int defValue) { + return getDefaultPreference(context).getLong(key, defValue); } - public static boolean getBoolean(String key, boolean defValue) { - return getDefaultPreference().getBoolean(key, defValue); + public static boolean getBoolean(Context context, String key, boolean defValue) { + return getDefaultPreference(context).getBoolean(key, defValue); } @Nullable - public static String getString(String key, @Nullable String defValue) { - return getDefaultPreference().getString(key, defValue); + public static String getString(Context context, String key, @Nullable String defValue) { + return getDefaultPreference(context).getString(key, defValue); } - public static void putInt(String key, int value) { - getDefaultEditor().putInt(key, value).apply(); + public static void putInt(Context context, String key, int value) { + getDefaultEditor(context).putInt(key, value).apply(); } - public static void putLong(String key, long value) { - getDefaultEditor().putLong(key, value).apply(); + public static void putLong(Context context, String key, long value) { + getDefaultEditor(context).putLong(key, value).apply(); } - public static void putBoolean(String key, boolean value) { - getDefaultEditor().putBoolean(key, value).apply(); + public static void putBoolean(Context context, String key, boolean value) { + getDefaultEditor(context).putBoolean(key, value).apply(); } - public static void putString(String key, @Nullable String value) { - getDefaultEditor().putString(key, value).apply(); + public static void putString(Context context, String key, @Nullable String value) { + getDefaultEditor(context).putString(key, value).apply(); } } diff --git a/app/src/main/java/com/gank/gankly/utils/GlideCatchUtil.java b/app/src/main/java/com/gank/gankly/utils/GlideCatchUtil.java index 9d5c0e18..ffcb1d77 100644 --- a/app/src/main/java/com/gank/gankly/utils/GlideCatchUtil.java +++ b/app/src/main/java/com/gank/gankly/utils/GlideCatchUtil.java @@ -1,9 +1,9 @@ package com.gank.gankly.utils; +import android.content.Context; import android.os.Looper; import com.bumptech.glide.Glide; -import com.gank.gankly.AppConfig; import java.io.File; import java.math.BigDecimal; @@ -19,9 +19,9 @@ public static GlideCatchUtil getInstance() { } // 获取Glide磁盘缓存大小 - public String getCacheSize() { + public String getCacheSize(Context context) { try { - return getFormatSize(getFolderSize(new File(FileUtils.getGlideDefaultPath(AppConfig.getGankContext())))); + return getFormatSize(getFolderSize(new File(FileUtils.getGlideDefaultPath(context)))); } catch (Exception e) { e.printStackTrace(); return "获取失败"; @@ -29,17 +29,17 @@ public String getCacheSize() { } // 清除Glide磁盘缓存,自己获取缓存文件夹并删除方法 - public boolean cleanCatchDisk() { - return deleteFolderFile(FileUtils.getGlideDefaultPath(AppConfig.getGankContext()), true); + public boolean cleanCatchDisk(Context context) { + return deleteFolderFile(FileUtils.getGlideDefaultPath(context), true); } // 清除图片磁盘缓存,调用Glide自带方法 - public boolean clearCacheDiskSelf() { + public boolean clearCacheDiskSelf(Context context) { try { if (Looper.myLooper() == Looper.getMainLooper()) { - new Thread(() -> Glide.get(AppConfig.getGankContext()).clearDiskCache()).start(); + new Thread(() -> Glide.get(context).clearDiskCache()).start(); } else { - Glide.get(AppConfig.getGankContext()).clearDiskCache(); + Glide.get(context).clearDiskCache(); } return true; } catch (Exception e) { @@ -49,10 +49,10 @@ public boolean clearCacheDiskSelf() { } // 清除Glide内存缓存 - public boolean clearCacheMemory() { + public boolean clearCacheMemory(Context context) { try { if (Looper.myLooper() == Looper.getMainLooper()) { //只能在主线程执行 - Glide.get(AppConfig.getGankContext()).clearMemory(); + Glide.get(context).clearMemory(); return true; } } catch (Exception e) { diff --git a/app/src/main/java/com/gank/gankly/utils/NetworkUtils.java b/app/src/main/java/com/gank/gankly/utils/NetworkUtils.java index 80585128..05af4650 100644 --- a/app/src/main/java/com/gank/gankly/utils/NetworkUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/NetworkUtils.java @@ -5,8 +5,6 @@ import android.net.NetworkInfo; import android.telephony.TelephonyManager; -import com.gank.gankly.AppConfig; - /** * Create by LingYan on 2016-6-3 */ @@ -15,10 +13,10 @@ public class NetworkUtils { /** * 判断网络连接是否可用 */ - public static boolean isNetworkAvailable() { - return (AppConfig.getGankContext().getSystemService(Context.CONNECTIVITY_SERVICE) != + public static boolean isNetworkAvailable(Context context) { + return (context.getSystemService(Context.CONNECTIVITY_SERVICE) != null) && (( - (ConnectivityManager) AppConfig.getGankContext().getSystemService(Context.CONNECTIVITY_SERVICE)) + (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)) .getActiveNetworkInfo() != null); } @@ -42,8 +40,8 @@ public static boolean isWiFiEnabled(Context context) { /** * 判断是否是移动网络 */ - public static boolean isMobileNetwork() { - NetworkInfo networkInfo = ((ConnectivityManager) AppConfig.getGankContext().getSystemService(Context + public static boolean isMobileNetwork(Context context) { + NetworkInfo networkInfo = ((ConnectivityManager) context.getSystemService(Context .CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); return (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_MOBILE); } @@ -51,8 +49,8 @@ public static boolean isMobileNetwork() { /** * 判断是否是WiFi */ - public static boolean isWiFi() { - NetworkInfo networkInfo = ((ConnectivityManager) AppConfig.getGankContext().getSystemService(Context + public static boolean isWiFi(Context context) { + NetworkInfo networkInfo = ((ConnectivityManager) context.getSystemService(Context .CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); return (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI); } diff --git a/app/src/main/java/com/gank/gankly/utils/RxClick.java b/app/src/main/java/com/gank/gankly/utils/RxClick.java index b562ae4b..5c05e74d 100644 --- a/app/src/main/java/com/gank/gankly/utils/RxClick.java +++ b/app/src/main/java/com/gank/gankly/utils/RxClick.java @@ -2,7 +2,6 @@ /** * Created by Lingyan on 2017/4/1 0001. - * Email:137387869@qq.com */ public class RxClick { diff --git a/app/src/main/java/com/gank/gankly/utils/ShareUtils.java b/app/src/main/java/com/gank/gankly/utils/ShareUtils.java index e4593fe5..808871ec 100644 --- a/app/src/main/java/com/gank/gankly/utils/ShareUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/ShareUtils.java @@ -5,7 +5,6 @@ import android.net.Uri; import android.text.TextUtils; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; /** @@ -28,7 +27,7 @@ public void shareText(Context context, String share) { public void shareText(Context context, String title, String share) { if (TextUtils.isEmpty(share)) { - ToastUtils.showToast(R.string.tip_share_empty_text); + ToastUtils.showToast(context, R.string.tip_share_empty_text); return; } share = title + "! " + share + " [Gankly]"; @@ -36,7 +35,7 @@ public void shareText(Context context, String title, String share) { shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_TEXT, share); shareIntent.setType("text/plain"); - context.startActivity(Intent.createChooser(shareIntent, AppConfig.getAppString(R.string.share_to))); + context.startActivity(Intent.createChooser(shareIntent, context.getString(R.string.share_to))); } public static void shareSingleImage(Context context, Uri result) { diff --git a/app/src/main/java/com/gank/gankly/utils/StyleUtils.java b/app/src/main/java/com/gank/gankly/utils/StyleUtils.java index 419b928e..d76497ce 100644 --- a/app/src/main/java/com/gank/gankly/utils/StyleUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/StyleUtils.java @@ -13,7 +13,6 @@ /** * Create by LingYan on 2016-09-12 - * Email:137387869@qq.com */ public class StyleUtils { public static void changeSwipeRefreshLayout(SwipeRefreshLayout swipeRefreshLayout) { @@ -24,13 +23,13 @@ public static void changeSwipeRefreshLayout(SwipeRefreshLayout swipeRefreshLayou int progressColor = R.color.white; int schemeColor = R.color.colorAccent; - if (AppConfig.isNight()) { - progressColor = R.color.baseSwipeRefreshLayoutProgressSchemeColor; - schemeColor = R.color.baseSwipeRefreshLayoutSchemeColors; - } +// if (AppConfig.isNight()) { +// progressColor = R.color.baseSwipeRefreshLayoutProgressSchemeColor; +// schemeColor = R.color.baseSwipeRefreshLayoutSchemeColors; +// } - swipeRefreshLayout.setProgressBackgroundColorSchemeColor(AppConfig.getAppColor(progressColor)); - swipeRefreshLayout.setColorSchemeColors(AppConfig.getAppColor(schemeColor)); + swipeRefreshLayout.setProgressBackgroundColorSchemeColor(swipeRefreshLayout.getContext().getResources().getColor(progressColor)); + swipeRefreshLayout.setColorSchemeColors(swipeRefreshLayout.getContext().getResources().getColor(schemeColor)); } //让 RecyclerView 缓存在 Pool 中的 Item 失效 diff --git a/app/src/main/java/com/gank/gankly/utils/ToastUtils.java b/app/src/main/java/com/gank/gankly/utils/ToastUtils.java index 40e9dd7e..a1061f14 100644 --- a/app/src/main/java/com/gank/gankly/utils/ToastUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/ToastUtils.java @@ -1,10 +1,9 @@ package com.gank.gankly.utils; +import android.content.Context; import android.view.Gravity; import android.widget.Toast; -import com.gank.gankly.AppConfig; - /** * Create by LingYan on 2016-04-01 */ @@ -14,43 +13,43 @@ public class ToastUtils { private ToastUtils() { } - public static void showToast(String msg) { - show(msg, Toast.LENGTH_SHORT); + public static void showToast(Context context, String msg) { + show(context, msg, Toast.LENGTH_SHORT); } - public static void showToast(int resText) { - show(resText, Toast.LENGTH_SHORT); + public static void showToast(Context context, int resText) { + show(context, resText, Toast.LENGTH_SHORT); } - public static void longBottom(int resText) { - show(resText, Toast.LENGTH_LONG, Gravity.BOTTOM); + public static void longBottom(Context context, int resText) { + show(context, resText, Toast.LENGTH_LONG, Gravity.BOTTOM); } - public static void shortBottom(int resText) { - show(resText, Toast.LENGTH_SHORT, Gravity.BOTTOM); + public static void shortBottom(Context context, int resText) { + show(context, resText, Toast.LENGTH_SHORT, Gravity.BOTTOM); } - public static void longToast(int resText) { - show(resText, Toast.LENGTH_LONG); + public static void longToast(Context context, int resText) { + show(context, resText, Toast.LENGTH_LONG); } - private static void show(String msg, int duration) { + private static void show(Context context, String msg, int duration) { cancel(); - mToast = Toast.makeText(AppConfig.getGankContext(), msg, duration); + mToast = Toast.makeText(context.getApplicationContext(), msg, duration); mToast.setGravity(Gravity.CENTER, 0, 0); mToast.show(); } - private static void show(int resText, int duration) { + private static void show(Context context, int resText, int duration) { cancel(); - mToast = Toast.makeText(AppConfig.getGankContext(), resText, duration); + mToast = Toast.makeText(context.getApplicationContext(), resText, duration); mToast.setGravity(Gravity.CENTER, 0, 0); mToast.show(); } - private static void show(int resText, int duration, int gravity) { + private static void show(Context context, int resText, int duration, int gravity) { cancel(); - mToast = Toast.makeText(AppConfig.getGankContext(), resText, duration); + mToast = Toast.makeText(context.getApplicationContext(), resText, duration); mToast.setGravity(gravity, 0, 100); mToast.show(); } @@ -62,6 +61,4 @@ private static void cancel() { mToast = null; } } - - } diff --git a/app/src/main/java/com/gank/gankly/utils/gilde/GlideImageLoaderStrategy.java b/app/src/main/java/com/gank/gankly/utils/gilde/GlideImageLoaderStrategy.java index c900e4e3..92f07524 100644 --- a/app/src/main/java/com/gank/gankly/utils/gilde/GlideImageLoaderStrategy.java +++ b/app/src/main/java/com/gank/gankly/utils/gilde/GlideImageLoaderStrategy.java @@ -52,7 +52,7 @@ public void loadImage(Context context, String url, int placeholder, ImageView im @Override public RequestBuilder loadWifiImage(Context context, String url) { - return getImageCache(context, url, isAllowDown()); + return getImageCache(context, url, isAllowDown(context)); } @Override @@ -126,7 +126,7 @@ public void saveImage(Context context, String url, String savePath, String saveF @Override public RequestBuilder glideAsBitmap(Context context, String imgUrl) { - if (isAllowDown()) { + if (isAllowDown(context)) { return Glide.with(context) .asBitmap() .load(imgUrl) @@ -204,11 +204,11 @@ public boolean onResourceReady(Drawable resource, Object model, Target .into(imageView); } - private boolean isAllowDown() { + private boolean isAllowDown(Context context) { boolean allowDownload = true; - boolean isOnlyWif = GanklyPreferences.getBoolean(Preferences.SETTING_WIFI_ONLY, false); + boolean isOnlyWif = GanklyPreferences.getBoolean(context, Preferences.SETTING_WIFI_ONLY, false); if (isOnlyWif) { - if (!NetworkUtils.isWiFi()) { + if (!NetworkUtils.isWiFi(context)) { allowDownload = false; } } diff --git a/app/src/main/java/com/gank/gankly/utils/gilde/WifiOnlyLoader.java b/app/src/main/java/com/gank/gankly/utils/gilde/WifiOnlyLoader.java index f7e90563..acc614a7 100644 --- a/app/src/main/java/com/gank/gankly/utils/gilde/WifiOnlyLoader.java +++ b/app/src/main/java/com/gank/gankly/utils/gilde/WifiOnlyLoader.java @@ -1,5 +1,6 @@ package com.gank.gankly.utils.gilde; +import android.content.Context; import android.content.SharedPreferences; import android.support.annotation.Nullable; @@ -18,15 +19,17 @@ public class WifiOnlyLoader implements ModelLoader { private final ModelLoader defaultLoader; + private final Context context; - public WifiOnlyLoader(ModelLoader loader) { + public WifiOnlyLoader(Context context, ModelLoader loader) { + this.context = context; defaultLoader = loader; } @Nullable @Override public LoadData buildLoadData(GlideUrl glideUrl, int width, int height, Options options) { - SharedPreferences prefs = GanklyPreferences.getDefaultPreference(); + SharedPreferences prefs = GanklyPreferences.getDefaultPreference(context); if (prefs.getBoolean(SETTING_WIFI_ONLY, true)) { return new NetworkDisablingLoader().buildLoadData(glideUrl, width, height, options); } else { @@ -40,9 +43,15 @@ public boolean handles(GlideUrl glideUrl) { } public static class Factory implements ModelLoaderFactory { + private final Context context; + + public Factory(Context context) { + this.context = context; + } + @Override public ModelLoader build(MultiModelLoaderFactory multiFactory) { - return new WifiOnlyLoader(new HttpGlideUrlLoader(new ModelCache<>(500))); + return new WifiOnlyLoader(context, new HttpGlideUrlLoader(new ModelCache<>(500))); } @Override diff --git a/app/src/main/java/com/gank/gankly/utils/theme/RecyclerViewColor.java b/app/src/main/java/com/gank/gankly/utils/theme/RecyclerViewColor.java index 2d0195d4..f3cd1f91 100644 --- a/app/src/main/java/com/gank/gankly/utils/theme/RecyclerViewColor.java +++ b/app/src/main/java/com/gank/gankly/utils/theme/RecyclerViewColor.java @@ -19,7 +19,6 @@ /** * Create by LingYan on 2016-11-28 - * Email:137387869@qq.com */ public class RecyclerViewColor { diff --git a/app/src/main/java/com/gank/gankly/widget/ItemTextView.java b/app/src/main/java/com/gank/gankly/widget/ItemTextView.java index 0232bbc4..318498a8 100644 --- a/app/src/main/java/com/gank/gankly/widget/ItemTextView.java +++ b/app/src/main/java/com/gank/gankly/widget/ItemTextView.java @@ -8,7 +8,6 @@ import android.widget.RelativeLayout; import android.widget.TextView; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; import butterknife.BindView; @@ -35,6 +34,7 @@ public class ItemTextView extends RelativeLayout { private int mTitleColor; private int mSummaryColor; + private Context context; public ItemTextView(Context context) { this(context, null); @@ -54,8 +54,8 @@ public ItemTextView(Context context, AttributeSet attrs, int defStyleAttr) { mSummary = array.getString(R.styleable.ItemTextView_textSummary); mTitleSize = array.getInteger(R.styleable.ItemTextView_textTitleSize, 14); mSummarySize = array.getInteger(R.styleable.ItemTextView_textSummarySize, 12); - mTitleColor = array.getColor(R.styleable.ItemTextView_textTitleColor, AppConfig.getAppColor(R.color.text_default)); - mSummaryColor = array.getColor(R.styleable.ItemTextView_textSummaryColor, AppConfig.getAppColor(R.color.text_999999)); + mTitleColor = array.getColor(R.styleable.ItemTextView_textTitleColor, context.getResources().getColor(R.color.text_default)); + mSummaryColor = array.getColor(R.styleable.ItemTextView_textSummaryColor, context.getResources().getColor(R.color.text_999999)); } catch (Exception e) { throw new IllegalArgumentException(e); } diff --git a/app/src/main/java/com/gank/gankly/widget/LSwitch.java b/app/src/main/java/com/gank/gankly/widget/LSwitch.java index 9cf17d1d..2e10d513 100644 --- a/app/src/main/java/com/gank/gankly/widget/LSwitch.java +++ b/app/src/main/java/com/gank/gankly/widget/LSwitch.java @@ -3,11 +3,11 @@ import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Color; +import android.support.v4.content.ContextCompat; import android.support.v4.graphics.drawable.DrawableCompat; import android.support.v7.widget.SwitchCompat; import android.util.AttributeSet; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; /** @@ -50,12 +50,13 @@ private ColorStateList getSwitchThumbColorStateList() { // Checked state states[1] = new int[]{android.R.attr.state_checked}; - if (AppConfig.isNight()) { - mColor = R.color.switch_thumb_disabled_dark; - } else { - mColor = R.color.colorAccent; - } - colors[1] = AppConfig.getAppColor(mColor); +// if (AppConfig.isNight()) { +// mColor = R.color.switch_thumb_disabled_dark; +// } else { + mColor = R.color.colorAccent; +// } + + colors[1] = getContext().getResources().getColor(mColor); // Unchecked enabled state state states[2] = new int[0]; @@ -75,9 +76,9 @@ private ColorStateList getSwitchTrackColorStateList() { // Checked state states[1] = new int[]{android.R.attr.state_checked}; colors[1] = Color.argb(0x4D, // 30% alpha - Color.red(AppConfig.getAppColor(mColor)), - Color.green(AppConfig.getAppColor(mColor)), - Color.blue(AppConfig.getAppColor(mColor))); + Color.red(ContextCompat.getColor(getContext(), mColor)), + Color.green(ContextCompat.getColor(getContext(),mColor)), + Color.blue(ContextCompat.getColor(getContext(),mColor))); // Unchecked enabled state state states[2] = new int[0]; diff --git a/app/src/main/java/com/gank/gankly/widget/ProgressImageView.java b/app/src/main/java/com/gank/gankly/widget/ProgressImageView.java index 0d435f5d..89ec2c3b 100644 --- a/app/src/main/java/com/gank/gankly/widget/ProgressImageView.java +++ b/app/src/main/java/com/gank/gankly/widget/ProgressImageView.java @@ -132,20 +132,18 @@ public void load(String url, final Fragment fragment) { } public void load(String url, Activity fragment) { -// if (url.endsWith("gif")) { target.setModel(url); // update target's cache Glide.with(fragment) .asBitmap() .load(url) .apply(new RequestOptions() - .diskCacheStrategy(DiskCacheStrategy.RESOURCE) - .placeholder(R.drawable.image_loading) - .error(R.drawable.image_failure) - .fitCenter() // needs explicit transformation, because we're using a custom target + .diskCacheStrategy(DiskCacheStrategy.RESOURCE) + .placeholder(R.drawable.image_loading) + .error(R.drawable.image_failure) + .fitCenter() // needs explicit transformation, because we're using a custom target ) .into(target); -// } } /** diff --git a/app/src/main/res/layout/fragment_gift.xml b/app/src/main/res/layout/fragment_gift.xml index a6d8490c..232c37a8 100644 --- a/app/src/main/res/layout/fragment_gift.xml +++ b/app/src/main/res/layout/fragment_gift.xml @@ -7,7 +7,7 @@ android:layout_below="@id/main_appbar"> apply(Response> pageEntityResponse) thr }); } - public Observable>> ios(int page, int limit) { + public Observable> ios(int page, int limit) { return gankApi.ios(page, limit) .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); + .observeOn(AndroidSchedulers.mainThread()) + .map(new Function>, PageEntity>() { + @Override + public PageEntity apply(Response> pageEntityResponse) throws Exception { + if (pageEntityResponse == null) { + return null; + } + return pageEntityResponse.body(); + } + }); } public Observable>> allGoods(int limit, int page) { diff --git a/support-ly-business/src/main/java/android/ly/business/domain/Gank.java b/support-ly-business/src/main/java/android/ly/business/domain/Gank.java index 4537cfe9..c385ac8b 100644 --- a/support-ly-business/src/main/java/android/ly/business/domain/Gank.java +++ b/support-ly-business/src/main/java/android/ly/business/domain/Gank.java @@ -2,13 +2,12 @@ import android.os.Parcel; import android.os.Parcelable; -import android.text.TextUtils; import com.google.gson.annotations.SerializedName; import java.util.List; -public class Gank implements Parcelable { +public class Gank extends BaseEntity implements Parcelable { @SerializedName("_id") public String id; public String createdAt; @@ -74,8 +73,4 @@ public Gank[] newArray(int size) { public boolean isImagesEmpty() { return images == null || images.isEmpty(); } - - public String getWho() { - return TextUtils.isEmpty(who) ? "佚名" : who; - } } \ No newline at end of file diff --git a/support-ly-business/src/main/java/android/ly/business/domain/PageConfig.java b/support-ly-business/src/main/java/android/ly/business/domain/PageConfig.java index db107284..aebbab03 100644 --- a/support-ly-business/src/main/java/android/ly/business/domain/PageConfig.java +++ b/support-ly-business/src/main/java/android/ly/business/domain/PageConfig.java @@ -29,4 +29,8 @@ public PageConfig(int limit, int initPage, int curPage) { this.initPage = initPage; this.curPage = curPage; } + + public boolean isFirst() { + return initPage == curPage; + } } diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java index d50d55e6..c3d139be 100644 --- a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java @@ -14,5 +14,5 @@ public BasicHolder(ViewGroup parent, @LayoutRes int layout) { super(LayoutInflater.from(parent.getContext()).inflate(layout, parent, false)); } - public abstract void bindItem(II item); + public abstract void bindHolder(II item); } From 24572feb92feaca63851313018d5c3c764fffd6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=87=8C=E7=82=8E?= Date: Fri, 23 Mar 2018 18:15:14 +0800 Subject: [PATCH 16/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 8 +- .../com/gank/gankly/bean/DailyMeiziBean.java | 55 ---- .../java/com/gank/gankly/bean/GiftResult.java | 26 +- .../gankly/butterknife/ButterKnifeHolder.java | 4 +- .../mvp/source/BaseDataSourceModel.java | 88 ------- .../mvp/source/remote/BuDeJieDataSource.java | 7 +- .../mvp/source/remote/GankDataSource.java | 19 +- .../mvp/source/remote/JiandanDataSource.java | 60 ----- .../mvp/source/remote/MeiZiTuDataSource.java | 33 +-- .../mvp/source/remote/MeiziDataSource.java | 110 -------- .../mvp/source/remote/TeamBlogDataSource.java | 13 +- .../source/remote/TechnologyDataSource.java | 14 +- .../gankly/ui/android/AndroidAdapter.java | 30 +-- .../com/gank/gankly/ui/cure/CureAdapter.java | 47 ++-- .../com/gank/gankly/ui/cure/CureContract.java | 10 +- .../com/gank/gankly/ui/cure/CureFragment.java | 129 +++------ .../gank/gankly/ui/cure/CurePresenter.java | 59 ++--- .../ui/dailymeizi/DailyMeiziAdapter.java | 35 +-- .../ui/dailymeizi/DailyMeiziContract.java | 10 +- .../ui/dailymeizi/DailyMeiziFragment.java | 14 +- .../ui/dailymeizi/DailyMeiziPresenter.java | 25 +- .../discovered/jiandan/JiandanPresenter.java | 10 +- .../teamBlog/TeamBlogPresenter.java | 4 +- .../technology/TechnologyPresenter.java | 42 +-- .../ui/discovered/video/VideoAdapter.java | 6 +- .../ui/discovered/video/VideoFragment.java | 2 +- .../gankly/ui/gallery/GalleryActivity.java | 10 +- .../com/gank/gankly/ui/ios/IosAdapter.java | 25 +- .../com/gank/gankly/ui/pure/PureAdapter.java | 218 ++++++++++----- .../com/gank/gankly/ui/pure/PureContract.java | 8 +- .../com/gank/gankly/ui/pure/PureFragment.java | 100 +++---- .../gank/gankly/ui/pure/PurePresenter.java | 248 ++++++------------ .../gankly/ui/welfare/WelfareFragment.java | 2 +- app/src/main/res/layout/adapter_gift.xml | 6 +- app/src/main/res/layout/adapter_video.xml | 6 +- gradle.properties | 5 +- settings.gradle | 2 +- support-ly-business/build.gradle | 1 - .../ly/business/domain/BaseEntity.java | 37 ++- .../ly/business/domain/DailyMeizi.java | 67 +++++ .../java/android/ly/business/domain/Gift.java | 20 +- support-ly-jsoup/.gitignore | 1 + support-ly-jsoup/build.gradle | 27 ++ support-ly-jsoup/proguard-rules.pro | 21 ++ support-ly-jsoup/src/main/AndroidManifest.xml | 2 + .../main/java/android/ly/jsoup/JsoupMate.java | 45 ++++ .../java/android/ly/jsoup/JsoupServer.java | 18 ++ .../src/main/java/android/ly/jsoup/Mate.java | 28 ++ .../java/android/ly/jsoup/RxJsoupMate.java | 63 +++++ .../src/main/res/values/strings.xml | 3 + .../lectcoding/ui/adapter/BasicHolder.java | 2 +- .../{BasicItem.java => BasicViewItem.java} | 2 +- .../ui/adapter/ObserverAdapter.java | 28 ++ .../ui/adapter/{Item.java => ViewItem.java} | 2 +- 54 files changed, 882 insertions(+), 975 deletions(-) delete mode 100644 app/src/main/java/com/gank/gankly/bean/DailyMeiziBean.java delete mode 100644 app/src/main/java/com/gank/gankly/mvp/source/BaseDataSourceModel.java delete mode 100644 app/src/main/java/com/gank/gankly/mvp/source/remote/JiandanDataSource.java delete mode 100644 app/src/main/java/com/gank/gankly/mvp/source/remote/MeiziDataSource.java create mode 100644 support-ly-business/src/main/java/android/ly/business/domain/DailyMeizi.java rename app/src/main/java/com/gank/gankly/bean/GiftBean.java => support-ly-business/src/main/java/android/ly/business/domain/Gift.java (76%) create mode 100644 support-ly-jsoup/.gitignore create mode 100644 support-ly-jsoup/build.gradle create mode 100644 support-ly-jsoup/proguard-rules.pro create mode 100644 support-ly-jsoup/src/main/AndroidManifest.xml create mode 100644 support-ly-jsoup/src/main/java/android/ly/jsoup/JsoupMate.java create mode 100644 support-ly-jsoup/src/main/java/android/ly/jsoup/JsoupServer.java create mode 100644 support-ly-jsoup/src/main/java/android/ly/jsoup/Mate.java create mode 100644 support-ly-jsoup/src/main/java/android/ly/jsoup/RxJsoupMate.java create mode 100644 support-ly-jsoup/src/main/res/values/strings.xml rename support-ly-ui/src/main/java/android/lectcoding/ui/adapter/{BasicItem.java => BasicViewItem.java} (59%) create mode 100644 support-ly-ui/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java rename support-ly-ui/src/main/java/android/lectcoding/ui/adapter/{Item.java => ViewItem.java} (85%) diff --git a/app/build.gradle b/app/build.gradle index 49cb0ed3..ffede8cb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,12 +81,10 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' - implementation project(':support-ly-business') implementation project(':support-ly-rxbus') implementation project(':superplayerlibrary') implementation project(':support-ly-ui') - implementation "com.android.support:appcompat-v7:${supportVersion}" implementation "com.android.support:design:${supportVersion}" implementation "com.android.support:cardview-v7:${supportVersion}" @@ -99,7 +97,6 @@ dependencies { implementation "com.squareup.retrofit2:retrofit-adapters:${retrofitAdapters}" implementation "com.squareup.retrofit2:converter-gson:${converterGson}" implementation "com.squareup.retrofit2:adapter-rxjava2:${adapterRxjava2}" - implementation "com.squareup.okhttp3:okhttp:${okhttp}" implementation "com.squareup.okhttp3:logging-interceptor:${okhttp}" debugCompile "com.squareup.leakcanary:leakcanary-android:${leakcanaryandroid}" @@ -121,7 +118,8 @@ dependencies { implementation 'jp.wasabeef:recyclerview-animators:2.2.3' //jsoup - implementation "org.jsoup:jsoup:${jsoup}" + + // implementation "org.jsoup:jsoup:${jsoup}" //底部导航 implementation "com.roughike:bottom-bar:${bottomBar}" @@ -133,6 +131,6 @@ dependencies { implementation "io.reactivex.rxjava2:rxjava:${rxjava}" implementation "io.reactivex.rxjava2:rxandroid:${rxandroid}" implementation "com.tencent.bugly:crashreport_upgrade:${crashreportUpgrade}" - implementation 'com.android.support.constraint:constraint-layout:1.0.2' + implementation project(':support-ly-jsoup') } diff --git a/app/src/main/java/com/gank/gankly/bean/DailyMeiziBean.java b/app/src/main/java/com/gank/gankly/bean/DailyMeiziBean.java deleted file mode 100644 index a8bd91ef..00000000 --- a/app/src/main/java/com/gank/gankly/bean/DailyMeiziBean.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.gank.gankly.bean; - -/** - * Create by LingYan on 2016-07-05 - */ -public class DailyMeiziBean { - private String month; - private String day; - private String url; - private String title; - - public DailyMeiziBean(String month, String day, String url, String title) { - this.month = month; - this.day = day; - this.url = url; - this.title = title; - } - - public DailyMeiziBean(String url, String title) { - this.url = url; - this.title = title; - } - - public String getMonth() { - return month; - } - - public void setMonth(String month) { - this.month = month; - } - - public String getDay() { - return day; - } - - public void setDay(String day) { - this.day = day; - } - - public String getUrl() { - return url; - } - - public void setUrl(String url) { - this.url = url; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } -} diff --git a/app/src/main/java/com/gank/gankly/bean/GiftResult.java b/app/src/main/java/com/gank/gankly/bean/GiftResult.java index 54f33d21..8d6006b7 100644 --- a/app/src/main/java/com/gank/gankly/bean/GiftResult.java +++ b/app/src/main/java/com/gank/gankly/bean/GiftResult.java @@ -1,6 +1,6 @@ package com.gank.gankly.bean; -import com.gank.gankly.utils.ListUtils; +import android.ly.business.domain.Gift; import java.util.List; @@ -9,30 +9,10 @@ */ public class GiftResult { private int num; - private List mList; + private List mList; - public GiftResult(int num, List list) { + public GiftResult(int num, List list) { this.num = num; mList = list; } - - public List getList() { - return mList; - } - - public void setList(List list) { - mList = list; - } - - public int getNum() { - return num; - } - - public void setNum(int num) { - this.num = num; - } - - public int getSize() { - return ListUtils.getSize(mList); - } } diff --git a/app/src/main/java/com/gank/gankly/butterknife/ButterKnifeHolder.java b/app/src/main/java/com/gank/gankly/butterknife/ButterKnifeHolder.java index 25308e1f..5fcc5249 100644 --- a/app/src/main/java/com/gank/gankly/butterknife/ButterKnifeHolder.java +++ b/app/src/main/java/com/gank/gankly/butterknife/ButterKnifeHolder.java @@ -1,7 +1,7 @@ package com.gank.gankly.butterknife; import android.lectcoding.ui.adapter.BasicHolder; -import android.lectcoding.ui.adapter.Item; +import android.lectcoding.ui.adapter.ViewItem; import android.support.annotation.LayoutRes; import android.view.ViewGroup; @@ -11,7 +11,7 @@ * Create by LingYan on 2017-10-13 */ -public abstract class ButterKnifeHolder extends BasicHolder { +public abstract class ButterKnifeHolder extends BasicHolder { public ButterKnifeHolder(ViewGroup parent, @LayoutRes int layoutRes) { super(parent, layoutRes); ButterKnife.bind(this, itemView); diff --git a/app/src/main/java/com/gank/gankly/mvp/source/BaseDataSourceModel.java b/app/src/main/java/com/gank/gankly/mvp/source/BaseDataSourceModel.java deleted file mode 100644 index 44a505b5..00000000 --- a/app/src/main/java/com/gank/gankly/mvp/source/BaseDataSourceModel.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.gank.gankly.mvp.source; - -import com.gank.gankly.utils.CrashUtils; -import com.socks.library.KLog; - -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; - -import java.io.IOException; -import java.util.Map; - -import io.reactivex.Flowable; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -/** - * Create by LingYan on 2016-10-26 - */ - -public class BaseDataSourceModel { - protected static final int TIME_OUT = 50 * 1000; - protected static final String USERAGENT = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36"; - protected static final String DESKTOP_USERAGENT = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; Desktop) AppleWebKit/534.13 (KHTML, like Gecko) UCBrowser/8.9.0.25"; - - protected Observable toObservable(Observable o) { - return o.retry(3) - .subscribeOn(Schedulers.io()) - .unsubscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable jsoupUrlData(final String url) { - return Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter subscriber) throws Exception { - Document doc ; - try { - doc = Jsoup.connect(url) - .userAgent(USERAGENT) - .timeout(TIME_OUT) - .get(); - subscriber.onNext(doc); - } catch (IOException e) { - KLog.e(e); - CrashUtils.crashReport(e); - subscriber.onError(new Throwable("error")); - } - subscriber.onComplete(); - } - }); - } - - public Observable jsoupUrlData(final String url, final Map strings) { - return Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter subscriber) throws Exception { - Document doc; - try { - doc = Jsoup.connect(url) - .userAgent(USERAGENT) - .timeout(TIME_OUT) - .data(strings) - .get(); - if (doc != null) { - subscriber.onNext(doc); - } else { - subscriber.onError(new Throwable("service error")); - } - } catch (IOException e) { - KLog.e(e); - CrashUtils.crashReport(e); - subscriber.onError(e); - } - subscriber.onComplete(); - } - }); - } - - protected Flowable toObservable(Flowable o) { - return o.retry(3) - .subscribeOn(Schedulers.io()) - .unsubscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } -} diff --git a/app/src/main/java/com/gank/gankly/mvp/source/remote/BuDeJieDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/remote/BuDeJieDataSource.java index ba589c25..fd3545c4 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/remote/BuDeJieDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/remote/BuDeJieDataSource.java @@ -2,7 +2,6 @@ import com.gank.gankly.bean.BuDeJieBean; import com.gank.gankly.bean.BuDeJieVideo; -import com.gank.gankly.mvp.source.BaseDataSourceModel; import com.gank.gankly.network.api.ApiManager; import com.gank.gankly.network.service.BaiSiService; @@ -12,7 +11,7 @@ * Create by LingYan on 2016-11-30 */ -public class BuDeJieDataSource extends BaseDataSourceModel { +public class BuDeJieDataSource { private static final String BASE_URL = "http://s.budejie.com/"; private volatile static BuDeJieDataSource INSTANCE = null; @@ -34,10 +33,10 @@ public static BuDeJieDataSource getInstance() { } public Observable fetchImage(int np) { - return toObservable(mGankService.fetchImage(np, "xiaomi", "6.6.1", "", "6.0.1", "baisibudejie", "android", "866333021430895", "02:00:00:00:00:00", "MI 4LTE", "移动", "1080", "1920", "CN")); + return mGankService.fetchImage(np, "xiaomi", "6.6.1", "", "6.0.1", "baisibudejie", "android", "866333021430895", "02:00:00:00:00:00", "MI 4LTE", "移动", "1080", "1920", "CN"); } public Observable fetchVideo(int np) { - return toObservable(mGankService.fetchVideo(np)); + return mGankService.fetchVideo(np); } } diff --git a/app/src/main/java/com/gank/gankly/mvp/source/remote/GankDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/remote/GankDataSource.java index a526e54b..42e300e0 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/remote/GankDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/remote/GankDataSource.java @@ -2,7 +2,6 @@ import com.gank.gankly.bean.GankResult; import com.gank.gankly.config.MeiziArrayList; -import com.gank.gankly.mvp.source.BaseDataSourceModel; import com.gank.gankly.network.api.ApiManager; import com.gank.gankly.network.service.GankService; @@ -13,7 +12,7 @@ * Create by LingYan on 2016-10-25 */ -public class GankDataSource extends BaseDataSourceModel { +public class GankDataSource { private static final String BASE_URL = "http://gank.io/api/data/"; private GankService mGankService; @@ -45,33 +44,33 @@ public Observable fetchAndroidAndImages(final int page, final int li final Observable androidGoods = mGankService.fetchAndroid(limit, page); final Observable images = mGankService.fetchImages(limit, page); - return toObservable(Observable.zip(androidGoods, images, (androidGoods1, images1) -> { + return Observable.zip(androidGoods, images, (androidGoods1, images1) -> { MeiziArrayList.getInstance().refillOneItems(images1.getResults()); return androidGoods1; - })); + }); } public Observable fetchAndroid(final int page, final int limit) { - return toObservable(mGankService.fetchAndroid(limit, page)); + return mGankService.fetchAndroid(limit, page); } public Observable fetchIos(final int page, final int limit) { - return toObservable(mGankService.fetchIosGoods(limit, page)); + return mGankService.fetchIosGoods(limit, page); } /** * 干货图片 */ public Observable fetchWelfare(final int page, final int limit) { - return toObservable(mGankService.fetchImages(limit, page)); + return mGankService.fetchImages(limit, page); } /** * 视频 */ public Observable fetchVideo(final int page, final int limit) { - return toObservable(mGankService.fetchVideo(limit, page)); + return mGankService.fetchVideo(limit, page); } /** @@ -81,9 +80,9 @@ public Observable fetchVideoAndImages(final int page, final int limi final Observable androidGoods = mGankService.fetchVideo(limit, page); final Observable images = mGankService.fetchImages(limit, page); - return toObservable(Observable.zip(androidGoods, images, (androidGoods1, images1) -> { + return Observable.zip(androidGoods, images, (androidGoods1, images1) -> { MeiziArrayList.getInstance().refillOneItems(images1.getResults()); return androidGoods1; - })); + }); } } diff --git a/app/src/main/java/com/gank/gankly/mvp/source/remote/JiandanDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/remote/JiandanDataSource.java deleted file mode 100644 index 48e803e7..00000000 --- a/app/src/main/java/com/gank/gankly/mvp/source/remote/JiandanDataSource.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.gank.gankly.mvp.source.remote; - -import com.gank.gankly.mvp.source.BaseDataSourceModel; -import com.gank.gankly.utils.CrashUtils; -import com.socks.library.KLog; - -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; - -import java.io.IOException; - -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; - -/** - * Create by LingYan on 2016-11-21 - */ - -public class JiandanDataSource extends BaseDataSourceModel { - - private volatile static JiandanDataSource mInstance = null; - - public static JiandanDataSource getInstance() { - if (mInstance == null) { - synchronized (JiandanDataSource.class) { - if (mInstance == null) { - mInstance = new JiandanDataSource(); - } - } - } - return mInstance; - } - - /** - * 获取煎蛋数据网址 - * - * @param url 请求地址 - * @return - */ - public Observable jsoupUrlData(final String url) { - return Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter subscriber) throws Exception { - Document doc = null; - try { - doc = Jsoup.connect(url) - .userAgent(USERAGENT) - .timeout(TIME_OUT) - .get(); - } catch (IOException e) { - KLog.e(e); - CrashUtils.crashReport(e); - } - subscriber.onNext(doc); - subscriber.onComplete(); - } - }); - } -} diff --git a/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiZiTuDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiZiTuDataSource.java index 06618a53..38351cf5 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiZiTuDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiZiTuDataSource.java @@ -2,23 +2,11 @@ import android.support.annotation.Nullable; -import com.gank.gankly.mvp.source.BaseDataSourceModel; -import com.gank.gankly.utils.CrashUtils; -import com.socks.library.KLog; - -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; - -import java.io.IOException; - -import io.reactivex.Observable; -import io.reactivex.ObservableOnSubscribe; - /** * Create by LingYan on 2016-10-26 */ -public class MeiZiTuDataSource extends BaseDataSourceModel { +public class MeiZiTuDataSource { @Nullable private static MeiZiTuDataSource mInstance = null; @@ -32,24 +20,5 @@ public static MeiZiTuDataSource getInstance() { } return mInstance; } - - /** - * meizitu 清纯照片 - */ - public Observable fetchQingChun(final String url) { - return toObservable(Observable.create((ObservableOnSubscribe) subscriber -> { - try { - Document doc = Jsoup.connect(url) - .userAgent(DESKTOP_USERAGENT) - .timeout(TIME_OUT) - .get(); - subscriber.onNext(doc); - } catch (IOException e) { - KLog.e(e); - CrashUtils.crashReport(e); - } - subscriber.onComplete(); - })); - } } diff --git a/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiziDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiziDataSource.java deleted file mode 100644 index b19725b9..00000000 --- a/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiziDataSource.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.gank.gankly.mvp.source.remote; - -import com.gank.gankly.mvp.source.BaseDataSourceModel; -import com.gank.gankly.utils.CrashUtils; -import com.socks.library.KLog; - -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; - -import java.io.IOException; - -import io.reactivex.Observable; -import io.reactivex.ObservableOnSubscribe; - -/** - * Create by LingYan on 2016-10-26 - */ - -public class MeiziDataSource extends BaseDataSourceModel { - private volatile static MeiziDataSource mInstance; - - public static MeiziDataSource getInstance() { - if (mInstance == null) { - synchronized (MeiziDataSource.class) { - if (mInstance == null) { - mInstance = new MeiziDataSource(); - } - } - } - return mInstance; - } - - /** - * 清纯妹子页面数据 - */ - public Observable fetchPure(final String url) { - return toObservable(Observable.create((ObservableOnSubscribe) subscriber -> { - try { - Document doc = Jsoup.connect(url) - .userAgent(DESKTOP_USERAGENT) - .timeout(TIME_OUT) - .get(); - subscriber.onNext(doc); - } catch (IOException e) { - KLog.e(e); - CrashUtils.crashReport(e); - } - subscriber.onComplete(); - })); - } - - /** - * 获取每日更新妹子天数 - */ - public Observable fetchDaily(final String url) { - return toObservable(Observable.create((ObservableOnSubscribe) subscriber -> { - try { - Document doc = Jsoup.connect(url) - .ignoreContentType(true) - .userAgent(USERAGENT) - .timeout(TIME_OUT) - .get(); - subscriber.onNext(doc); - } catch (IOException e) { - KLog.e(e); - CrashUtils.crashReport(e); - } - subscriber.onComplete(); - })); - } - - /** - * 获取每日更新妹子当天所有图片 - * - * @param url 每日更新页面的连接 - */ - public Observable fetchDailyDays(final String url) { - return toObservable(Observable.create((ObservableOnSubscribe) subscriber -> { - try { - Document doc = Jsoup.connect(url) - .userAgent(USERAGENT) - .timeout(TIME_OUT) - .get(); - subscriber.onNext(doc); - } catch (IOException e) { - KLog.e(e); - CrashUtils.crashReport(e); - } - subscriber.onComplete(); - })); - } - - public Observable fetchDailyDetailUrls(final String imageUrl) { - return toObservable(Observable.create((ObservableOnSubscribe) subscribe -> { - Document doc = null; - try { - doc = Jsoup.connect(imageUrl) - .userAgent(USERAGENT) - .timeout(TIME_OUT) - .get(); - } catch (IOException e) { - KLog.e(e); - CrashUtils.crashReport(e); - } - subscribe.onNext(doc); - subscribe.onComplete(); - })); - } -} - diff --git a/app/src/main/java/com/gank/gankly/mvp/source/remote/TeamBlogDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/remote/TeamBlogDataSource.java index db37a83b..988cf311 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/remote/TeamBlogDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/remote/TeamBlogDataSource.java @@ -1,17 +1,10 @@ package com.gank.gankly.mvp.source.remote; -import com.gank.gankly.mvp.source.BaseDataSourceModel; - -import org.jsoup.nodes.Document; - -import io.reactivex.Observable; - /** * Create by LingYan on 2016-11-23 - * Email:1373878q.com */ -public class TeamBlogDataSource extends BaseDataSourceModel { +public class TeamBlogDataSource { private static final String BASE_URL = "http://gank.io/xiandu/teamblog/page/"; private volatile static TeamBlogDataSource mInstance; @@ -27,8 +20,4 @@ public static TeamBlogDataSource getInstance() { return mInstance; } - public Observable fetchData(int page) { - String url = BASE_URL + page; - return toObservable(jsoupUrlData(url)); - } } diff --git a/app/src/main/java/com/gank/gankly/mvp/source/remote/TechnologyDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/remote/TechnologyDataSource.java index 69ab0170..3e39af9d 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/remote/TechnologyDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/remote/TechnologyDataSource.java @@ -1,17 +1,10 @@ package com.gank.gankly.mvp.source.remote; -import com.gank.gankly.mvp.source.BaseDataSourceModel; - -import org.jsoup.nodes.Document; - -import io.reactivex.Observable; - /** * Create by LingYan on 2016-11-23 - * Email:1373878q.com */ -public class TechnologyDataSource extends BaseDataSourceModel { +public class TechnologyDataSource { private static final String BASE_URL = "http://gank.io/xiandu/wow/page/"; private volatile static TechnologyDataSource mInstance; @@ -26,9 +19,4 @@ public static TechnologyDataSource getInstance() { } return mInstance; } - - public Observable fetchData(int page) { - String url = BASE_URL + page; - return toObservable(jsoupUrlData(url)); - } } diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java index 12dae193..5ae38dbe 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java @@ -2,8 +2,8 @@ import android.content.Context; import android.lectcoding.ui.adapter.BaseAdapter; -import android.lectcoding.ui.adapter.BasicItem; -import android.lectcoding.ui.adapter.Item; +import android.lectcoding.ui.adapter.BasicViewItem; +import android.lectcoding.ui.adapter.ViewItem; import android.ly.business.domain.Gank; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; @@ -31,7 +31,7 @@ class AndroidAdapter extends BaseAdapter { private Context context; private final List resultsBeans = new ArrayList<>(); - private final List itemList = new ArrayList<>(); + private final List viewItemList = new ArrayList<>(); AndroidAdapter(@NonNull Context context) { this.context = context; @@ -43,11 +43,11 @@ class AndroidAdapter extends BaseAdapter { @Override public void onChanged() { super.onChanged(); - itemList.clear(); + viewItemList.clear(); if (!resultsBeans.isEmpty()) { for (Gank resultsBean : resultsBeans) { if (resultsBean != null) { - itemList.add(new TextItem(resultsBean)); + viewItemList.add(new TextViewItem(resultsBean)); } } } @@ -56,8 +56,8 @@ public void onChanged() { @Override public int getItemViewType(int position) { - if (!itemList.isEmpty()) { - return itemList.get(position).getViewType(); + if (!viewItemList.isEmpty()) { + return viewItemList.get(position).getViewType(); } return RecyclerView.INVALID_TYPE; } @@ -78,10 +78,10 @@ public ButterKnifeHolder onCreateViewHolder(ViewGroup parent, int viewType) { @Override public void onBindViewHolder(ButterKnifeHolder holder, int position) { - final Item item = itemList.get(position); + final ViewItem viewItem = viewItemList.get(position); switch (holder.getItemViewType()) { case NormalViewHolder.LAYOUT: - ((NormalViewHolder) holder).bindHolder((TextItem) item); + ((NormalViewHolder) holder).bindHolder((TextViewItem) viewItem); break; } } @@ -117,8 +117,8 @@ public void setOnItemClickListener(ItemCallback itemCallBack) { @Override public void destroy() { - if (itemList != null) { - itemList.clear(); + if (viewItemList != null) { + viewItemList.clear(); } if (resultsBeans != null) { @@ -128,10 +128,10 @@ public void destroy() { unregisterAdapterDataObserver(dataObserver); } - private static class TextItem extends BasicItem { + private static class TextViewItem extends BasicViewItem { private Gank resultsBean; - TextItem(Gank resultsBean) { + TextViewItem(Gank resultsBean) { this.resultsBean = resultsBean; } @@ -150,7 +150,7 @@ public int getViewType() { } } - static class NormalViewHolder extends ButterKnifeHolder { + static class NormalViewHolder extends ButterKnifeHolder { static final int LAYOUT = R.layout.adapter_android; @BindView(R.id.author_name) @@ -174,7 +174,7 @@ static class NormalViewHolder extends ButterKnifeHolder { } @Override - public void bindHolder(TextItem item) { + public void bindHolder(TextViewItem item) { final Gank resultsBean = item.getResultsBean(); this.resultsBean = resultsBean; diff --git a/app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java b/app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java index 12d58489..b87d61cd 100644 --- a/app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java @@ -1,5 +1,6 @@ package com.gank.gankly.ui.cure; +import android.ly.business.domain.DailyMeizi; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; @@ -7,8 +8,6 @@ import android.widget.TextView; import com.gank.gankly.R; -import com.gank.gankly.bean.DailyMeiziBean; -import com.gank.gankly.listener.ItemClick; import java.util.ArrayList; import java.util.List; @@ -20,12 +19,12 @@ * Create by LingYan on 2016-07-05 */ public class CureAdapter extends RecyclerView.Adapter { - private ItemClick mMeiZiOnClick; - private List mDailyMeiziBeanList; + private ItemCallback itemCallback; + private List mDailyMeiziList; CureAdapter() { setHasStableIds(true); - mDailyMeiziBeanList = new ArrayList<>(); + mDailyMeiziList = new ArrayList<>(); } @Override @@ -36,20 +35,20 @@ public CureAdapter.DailyMeiziHolder onCreateViewHolder(ViewGroup parent, int vie @Override public void onBindViewHolder(CureAdapter.DailyMeiziHolder holder, int position) { - DailyMeiziBean dailyMeiziBean = mDailyMeiziBeanList.get(position); - holder.dailyMeiziBean = dailyMeiziBean; - if (dailyMeiziBean != null) { - holder.txtTitle.setText(dailyMeiziBean.getTitle()); + DailyMeizi dailyMeizi = mDailyMeiziList.get(position); + holder.dailyMeizi = dailyMeizi; + if (dailyMeizi != null) { + holder.txtTitle.setText(dailyMeizi.title); } } - public void setOnItemClickListener(ItemClick onItemClickListener) { - mMeiZiOnClick = onItemClickListener; + public void setOnItemClickListener(ItemCallback itemCallback) { + this.itemCallback = itemCallback; } @Override public int getItemCount() { - return mDailyMeiziBeanList.size(); + return mDailyMeiziList.size(); } @Override @@ -57,22 +56,22 @@ public long getItemId(int position) { return position; } - void refillItem(List dailyMeiziBeanList) { - int size = mDailyMeiziBeanList.size(); - mDailyMeiziBeanList.clear(); + void refillItem(List dailyMeiziList) { + int size = mDailyMeiziList.size(); + mDailyMeiziList.clear(); notifyItemRangeRemoved(0, size); - appendItem(dailyMeiziBeanList); + appendItem(dailyMeiziList); } - public void appendItem(List dailyMeiziBeanList) { - mDailyMeiziBeanList.addAll(dailyMeiziBeanList); - notifyItemRangeInserted(getItemCount(), dailyMeiziBeanList.size()); + public void appendItem(List dailyMeiziList) { + mDailyMeiziList.addAll(dailyMeiziList); + notifyItemRangeInserted(getItemCount(), dailyMeiziList.size()); } public class DailyMeiziHolder extends RecyclerView.ViewHolder implements View.OnClickListener { @BindView(R.id.daily_meizi_title) TextView txtTitle; - DailyMeiziBean dailyMeiziBean; + DailyMeizi dailyMeizi; DailyMeiziHolder(View itemView) { super(itemView); @@ -82,9 +81,13 @@ public class DailyMeiziHolder extends RecyclerView.ViewHolder implements View.On @Override public void onClick(View v) { - if (mMeiZiOnClick != null) { - mMeiZiOnClick.onClick(getAdapterPosition(), dailyMeiziBean); + if (itemCallback != null) { + itemCallback.onItemClick(dailyMeizi); } } } + + interface ItemCallback { + void onItemClick(DailyMeizi dailyMeizi); + } } diff --git a/app/src/main/java/com/gank/gankly/ui/cure/CureContract.java b/app/src/main/java/com/gank/gankly/ui/cure/CureContract.java index 41b0003c..782dd9b4 100644 --- a/app/src/main/java/com/gank/gankly/ui/cure/CureContract.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CureContract.java @@ -1,10 +1,10 @@ package com.gank.gankly.ui.cure; import android.content.Context; +import android.ly.business.domain.Gift; import android.support.annotation.NonNull; -import com.gank.gankly.bean.DailyMeiziBean; -import com.gank.gankly.bean.GiftBean; +import android.ly.business.domain.DailyMeizi; import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; @@ -17,15 +17,15 @@ public interface CureContract { interface View extends SupportView { - void refillData(List list); + void refillData(List list); - void appendItem(List list); + void appendItem(List list); void setMaxProgress(int value); void disProgressDialog(); - void openBrowseActivity(ArrayList list); + void openBrowseActivity(ArrayList list); } abstract class Presenter extends LoadMorePresenter { diff --git a/app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java b/app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java index c47d37cd..4c8a3c0c 100644 --- a/app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java @@ -1,29 +1,21 @@ package com.gank.gankly.ui.cure; import android.app.ProgressDialog; -import android.content.Context; import android.content.Intent; -import android.content.res.Resources; +import android.ly.business.domain.Gift; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.text.TextUtils; -import android.util.TypedValue; import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; import com.gank.gankly.R; -import com.gank.gankly.bean.DailyMeiziBean; -import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.listener.ItemClick; -import com.gank.gankly.rxjava.RxBus_; -import com.gank.gankly.rxjava.theme.ThemeEvent; + +import android.ly.business.domain.DailyMeizi; + import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.gallery.GalleryActivity; -import com.gank.gankly.ui.main.MainActivity; -import com.gank.gankly.utils.StyleUtils; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; @@ -31,22 +23,20 @@ import java.util.List; import butterknife.BindView; -import io.reactivex.disposables.Disposable; /** - * 妹子每日更新 + * 妹子 - 清纯 * Create by LingYan on 2016-07-01 */ -public class CureFragment extends LazyFragment implements CureContract.View, ItemClick { +public class CureFragment extends LazyFragment implements CureContract.View { @BindView(R.id.multiple_status_view) MultipleStatusView mMultipleStatusView; + @BindView(R.id.swipe_refresh) - LySwipeRefreshLayout mSwipeRefreshLayout; + LySwipeRefreshLayout swipeRefresh; private CureAdapter mCureAdapter; - private CurePresenter mPresenter; - private MainActivity mActivity; - private Disposable mDisposable; + private CurePresenter curePresenter; private ProgressDialog mDialog; @@ -59,90 +49,79 @@ protected int getLayoutId() { public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mCureAdapter = new CureAdapter(); - mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)); - mSwipeRefreshLayout.setAdapter(mCureAdapter); + swipeRefresh.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)); + swipeRefresh.setAdapter(mCureAdapter); - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { + swipeRefresh.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { - mPresenter.fetchNew(); + onRefresh(); } @Override public void onLoadMore() { - mPresenter.fetchMore(); + curePresenter.fetchMore(); } }); - mCureAdapter.setOnItemClickListener(this); - - mDisposable = RxBus_.getInstance().toObservable(ThemeEvent.class) - .subscribe(themeEvent -> changeUi()); + mCureAdapter.setOnItemClickListener(cureCallback); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); -// mPresenter = new CurePresenter(MeiziDataSource.getInstance(), this); + curePresenter = new CurePresenter(context, this); } + private final CureAdapter.ItemCallback cureCallback = new CureAdapter.ItemCallback() { + @Override + public void onItemClick(final DailyMeizi dailyMeizi) { + final String url = dailyMeizi.url; + if (!TextUtils.isEmpty(url)) { + showLoadingDialog(); + curePresenter.girlsImages(url); + } + } + }; + @Override protected void initLazy() { - mMultipleStatusView.showLoading(); - mPresenter.fetchNew(); - } - - private void changeUi() { - TypedValue typedValue = new TypedValue(); - Resources.Theme theme = mActivity.getTheme(); - theme.resolveAttribute(R.attr.meiziDailyItemBackground, typedValue, true); - int background = typedValue.data; - TypedValue textValue = new TypedValue(); - theme.resolveAttribute(R.attr.baseAdapterItemTextColor, textValue, true); - int textColor = textValue.data; - theme.resolveAttribute(R.attr.themeBackground, textValue, true); - int recyclerColor = textValue.data; - mSwipeRefreshLayout.getRecyclerView().setBackgroundColor(recyclerColor); - - int childCount = mSwipeRefreshLayout.getRecyclerView().getChildCount(); - for (int childIndex = 0; childIndex < childCount; childIndex++) { - ViewGroup childView = (ViewGroup) mSwipeRefreshLayout.getRecyclerView().getChildAt(childIndex); - childView.setBackgroundColor(background); - TextView title = (TextView) childView.findViewById(R.id.daily_meizi_title); - title.setTextColor(textColor); - } + onRefresh(); + } - StyleUtils.clearRecyclerViewItem(mSwipeRefreshLayout.getRecyclerView()); - StyleUtils.changeSwipeRefreshLayout(mSwipeRefreshLayout); + void onRefresh() { + if (curePresenter != null) { + curePresenter.fetchNew(); + } } private void showLoadingDialog() { if (mDialog == null) { - mDialog = new ProgressDialog(mActivity); + mDialog = new ProgressDialog(context); } mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); mDialog.setMessage(context.getString(R.string.loading_meizi_images)); mDialog.setIndeterminate(true); mDialog.setCanceledOnTouchOutside(true); - mDialog.setOnCancelListener(dialog -> mPresenter.unSubscribe()); + mDialog.setOnCancelListener(dialog -> curePresenter.unSubscribe()); if (!mDialog.isShowing()) { mDialog.show(); } } @Override - public void openBrowseActivity(@NonNull ArrayList list) { + public void openBrowseActivity(@NonNull ArrayList list) { Bundle bundle = new Bundle(); - Intent intent = new Intent(mActivity, GalleryActivity.class); + Intent intent = new Intent(context, GalleryActivity.class); bundle.putString(GalleryActivity.EXTRA_MODEL, GalleryActivity.EXTRA_DAILY); intent.putExtra(GalleryActivity.EXTRA_LIST, list); intent.putExtras(bundle); - mActivity.startActivity(intent); + context.startActivity(intent); } @Override public void hideProgress() { - mSwipeRefreshLayout.setRefreshing(false); + swipeRefresh.setRefreshing(false); } @Override @@ -152,7 +131,7 @@ public void hasNoMoreDate() { @Override public void showProgress() { - mSwipeRefreshLayout.setRefreshing(true); + swipeRefresh.setRefreshing(true); } @Override @@ -176,33 +155,12 @@ public void showError() { } @Override - public void onClick(int position, Object object) { - DailyMeiziBean dailyMeiziBean = (DailyMeiziBean) object; - String url = dailyMeiziBean.getUrl(); - if (!TextUtils.isEmpty(url)) { - showLoadingDialog(); - mPresenter.girlsImages(url); - } - } - - @Override - public void onAttach(Context context) { - super.onAttach(context); - mActivity = (MainActivity) context; - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Override - public void refillData(List list) { + public void refillData(List list) { mCureAdapter.refillItem(list); } @Override - public void appendItem(List list) { + public void appendItem(List list) { mCureAdapter.appendItem(list); } @@ -223,8 +181,5 @@ public void disProgressDialog() { @Override public void onDestroyView() { super.onDestroyView(); - if (mDisposable != null && !mDisposable.isDisposed()) { - mDisposable.dispose(); - } } } diff --git a/app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java b/app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java index 8c168ce5..ab452fea 100644 --- a/app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java @@ -1,10 +1,10 @@ package com.gank.gankly.ui.cure; import android.content.Context; +import android.ly.business.domain.Gift; +import android.ly.jsoup.JsoupServer; -import com.gank.gankly.bean.DailyMeiziBean; -import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.mvp.source.remote.MeiziDataSource; +import android.ly.business.domain.DailyMeizi; import com.gank.gankly.utils.ListUtils; import com.socks.library.KLog; @@ -25,16 +25,11 @@ class CurePresenter extends CureContract.Presenter { private static final String MEIZI_FIRST_URL = "http://www.meizitu.com/a/qingchun_3_"; private static final int LIMIT = 30; - private MeiziDataSource mTask; - private final CureContract.View mModelView; - - private ArrayList imagesList; + private ArrayList imagesList; private int max; CurePresenter(Context context, CureContract.View view) { super(context, view); -// mTask = task; - mModelView = view; } // @Override @@ -55,13 +50,13 @@ public void fetchMore() { } private void fetchData(String url) { - mTask.fetchDaily(url) + JsoupServer.rxConnect(url).build() .subscribe(new Observer() { @Override public void onComplete() { // setFetchPage(getFetchPage() + 1); - mModelView.showContent(); - mModelView.hideProgress(); +// mModelView.showContent(); +// mModelView.hideProgress(); } @Override @@ -89,12 +84,12 @@ public void unSubscribe() { @Override public void girlsImages(final String url) { - mTask.fetchDailyDays(url) + JsoupServer.rxConnect(url).build() .subscribe(new Observer() { @Override public void onComplete() { - mModelView.disProgressDialog(); - mModelView.openBrowseActivity(imagesList); +// mModelView.disProgressDialog(); +// mModelView.openBrowseActivity(imagesList); } @Override @@ -121,29 +116,25 @@ private void getImagesList(Document doc) { if (imgs != null && imgs.size() > 0) { for (int i = 0; i < imgs.size(); i++) { String src = imgs.get(i).attr("src"); - imagesList.add(new GiftBean(src)); + imagesList.add(new Gift(src)); } } } } -// private String getMeiziUrl() { -// return MEIZI_FIRST_URL + getFetchPage() + ".html"; -// } - private void getImages(String url) { - mTask.fetchDailyDetailUrls(url) + JsoupServer.rxConnect(url).build() .map(this::getImageCountList) .subscribe(new Observer() { @Override public void onComplete() { - mModelView.disProgressDialog(); - mModelView.openBrowseActivity(imagesList); +// mModelView.disProgressDialog(); +// mModelView.openBrowseActivity(imagesList); } @Override public void onError(Throwable e) { - mModelView.disProgressDialog(); +// mModelView.disProgressDialog(); KLog.e(e); } @@ -181,7 +172,7 @@ public void onNext(String url) { number = String.valueOf(i); } lastUrl = baseUrl + name + number + endType; - imagesList.add(new GiftBean(lastUrl)); + imagesList.add(new Gift(lastUrl)); } } }); @@ -189,7 +180,7 @@ public void onNext(String url) { private void parseMeiZiTu(Document document) { if (document != null) { - List list = getColumnList(document); + List list = getColumnList(document); // list = filterData(list, mModelView); if (ListUtils.getSize(list) > 0) { // if (getFetchPage() > 1) { @@ -203,16 +194,16 @@ private void parseMeiZiTu(Document document) { private void parseDocument(Document document) { if (document != null) { - List list = getDays(document); + List list = getDays(document); // list = filterData(list, mModelView); if (ListUtils.getSize(list) > 0) { - mModelView.refillData(list); +// mModelView.refillData(list); } } } - private List getColumnList(Document doc) { - List list = new ArrayList<>(); + private List getColumnList(Document doc) { + List list = new ArrayList<>(); if (doc != null) { Elements times = doc.select(".con"); KLog.d("times" + times.size()); @@ -220,7 +211,7 @@ private List getColumnList(Document doc) { Elements a_href = doc.select(".con .pic a"); for (int i = 0; i < times.size(); i++) { KLog.d("href:" + a_href.get(i).attr("href")); - list.add(new DailyMeiziBean(a_href.get(i).attr("href"), times.get(i).text())); + list.add(new DailyMeizi(a_href.get(i).attr("href"), times.get(i).text())); } } return list; @@ -229,13 +220,13 @@ private List getColumnList(Document doc) { /** * 筛选过滤得到月份集合 */ - private List getDays(Document doc) { - List list = new ArrayList<>(); + private List getDays(Document doc) { + List list = new ArrayList<>(); if (doc != null) { Elements times = doc.select(".post-content .archive-brick"); Elements a_href = doc.select(".post-content .archive-brick a"); for (int i = 0; i < a_href.size(); i++) { - list.add(new DailyMeiziBean(a_href.get(i).attr("href"), times.get(i).text())); + list.add(new DailyMeizi(a_href.get(i).attr("href"), times.get(i).text())); } } return list; diff --git a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziAdapter.java b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziAdapter.java index ccc51ab2..243677dc 100644 --- a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziAdapter.java @@ -1,5 +1,7 @@ package com.gank.gankly.ui.dailymeizi; +import android.ly.business.domain.DailyMeizi; +import android.ly.business.domain.DailyMeiziBean; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; @@ -7,7 +9,6 @@ import android.widget.TextView; import com.gank.gankly.R; -import com.gank.gankly.bean.DailyMeiziBean; import com.gank.gankly.listener.ItemClick; import java.util.ArrayList; @@ -21,11 +22,11 @@ */ public class DailyMeiziAdapter extends RecyclerView.Adapter { private ItemClick mMeiZiOnClick; - private List mDailyMeiziBeanList; + private List mDailyMeiziList; DailyMeiziAdapter() { setHasStableIds(true); - mDailyMeiziBeanList = new ArrayList<>(); + mDailyMeiziList = new ArrayList<>(); } @Override @@ -36,10 +37,10 @@ public DailyMeiziAdapter.DailyMeiziHolder onCreateViewHolder(ViewGroup parent, i @Override public void onBindViewHolder(DailyMeiziAdapter.DailyMeiziHolder holder, int position) { - DailyMeiziBean dailyMeiziBean = mDailyMeiziBeanList.get(position); - holder.dailyMeiziBean = dailyMeiziBean; - if (dailyMeiziBean != null) { - holder.txtTitle.setText(dailyMeiziBean.getTitle()); + DailyMeizi dailyMeizi = mDailyMeiziList.get(position); + holder.dailyMeizi = dailyMeizi; + if (dailyMeizi != null) { + holder.txtTitle.setText(dailyMeizi.getTitle()); } } @@ -49,7 +50,7 @@ public void setOnItemClickListener(ItemClick onItemClickListener) { @Override public int getItemCount() { - return mDailyMeiziBeanList.size(); + return mDailyMeiziList.size(); } @Override @@ -57,22 +58,22 @@ public long getItemId(int position) { return position; } - void refillItem(List dailyMeiziBeanList) { - int size = mDailyMeiziBeanList.size(); - mDailyMeiziBeanList.clear(); + void refillItem(List dailyMeiziList) { + int size = mDailyMeiziList.size(); + mDailyMeiziList.clear(); notifyItemRangeRemoved(0, size); - appendItem(dailyMeiziBeanList); + appendItem(dailyMeiziList); } - public void appendItem(List dailyMeiziBeanList) { - mDailyMeiziBeanList.addAll(dailyMeiziBeanList); - notifyItemRangeInserted(getItemCount(), dailyMeiziBeanList.size()); + public void appendItem(List dailyMeiziList) { + mDailyMeiziList.addAll(dailyMeiziList); + notifyItemRangeInserted(getItemCount(), dailyMeiziList.size()); } public class DailyMeiziHolder extends RecyclerView.ViewHolder implements View.OnClickListener { @BindView(R.id.daily_meizi_title) TextView txtTitle; - DailyMeiziBean dailyMeiziBean; + DailyMeizi dailyMeizi; DailyMeiziHolder(View itemView) { super(itemView); @@ -83,7 +84,7 @@ public class DailyMeiziHolder extends RecyclerView.ViewHolder implements View.On @Override public void onClick(View v) { if (mMeiZiOnClick != null) { - mMeiZiOnClick.onClick(getAdapterPosition(), dailyMeiziBean); + mMeiZiOnClick.onClick(getAdapterPosition(), dailyMeizi); } } } diff --git a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziContract.java b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziContract.java index d2b42989..92490e93 100644 --- a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziContract.java +++ b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziContract.java @@ -1,10 +1,10 @@ package com.gank.gankly.ui.dailymeizi; import android.content.Context; +import android.ly.business.domain.Gift; import android.support.annotation.NonNull; -import com.gank.gankly.bean.DailyMeiziBean; -import com.gank.gankly.bean.GiftBean; +import android.ly.business.domain.DailyMeizi; import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; @@ -17,15 +17,15 @@ public interface DailyMeiziContract { interface View extends SupportView { - void refillData(List list); + void refillData(List list); - void appendItem(List list); + void appendItem(List list); void setMaxProgress(int value); void disProgressDialog(); - void openBrowseActivity(ArrayList list); + void openBrowseActivity(ArrayList list); } abstract class Presenter extends LoadMorePresenter { diff --git a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziFragment.java b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziFragment.java index cf83ac6c..edb8b59e 100644 --- a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziFragment.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.Intent; import android.content.res.Resources; +import android.ly.business.domain.Gift; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -15,8 +16,7 @@ import android.widget.TextView; import com.gank.gankly.R; -import com.gank.gankly.bean.DailyMeiziBean; -import com.gank.gankly.bean.GiftBean; +import android.ly.business.domain.DailyMeizi; import com.gank.gankly.listener.ItemClick; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; @@ -130,7 +130,7 @@ private void showLoadingDialog() { } @Override - public void openBrowseActivity(@NonNull ArrayList list) { + public void openBrowseActivity(@NonNull ArrayList list) { Bundle bundle = new Bundle(); Intent intent = new Intent(mActivity, GalleryActivity.class); bundle.putString(GalleryActivity.EXTRA_MODEL, GalleryActivity.EXTRA_DAILY); @@ -182,8 +182,8 @@ private void showLoading() { @Override public void onClick(int position, Object object) { - DailyMeiziBean dailyMeiziBean = (DailyMeiziBean) object; - String url = dailyMeiziBean.getUrl(); + DailyMeizi dailyMeizi = (DailyMeizi) object; + String url = dailyMeizi.getUrl(); if (!TextUtils.isEmpty(url)) { showLoadingDialog(); mPresenter.girlsImages(url); @@ -202,12 +202,12 @@ public void onCreate(@Nullable Bundle savedInstanceState) { } @Override - public void refillData(List list) { + public void refillData(List list) { mDailyMeiziAdapter.refillItem(list); } @Override - public void appendItem(List list) { + public void appendItem(List list) { mDailyMeiziAdapter.appendItem(list); } diff --git a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziPresenter.java b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziPresenter.java index 3a864010..40db4ee9 100644 --- a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziPresenter.java @@ -1,10 +1,10 @@ package com.gank.gankly.ui.dailymeizi; import android.content.Context; +import android.ly.business.domain.Gift; +import android.ly.jsoup.JsoupServer; -import com.gank.gankly.bean.DailyMeiziBean; -import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.mvp.source.remote.MeiziDataSource; +import android.ly.business.domain.DailyMeizi; import com.gank.gankly.utils.ListUtils; import com.socks.library.KLog; @@ -23,9 +23,8 @@ public class DailyMeiziPresenter extends DailyMeiziContract.Presenter { private static final String MEIZI_FIRST_URL = "http://m.mzitu.com/all"; - private MeiziDataSource mTask; private final DailyMeiziContract.View mModelView; - private ArrayList imagesList; + private ArrayList imagesList; private int max; public DailyMeiziPresenter(Context context, DailyMeiziContract.View view) { @@ -45,7 +44,7 @@ public void fetchMore() { } private void fetchData(String url) { - mTask.fetchDaily(url) + JsoupServer.rxConnect(url).build() .subscribe(new Observer() { @Override public void onComplete() { @@ -79,7 +78,7 @@ public void unSubscribe() { @Override public void girlsImages(final String url) { - mTask.fetchDailyDays(url) + JsoupServer.rxConnect(url).build() .map(document -> { max = getImageUrlsMax(document); if (max > 0) { @@ -112,7 +111,7 @@ public void onNext(String url) { } private void getImages(String url) { - mTask.fetchDailyDetailUrls(url) + JsoupServer.rxConnect(url).build() .map(document -> getImageCountList(document)) .subscribe(new Observer() { @Override @@ -161,7 +160,7 @@ public void onNext(String url) { number = String.valueOf(i); } lastUrl = baseUrl + name + number + endType; - imagesList.add(new GiftBean(lastUrl)); + imagesList.add(new Gift(lastUrl)); } } }); @@ -169,7 +168,7 @@ public void onNext(String url) { private void parseDocument(Document document) { if (document != null) { - List list = getDays(document); + List list = getDays(document); // list = filterData(list, mModelView); if (ListUtils.getSize(list) > 0) { mModelView.refillData(list); @@ -180,13 +179,13 @@ private void parseDocument(Document document) { /** * 筛选过滤得到月份集合 */ - private List getDays(Document doc) { - List list = new ArrayList<>(); + private List getDays(Document doc) { + List list = new ArrayList<>(); if (doc != null) { Elements times = doc.select(".post-content .archive-brick"); Elements a_href = doc.select(".post-content .archive-brick a"); for (int i = 0; i < a_href.size(); i++) { - list.add(new DailyMeiziBean(a_href.get(i).attr("href"), times.get(i).text())); + list.add(new DailyMeizi(a_href.get(i).attr("href"), times.get(i).text())); } } return list; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java index 61895574..ef4bb80c 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanPresenter.java @@ -1,9 +1,9 @@ package com.gank.gankly.ui.discovered.jiandan; import android.content.Context; +import android.ly.jsoup.JsoupServer; import com.gank.gankly.bean.JianDanBean; -import com.gank.gankly.mvp.source.remote.JiandanDataSource; import com.socks.library.KLog; import org.jsoup.nodes.Document; @@ -13,9 +13,7 @@ import java.util.List; import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; /** @@ -26,7 +24,6 @@ public class JiandanPresenter extends JiandanContract.Presenter { private static final String BASE_URL = "http://i.jandan.net/page/"; private static final int LIMIT = 24; - private JiandanDataSource mJiandanDataSource; private JiandanContract.View mView; public JiandanPresenter(Context context, JiandanContract.View view) { @@ -40,10 +37,7 @@ public void unSubscribe() { public void fetchData(int page) { String url = BASE_URL + page; - mJiandanDataSource.jsoupUrlData(url) - .subscribeOn(Schedulers.io()) - .unsubscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) + JsoupServer.rxConnect(url).build() .map(document -> mapResult(document)) .subscribe(new Observer>() { @Override diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java index fb45eca2..1bae6f67 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogPresenter.java @@ -1,6 +1,7 @@ package com.gank.gankly.ui.discovered.teamBlog; import android.content.Context; +import android.ly.jsoup.JsoupServer; import com.gank.gankly.bean.JianDanBean; import com.gank.gankly.mvp.source.remote.TeamBlogDataSource; @@ -29,7 +30,8 @@ public class TeamBlogPresenter extends TechnologyContract.Presenter { } private void fetchData(int page) { - mTask.fetchData(page).subscribe(new Observer() { + String url = ""; + JsoupServer.rxConnect(url).build().subscribe(new Observer() { @Override public void onComplete() { mView.showContent(); diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyPresenter.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyPresenter.java index 2217e5cd..4299f2e4 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyPresenter.java @@ -1,6 +1,7 @@ package com.gank.gankly.ui.discovered.technology; import android.content.Context; +import android.ly.jsoup.JsoupServer; import com.gank.gankly.bean.JianDanBean; import com.gank.gankly.mvp.source.remote.TechnologyDataSource; @@ -33,28 +34,31 @@ public TechnologyPresenter(Context context, TechnologyContract.View view) { // } private void fetchData(int page) { - mTask.fetchData(page).subscribe(new Observer() { - @Override - public void onError(Throwable e) { - mView.hideProgress(); - KLog.e(e); - } - - @Override - public void onComplete() { - mView.showContent(); - mView.hideProgress(); + JsoupServer + .rxConnect("") + .build() + .subscribe(new Observer() { + @Override + public void onError(Throwable e) { + mView.hideProgress(); + KLog.e(e); + } + + @Override + public void onComplete() { + mView.showContent(); + mView.hideProgress(); // int nextPage = getFetchPage() + 1; // setFetchPage(nextPage); - } + } - @Override - public void onSubscribe(Disposable d) { + @Override + public void onSubscribe(Disposable d) { - } + } - @Override - public void onNext(Document document) { + @Override + public void onNext(Document document) { // List list = parseDocument(document); // if (list.size() > 0) { // if (getFetchPage() > 1) { @@ -63,8 +67,8 @@ public void onNext(Document document) { // mView.refillData(list); // } // } - } - }); + } + }); } private List parseDocument(Document document) { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java index 6ea54b25..4df16afa 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java @@ -111,11 +111,11 @@ public void setOnItemClickListener(MeiziOnClick onItemClickListener) { } class GankViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { - @BindView(R.id.goods_txt_title) + @BindView(R.id.title) TextView txtDesc; - @BindView(R.id.goods_img_bg) + @BindView(R.id.goods_background) ImageView mImageView; - @BindView(R.id.video_txt_author) + @BindView(R.id.author) TextView txtAuthor; public GankViewHolder(View itemView) { diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java index 245e0794..89faeec1 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java @@ -107,7 +107,7 @@ protected void callBackRefreshUi() { for (int childIndex = 0; childIndex < childCount; childIndex++) { ViewGroup childView = (ViewGroup) mRecyclerView.getChildAt(childIndex); View view = childView.findViewById(R.id.goods_rl_title); - TextView title = (TextView) childView.findViewById(R.id.goods_txt_title); + TextView title = (TextView) childView.findViewById(R.id.title); view.setBackgroundResource(background); title.setTextColor(textColor); } diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java index 4ef255d2..7553b336 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java @@ -6,6 +6,7 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.ly.business.domain.Gank; +import android.ly.business.domain.Gift; import android.net.Uri; import android.os.Bundle; import android.os.Environment; @@ -39,7 +40,6 @@ import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; import com.gank.gankly.R; -import com.gank.gankly.bean.GiftBean; import com.gank.gankly.config.MeiziArrayList; import com.gank.gankly.ui.base.activity.BaseActivity; import com.gank.gankly.utils.CrashUtils; @@ -118,7 +118,7 @@ public class GalleryActivity extends BaseActivity implements ViewPager.OnPageCha private Disposable subscription; private Disposable autoTipable; - private List mGiftList; + private List mGiftList; private Bitmap mBitmap; private String mViewsModel = EXTRA_GANK; private boolean isCanPlay = true; @@ -260,15 +260,15 @@ protected void bindListener() { mToolbar.setNavigationOnClickListener(v -> onBackPressed()); } - private List changeImageList(List resultsBeen) { - List list = new ArrayList<>(); + private List changeImageList(List resultsBeen) { + List list = new ArrayList<>(); if (!ListUtils.isListEmpty(resultsBeen)) { Gank resultsBean; String url; for (int i = 0; i < resultsBeen.size(); i++) { resultsBean = resultsBeen.get(i); url = resultsBean.url; - list.add(new GiftBean(url)); + list.add(new Gift(url)); } } return list; diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java index 0957252d..ab99af18 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java @@ -2,8 +2,8 @@ import android.content.Context; import android.lectcoding.ui.adapter.BaseAdapter; -import android.lectcoding.ui.adapter.BasicItem; -import android.lectcoding.ui.adapter.Item; +import android.lectcoding.ui.adapter.BasicViewItem; +import android.lectcoding.ui.adapter.ViewItem; import android.ly.business.domain.Gank; import android.support.v7.widget.RecyclerView; import android.view.View; @@ -26,7 +26,7 @@ */ class IosAdapter extends BaseAdapter { private final List resultsBeans = new ArrayList<>(); - private final List itemList = new ArrayList<>(); + private final List viewItemList = new ArrayList<>(); private Context context; @@ -43,10 +43,10 @@ class IosAdapter extends BaseAdapter { @Override public void onChanged() { super.onChanged(); - itemList.clear(); + viewItemList.clear(); if (!resultsBeans.isEmpty()) { for (Gank resultsBean : resultsBeans) { - itemList.add(new TextItem(resultsBean)); + viewItemList.add(new TextViewItem(resultsBean)); } } } @@ -68,17 +68,17 @@ public ButterKnifeHolder onCreateViewHolder(ViewGroup parent, int viewType) { @Override public void onBindViewHolder(ButterKnifeHolder holder, int position) { - final Item item = itemList.get(position); + final ViewItem viewItem = viewItemList.get(position); switch (holder.getItemViewType()) { case NormalViewHolder.LAYOUT: - ((NormalViewHolder) holder).bindHolder((TextItem) item); + ((NormalViewHolder) holder).bindHolder((TextViewItem) viewItem); break; } } @Override public int getItemViewType(int position) { - return itemList.get(position).getViewType(); + return viewItemList.get(position).getViewType(); } @Override @@ -115,8 +115,9 @@ public void setOnItemClickListener(ItemCallback itemCallBack) { this.itemCallBack = itemCallBack; } - static class NormalViewHolder extends ButterKnifeHolder { + static class NormalViewHolder extends ButterKnifeHolder { static final int LAYOUT = R.layout.adapter_ios; + @BindView(R.id.author_name) TextView authorName; @@ -134,7 +135,7 @@ static class NormalViewHolder extends ButterKnifeHolder { } @Override - public void bindHolder(TextItem item) { + public void bindHolder(TextViewItem item) { final Gank resultsBean = item.getResultsBean(); time.setText(item.getTime()); @@ -149,10 +150,10 @@ public void bindHolder(TextItem item) { } } - static class TextItem extends BasicItem { + static class TextViewItem extends BasicViewItem { private Gank resultsBean; - TextItem(Gank resultsBean) { + TextViewItem(Gank resultsBean) { this.resultsBean = resultsBean; } diff --git a/app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java b/app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java index d2f07693..92917031 100644 --- a/app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java @@ -1,9 +1,12 @@ package com.gank.gankly.ui.pure; import android.content.Context; +import android.lectcoding.ui.adapter.BasicViewItem; +import android.lectcoding.ui.adapter.ObserverAdapter; +import android.lectcoding.ui.adapter.ViewItem; +import android.lectcoding.ui.logcat.Logcat; +import android.ly.business.domain.Gift; import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; @@ -14,58 +17,65 @@ import com.bumptech.glide.load.model.LazyHeaders; import com.bumptech.glide.request.RequestOptions; import com.gank.gankly.R; -import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.listener.ItemClick; +import com.gank.gankly.butterknife.ButterKnifeHolder; import java.util.ArrayList; import java.util.List; import butterknife.BindView; -import butterknife.ButterKnife; /** * Create by LingYan on 2016-04-25 */ -public class PureAdapter extends RecyclerView.Adapter { - private List mResults; - private ItemClick mMeiZiOnClick; +public class PureAdapter extends ObserverAdapter { + private final List gifts = new ArrayList<>(); + private ItemClickCallback callback; private Context mContext; + private final List items = new ArrayList<>(); - public PureAdapter(Context context) { + PureAdapter(Context context) { setHasStableIds(true); - mResults = new ArrayList<>(); mContext = context; } + private final RecyclerView.AdapterDataObserver observer = new RecyclerView.AdapterDataObserver() { + @Override + public void onChanged() { + super.onChanged(); + } + + @Override + public void onItemRangeInserted(int positionStart, int itemCount) { + super.onItemRangeInserted(positionStart, itemCount); + } + }; + @Override - public GankViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_gift, parent, false); - return new GankViewHolder(view); + public PureViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + PureViewHolder holder; + switch (viewType) { + case GiftViewHolder.LAYOUT: + holder = new GiftViewHolder(parent); + break; + default: + holder = null; + break; + } + return holder; } @Override - public void onBindViewHolder(GankViewHolder holder, int position) { - final GiftBean bean = mResults.get(holder.getAdapterPosition()); - holder.mGiftBean = bean; - holder.position = position; - holder.txtDesc.setText(bean.getTitle()); - holder.txtAuthor.setText(bean.getTime()); - GlideUrl glideUrl = new GlideUrl(bean.getImgUrl(), new LazyHeaders.Builder() - .addHeader("referer", "http://www.mzitu.com/mm/") - .build()); - Glide.with(mContext) - .asBitmap() - .load(glideUrl) - .apply(new RequestOptions() - .fitCenter() - .diskCacheStrategy(DiskCacheStrategy.ALL) - ) - .into(holder.mImageView); + public void onBindViewHolder(PureViewHolder holder, int position) { + switch (holder.getItemViewType()) { + case GiftViewHolder.LAYOUT: + ((GiftViewHolder) holder).bindHolder((GiftViewItem) items.get(position), callback); + break; + } } @Override public int getItemCount() { - return mResults.size(); + return items.size(); } @Override @@ -74,54 +84,140 @@ public long getItemId(int position) { } @Override - public void onViewRecycled(GankViewHolder holder) { + public int getItemViewType(int position) { + if (!items.isEmpty()) { + return items.get(position).getViewType(); + } + return super.getItemViewType(position); + } + + @Override + public void onViewRecycled(PureViewHolder holder) { super.onViewRecycled(holder); Glide.get(mContext).clearMemory(); } - public void refillItems(List getResults) { - int size = mResults.size(); - mResults.clear(); - notifyItemRangeRemoved(0, size); - appedItems(getResults); + void refillItems(List getResults) { + gifts.clear(); + items.clear(); + appendItems(getResults); } - public void appedItems(List getResults) { - mResults.addAll(getResults); - notifyItemRangeInserted(mResults.size(), getResults.size()); + public void appendItems(List getResults) { + int startIndex = gifts.size(); + Logcat.d(""); + gifts.addAll(getResults); + changeItem(startIndex); + } + + private void changeItem(int startIndex) { + if (!gifts.isEmpty()) { + for (int i = startIndex, size = gifts.size(); i < size; i++) { + final Gift gift = gifts.get(i); + if (gift != null) { + items.add(new GiftViewItem(gift)); + } + } + } } public void clear() { - if (mResults != null) { - mResults.clear(); + if (gifts != null) { + gifts.clear(); + } + } + + public void setOnItemClickListener(ItemClickCallback itemClickCallback) { + this.callback = itemClickCallback; + } + + @Override + public void destroy() { + super.destroy(); + items.clear(); + gifts.clear(); + } + + @Override + protected RecyclerView.AdapterDataObserver getObserver() { + return observer; + } + + static class GiftViewHolder extends PureViewHolder { + static final int LAYOUT = R.layout.adapter_gift; + + @BindView(R.id.title) + TextView title; + + @BindView(R.id.goods_background) + ImageView goodsBackground; + + @BindView(R.id.author) + TextView author; + + GiftViewHolder(ViewGroup parent) { + super(parent, LAYOUT); + } + + @Override + void bindHolder(GiftViewItem item, ItemClickCallback callback) { + super.bindHolder(item, callback); + final Gift gift = item.gift; + final Context context = itemView.getContext(); + title.setText(gift.getTitle()); + author.setText(gift.getTime()); + + final GlideUrl glideUrl = new GlideUrl(gift.getImgUrl(), new LazyHeaders.Builder() + .addHeader("referer", "http://www.mzitu.com/mm/") + .build()); + + Glide.with(context) + .asBitmap() + .load(glideUrl) + .apply(new RequestOptions() + .fitCenter() + .diskCacheStrategy(DiskCacheStrategy.ALL) + ) + .into(goodsBackground); + + itemView.setOnClickListener(v -> { + if (callback != null) { + callback.onItemClick(gift); + } + }); } } - public void setOnItemClickListener(ItemClick onItemClickListener) { - mMeiZiOnClick = onItemClickListener; + static class GiftViewItem extends BasicViewItem { + final Gift gift; + + GiftViewItem(Gift gift) { + this.gift = gift; + } + + @Override + public int getViewType() { + return GiftViewHolder.LAYOUT; + } } - class GankViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { - @BindView(R.id.goods_txt_title) - TextView txtDesc; - @BindView(R.id.goods_img_bg) - ImageView mImageView; - @BindView(R.id.video_txt_author) - TextView txtAuthor; - int position; - GiftBean mGiftBean; + abstract static class PureViewHolder extends ButterKnifeHolder { - public GankViewHolder(View itemView) { - super(itemView); - itemView.setOnClickListener(this); - ButterKnife.bind(this, itemView); + PureViewHolder(ViewGroup parent, int layoutRes) { + super(parent, layoutRes); } @Override - public void onClick(View v) { - if (mMeiZiOnClick != null) { - mMeiZiOnClick.onClick(position, mGiftBean); - } + public void bindHolder(II item) { + } + + void bindHolder(II item, ItemClickCallback callback) { + + } + } + + interface ItemClickCallback { + void onItemClick(Gift gift); } } diff --git a/app/src/main/java/com/gank/gankly/ui/pure/PureContract.java b/app/src/main/java/com/gank/gankly/ui/pure/PureContract.java index fb178e6a..2f7f6c45 100644 --- a/app/src/main/java/com/gank/gankly/ui/pure/PureContract.java +++ b/app/src/main/java/com/gank/gankly/ui/pure/PureContract.java @@ -1,9 +1,9 @@ package com.gank.gankly.ui.pure; import android.content.Context; +import android.ly.business.domain.Gift; import android.support.annotation.NonNull; -import com.gank.gankly.bean.GiftBean; import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; @@ -16,11 +16,11 @@ public interface PureContract { interface View extends SupportView { - void refillData(List list); + void refillData(List list); - void appendData(List list); + void appendData(List list); - void openGalleryActivity(ArrayList list); + void openGalleryActivity(ArrayList list); void disLoadingDialog(); } diff --git a/app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java b/app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java index 2a3c8535..9324ce9e 100644 --- a/app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java @@ -2,6 +2,7 @@ import android.app.ProgressDialog; import android.content.Intent; +import android.ly.business.domain.Gift; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -10,8 +11,6 @@ import android.view.View; import com.gank.gankly.R; -import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.listener.ItemClick; import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.gallery.GalleryActivity; import com.gank.gankly.widget.LySwipeRefreshLayout; @@ -26,21 +25,20 @@ import io.reactivex.android.schedulers.AndroidSchedulers; /** - * 清纯妹子 + * 妹子 - 清纯 * Create by LingYan on 2016-05-17 */ -public class PureFragment extends LazyFragment implements ItemClick, PureContract.View { +public class PureFragment extends LazyFragment implements PureContract.View { @BindView(R.id.swipe_refresh) LySwipeRefreshLayout swipeRefresh; @BindView(R.id.multiple_status_view) MultipleStatusView multipleStatusView; - private PureAdapter mAdapter; + private PureAdapter pureAdapter; + private PureContract.Presenter purePresenter; - private ArrayList mImageCountList = new ArrayList<>(); - private ProgressDialog mDialog; - private PureContract.Presenter mPresenter; + private ProgressDialog progressDialog; @Override protected int getLayoutId() { @@ -56,13 +54,13 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat super.onViewCreated(view, savedInstanceState); initRecycler(); - mAdapter.setOnItemClickListener(this); + pureAdapter.setOnItemClickListener(pureCallback); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mPresenter = new PurePresenter(getContext(), this); + purePresenter = new PurePresenter(getContext(), this); initRefresh(); } @@ -71,14 +69,26 @@ protected void initLazy() { initRefresh(); } + private final PureAdapter.ItemClickCallback pureCallback = new PureAdapter.ItemClickCallback() { + @Override + public void onItemClick(final Gift gift) { + showDialog(); + Observable.just(gift) + .throttleFirst(100, TimeUnit.MILLISECONDS) + .subscribeOn(AndroidSchedulers.mainThread()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(giftBean1 -> purePresenter.refreshImages(giftBean1.getUrl())); + } + }; + private void initRefresh() { multipleStatusView.showLoading(); - mPresenter.refreshPure(); + purePresenter.refreshPure(); } private void initRecycler() { - mAdapter = new PureAdapter(context); - swipeRefresh.setAdapter(mAdapter); + pureAdapter = new PureAdapter(context); + swipeRefresh.setAdapter(pureAdapter); swipeRefresh.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); @@ -87,52 +97,33 @@ private void initRecycler() { @Override public void onRefresh() { - mPresenter.refreshPure(); + purePresenter.refreshPure(); } @Override public void onLoadMore() { - mPresenter.appendPure(); + purePresenter.appendPure(); } }); } private void showDialog() { - if (mDialog == null) { - mDialog = new ProgressDialog(context); + if (progressDialog == null) { + progressDialog = new ProgressDialog(context); } - mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); - mDialog.setMessage(context.getString(R.string.loading_meizi_images)); - mDialog.setIndeterminate(true); - mDialog.setCanceledOnTouchOutside(true); - mDialog.setOnCancelListener(dialog -> mPresenter.unSubscribe()); - - if (!mDialog.isShowing()) { - mDialog.show(); - } + progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); + progressDialog.setMessage(context.getString(R.string.loading_meizi_images)); + progressDialog.setIndeterminate(true); + progressDialog.setCanceledOnTouchOutside(true); + progressDialog.setOnCancelListener(dialog -> purePresenter.unSubscribe()); - if (!mDialog.isShowing()) { - mDialog.show(); + if (!progressDialog.isShowing()) { + progressDialog.show(); } } - @Override - public void onClick(int position, Object object) { - showDialog(); - final GiftBean giftBean = (GiftBean) object; - Observable.just(giftBean) - .throttleFirst(100, TimeUnit.MILLISECONDS) - .subscribeOn(AndroidSchedulers.mainThread()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(giftBean1 -> mPresenter.refreshImages(giftBean1.getUrl())); - } - - public List getList() { - return mImageCountList; - } - @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -187,17 +178,23 @@ private void showLoading() { } @Override - public void refillData(List list) { - mAdapter.refillItems(list); + public void refillData(List list) { + if (pureAdapter != null) { + pureAdapter.refillItems(list); + pureAdapter.notifyDataSetChanged(); + } } @Override - public void appendData(List list) { - mAdapter.appedItems(list); + public void appendData(List list) { + if (pureAdapter != null) { + pureAdapter.appendItems(list); + pureAdapter.notifyDataSetChanged(); + } } @Override - public void openGalleryActivity(ArrayList list) { + public void openGalleryActivity(ArrayList list) { Bundle bundle = new Bundle(); Intent intent = new Intent(context, GalleryActivity.class); bundle.putString(GalleryActivity.EXTRA_MODEL, GalleryActivity.EXTRA_GIFT); @@ -210,13 +207,16 @@ public void openGalleryActivity(ArrayList list) { @Override public void disLoadingDialog() { - if (mDialog != null && mDialog.isShowing()) { - mDialog.dismiss(); + if (progressDialog != null && progressDialog.isShowing()) { + progressDialog.dismiss(); } } @Override public void onDestroyView() { super.onDestroyView(); + if (pureAdapter != null) { + pureAdapter.destroy(); + } } } diff --git a/app/src/main/java/com/gank/gankly/ui/pure/PurePresenter.java b/app/src/main/java/com/gank/gankly/ui/pure/PurePresenter.java index 1bf4f078..c5ebe641 100644 --- a/app/src/main/java/com/gank/gankly/ui/pure/PurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/pure/PurePresenter.java @@ -1,14 +1,12 @@ package com.gank.gankly.ui.pure; import android.content.Context; +import android.lectcoding.ui.logcat.Logcat; +import android.ly.business.domain.Gift; import android.ly.business.domain.PageConfig; -import android.os.Environment; +import android.ly.jsoup.JsoupServer; import android.text.TextUtils; -import android.util.Log; -import com.gank.gankly.R; -import com.gank.gankly.bean.GiftBean; -import com.gank.gankly.mvp.source.remote.MeiziDataSource; import com.gank.gankly.utils.CrashUtils; import com.gank.gankly.utils.StringUtils; import com.socks.library.KLog; @@ -16,10 +14,6 @@ import org.jsoup.nodes.Document; import org.jsoup.select.Elements; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; import java.util.ArrayList; import java.util.IllegalFormatException; import java.util.List; @@ -32,45 +26,35 @@ */ public class PurePresenter extends PureContract.Presenter { - // private static String BASE_URL = "http://www.mzitu.com/mm"; - //http://www.ygdy8.net/html/gndy/china/list_4_1.html - private static final String URL = "http://www.ygdy8.net/html/gndy/china/list_4"; - private static final String HOST = "http://www.ygdy8.net"; - private static final String BASE_URL = HOST + "/html/gndy/china/index.html"; - private String nextUrl = BASE_URL + "/page/"; - - private List pageUrls = new ArrayList<>(); - private List remoteUrl = new ArrayList<>(); - private List ftpUrls = new ArrayList<>(); - - private int mMaxPageNumber; - private PageConfig mPageConfig; - private int urlIndex = 0; - private int pageUrlIndex = 0; + private static String BASE_URL = "http://www.mzitu.com/mm/"; + private static String HOST = "page/"; + private static String nextUrl = BASE_URL + HOST; + private int maxPageNumber; + private PageConfig pageConfig; PurePresenter(Context context, PureContract.View view) { super(context, view); - mPageConfig = new PageConfig(); - mPageConfig.limit = 24; - urlIndex = 0; - for (int i = 11; i < 43; i++) { - remoteUrl.add(this.context.getString(R.string.url_format, URL, i)); - } + pageConfig = new PageConfig(); + pageConfig.limit = 24; } @Override public void refreshPure() { - fetchData(0); + fetchData(1); } @Override public void appendPure() { - fetchData(0); + int page = pageConfig.curPage; + if (page < maxPageNumber) { + fetchData(page); + } } - private void fetchData(int index) { - MeiziDataSource.getInstance().fetchPure(remoteUrl.get(index)) + private void fetchData(int page) { + String url = getUrl(page); + JsoupServer.rxConnect(url).build() .doFinally(() -> view.hideProgress()) .subscribe(new Observer() { @Override @@ -80,113 +64,32 @@ public void onSubscribe(Disposable d) { @Override public void onNext(Document document) { - Elements content = document.select(".co_content8 table a"); - for (int i = 0, s = content.size(); i < s; i++) { - String href = content.get(i).attr("href"); - if (!TextUtils.isEmpty(href) && !href.contains("/index.html")) { - pageUrls.add(HOST + href); + Logcat.d(document); + maxPageNumber = getMaxPageNum(document); + List gifts = getPageLists(document); + if (gifts != null) { + if (view != null) { + if (pageConfig.isFirst()) { + view.refillData(gifts); + } else { + view.appendData(gifts); + } } } - - pageUrlIndex = 0; - parsePageUrl(pageUrlIndex); } @Override public void onError(Throwable e) { - KLog.e(e); + Logcat.e(e); } @Override public void onComplete() { - + pageConfig.curPage++; } }); } - private void parsePageUrl(int index) { - MeiziDataSource.getInstance().fetchPure(pageUrls.get(index)) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onNext(Document document) { - Elements content = document.select("tbody a"); - String data = content.get(0).attr("href"); -// KLog.d("" + data); - ftpUrls.add(data); - try { - writeFileToSDCard(data + "\n"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void onError(Throwable e) { - KLog.e(e); - } - - @Override - public void onComplete() { - pageUrlIndex = index + 1; - if (pageUrlIndex < pageUrls.size()) { - parsePageUrl(pageUrlIndex); - } else { - pageUrls.clear(); - urlIndex = urlIndex + 1; - if (urlIndex < remoteUrl.size()) { - fetchData(urlIndex); - } else { - remoteUrl.clear(); - KLog.d(">>结束"); - } - } - } - }); - } - - // 写一个文件到SDCard - private void writeFileToSDCard(String data) throws IOException { - // 比如可以将一个文件作为普通的文档存储,那么先获取系统默认的文档存放根目录 - File parent_path = Environment.getExternalStorageDirectory(); - - // 可以建立一个子目录专门存放自己专属文件 - File dir = new File(parent_path.getAbsoluteFile(), "lingyan"); - if (!dir.exists()) { - dir.mkdir(); - } - - File file = new File(dir.getAbsoluteFile(), "myfile.txt"); - - Log.d("文件路径", file.getAbsolutePath()); - - // 创建这个文件,如果不存在 - file.createNewFile(); - -// FileOutputStream fos = new FileOutputStream(file); -// -// byte[] buffer = data.getBytes(); -// -// 开始写入数据到这个文件。 -// fos.write(buffer, 0, buffer.length); -// fos.flush(); -// fos.close(); - - try { - //第二个参数意义是说是否以append方式添加内容 - BufferedWriter bw = new BufferedWriter(new FileWriter(file, true)); - bw.write(data); - bw.flush(); - Log.d("文件写入", "成功"); - } catch (Exception e) { - e.printStackTrace(); - } - } - private int getImageMaxPage(Document doc) { int max = 0; if (doc != null) { @@ -208,8 +111,8 @@ private String getImageFirstUrl(Document doc) { return links.get(0).attr("src"); } - private ArrayList getImages(String url) { - ArrayList imagesList = new ArrayList<>(); + private ArrayList getImages(String url) { + ArrayList imagesList = new ArrayList<>(); String baseUrl = null; String name = null; String endType = null; @@ -229,42 +132,44 @@ private ArrayList getImages(String url) { String number; String lastUrl; - for (int i = 1; i <= mMaxPageNumber; i++) { + for (int i = 1; i <= maxPageNumber; i++) { if (i < 10) { number = "0" + i; } else { number = String.valueOf(i); } lastUrl = baseUrl + name + number + endType; - imagesList.add(new GiftBean(lastUrl)); + imagesList.add(new Gift(lastUrl)); } return imagesList; } - private List getPageLists(Document doc) { - List list = new ArrayList<>(); + /** + * 解析每面,封面入口地址 + */ + private List getPageLists(Document doc) { + List list = new ArrayList<>(); if (doc == null) { return null; } - Elements hrefs = doc.select("#pins > li > a"); + Elements href = doc.select("#pins > li > a"); Elements img = doc.select("#pins a img"); Elements times = doc.select(".time"); Elements views = doc.select(".view"); - int countSize = hrefs.size(); - int imgSize = img.size(); - int size = countSize > imgSize ? imgSize : countSize; + final int countSize = href.size(); + final int imgSize = img.size(); + final int size = countSize > imgSize ? imgSize : countSize; if (size > 0) { for (int i = 0; i < size; i++) { String imgUrl = img.get(i).attr("data-original"); - KLog.d("imgurl:" + imgUrl); String title = img.get(i).attr("alt"); - String url = hrefs.get(i).attr("href"); + String url = href.get(i).attr("href"); String time = times.get(i).text(); String view = views.get(i).text(); if (!TextUtils.isEmpty(imgUrl) && !TextUtils.isEmpty(url)) { - list.add(new GiftBean(imgUrl, url, time, view, title)); + list.add(new Gift(imgUrl, url, time, view, title)); } } } @@ -310,33 +215,40 @@ public void unSubscribe() { @Override public void refreshImages(String url) { -// mTask.fetchPure(url) -// .map(document -> { -// mMaxPageNumber = getImageMaxPage(document); -// String firstUrl = getImageFirstUrl(document); -// return getImages(firstUrl); -// }) -// .subscribe(new Observer>() { -// @Override -// public void onSubscribe(Disposable d) { -// -// } -// -// @Override -// public void onNext(ArrayList list) { -// mModelView.openGalleryActivity(list); -// } -// -// @Override -// public void onError(Throwable e) { -// KLog.e(e); -// CrashUtils.crashReport(e); -// } -// -// @Override -// public void onComplete() { -// mModelView.disLoadingDialog(); -// } -// }); + JsoupServer.rxConnect(url) + .build() + .map(document -> { + maxPageNumber = getImageMaxPage(document); + String firstUrl = getImageFirstUrl(document); + return getImages(firstUrl); + }) + .doFinally(() -> { + if (view != null) { + view.disLoadingDialog(); + } + }) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(ArrayList list) { + if (view != null) { + view.openGalleryActivity(list); + } + } + + @Override + public void onError(Throwable e) { + KLog.e(e); + CrashUtils.crashReport(e); + } + + @Override + public void onComplete() { + } + }); } } diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java index 74ff6690..10757faa 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java @@ -28,7 +28,7 @@ import butterknife.BindView; /** - * 干货福利妹子 + * 干货 - 妹子 * Create by LingYan on 2016-5-12 */ public class WelfareFragment extends LazyFragment implements WelfareContract.View { diff --git a/app/src/main/res/layout/adapter_gift.xml b/app/src/main/res/layout/adapter_gift.xml index 22996cfa..f15e545d 100644 --- a/app/src/main/res/layout/adapter_gift.xml +++ b/app/src/main/res/layout/adapter_gift.xml @@ -22,7 +22,7 @@ android:orientation="vertical"> CREATOR = new Creator() { + @Override + public BaseEntity createFromParcel(Parcel source) { + return new BaseEntity(source); + } + + @Override + public BaseEntity[] newArray(int size) { + return new BaseEntity[size]; + } + }; } \ No newline at end of file diff --git a/support-ly-business/src/main/java/android/ly/business/domain/DailyMeizi.java b/support-ly-business/src/main/java/android/ly/business/domain/DailyMeizi.java new file mode 100644 index 00000000..c5f09f7d --- /dev/null +++ b/support-ly-business/src/main/java/android/ly/business/domain/DailyMeizi.java @@ -0,0 +1,67 @@ +package android.ly.business.domain; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * Create by LingYan on 2016-07-05 + */ +public class DailyMeizi implements Parcelable { + /** + * 月份 + */ + public String month; + + /** + * 日期 + */ + public String day; + + /** + * 请求地址 + */ + public String url; + + /** + * 标题 + */ + public String title; + + public DailyMeizi(String url, String title) { + this.url = url; + this.title = title; + } + + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.month); + dest.writeString(this.day); + dest.writeString(this.url); + dest.writeString(this.title); + } + + protected DailyMeizi(Parcel in) { + this.month = in.readString(); + this.day = in.readString(); + this.url = in.readString(); + this.title = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public DailyMeizi createFromParcel(Parcel source) { + return new DailyMeizi(source); + } + + @Override + public DailyMeizi[] newArray(int size) { + return new DailyMeizi[size]; + } + }; +} diff --git a/app/src/main/java/com/gank/gankly/bean/GiftBean.java b/support-ly-business/src/main/java/android/ly/business/domain/Gift.java similarity index 76% rename from app/src/main/java/com/gank/gankly/bean/GiftBean.java rename to support-ly-business/src/main/java/android/ly/business/domain/Gift.java index 6413c4f2..44b51eb9 100644 --- a/app/src/main/java/com/gank/gankly/bean/GiftBean.java +++ b/support-ly-business/src/main/java/android/ly/business/domain/Gift.java @@ -1,4 +1,4 @@ -package com.gank.gankly.bean; +package android.ly.business.domain; import android.os.Parcel; import android.os.Parcelable; @@ -6,18 +6,18 @@ /** * Create by LingYan on 2016-05-18 */ -public class GiftBean implements Parcelable { +public class Gift implements Parcelable { private String imgUrl; private String url; private String time; private String views; private String title; - public GiftBean(String imgUrl) { + public Gift(String imgUrl) { this.imgUrl = imgUrl; } - public GiftBean(String imgUrl, String url, String time, String views, String title) { + public Gift(String imgUrl, String url, String time, String views, String title) { this.imgUrl = imgUrl; this.url = url; this.time = time; @@ -25,7 +25,7 @@ public GiftBean(String imgUrl, String url, String time, String views, String tit this.title = title; } - protected GiftBean(Parcel in) { + protected Gift(Parcel in) { imgUrl = in.readString(); url = in.readString(); time = in.readString(); @@ -33,15 +33,15 @@ protected GiftBean(Parcel in) { title = in.readString(); } - public static final Creator CREATOR = new Creator() { + public static final Creator CREATOR = new Creator() { @Override - public GiftBean createFromParcel(Parcel in) { - return new GiftBean(in); + public Gift createFromParcel(Parcel in) { + return new Gift(in); } @Override - public GiftBean[] newArray(int size) { - return new GiftBean[size]; + public Gift[] newArray(int size) { + return new Gift[size]; } }; diff --git a/support-ly-jsoup/.gitignore b/support-ly-jsoup/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/support-ly-jsoup/.gitignore @@ -0,0 +1 @@ +/build diff --git a/support-ly-jsoup/build.gradle b/support-ly-jsoup/build.gradle new file mode 100644 index 00000000..238f7ea5 --- /dev/null +++ b/support-ly-jsoup/build.gradle @@ -0,0 +1,27 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion rootProject.compileSdkVersion + + defaultConfig { + minSdkVersion rootProject.minSdkVersion + targetSdkVersion rootProject.targetSdkVersion + versionCode rootProject.normalVersionCode + versionName rootProject.normalVersionName + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + +} + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + + api "org.jsoup:jsoup:${jsoup}" + implementation project(':support-ly-rxbus') +} diff --git a/support-ly-jsoup/proguard-rules.pro b/support-ly-jsoup/proguard-rules.pro new file mode 100644 index 00000000..f1b42451 --- /dev/null +++ b/support-ly-jsoup/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/support-ly-jsoup/src/main/AndroidManifest.xml b/support-ly-jsoup/src/main/AndroidManifest.xml new file mode 100644 index 00000000..02cae5ed --- /dev/null +++ b/support-ly-jsoup/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/support-ly-jsoup/src/main/java/android/ly/jsoup/JsoupMate.java b/support-ly-jsoup/src/main/java/android/ly/jsoup/JsoupMate.java new file mode 100644 index 00000000..0b323d2d --- /dev/null +++ b/support-ly-jsoup/src/main/java/android/ly/jsoup/JsoupMate.java @@ -0,0 +1,45 @@ +package android.ly.jsoup; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; + +import java.io.IOException; + +/** + * Create by LingYan on 2018-03-23 + */ + +public class JsoupMate extends Mate { + + public JsoupMate(String url) { + super(url); + } + + @Override + public Document build() { + try { + return Jsoup.connect(url).timeout(timeOut).userAgent(userAgent).get(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + @Override + public Mate setTimeOut(int timeOut) { + this.timeOut = timeOut; + return this; + } + + @Override + public Mate setUserAgent(String userAgent) { + this.userAgent = userAgent; + return this; + } + + @Override + public Mate setMobile(boolean isMobile) { + this.isMobile = isMobile; + return this; + } +} diff --git a/support-ly-jsoup/src/main/java/android/ly/jsoup/JsoupServer.java b/support-ly-jsoup/src/main/java/android/ly/jsoup/JsoupServer.java new file mode 100644 index 00000000..83e74324 --- /dev/null +++ b/support-ly-jsoup/src/main/java/android/ly/jsoup/JsoupServer.java @@ -0,0 +1,18 @@ +package android.ly.jsoup; + +/** + * Create by LingYan on 2018-03-23 + */ + +public class JsoupServer { + private JsoupServer() { + } + + public static JsoupMate connect(String url) { + return new JsoupMate(url); + } + + public static RxJsoupMate rxConnect(String url) { + return new RxJsoupMate(url); + } +} diff --git a/support-ly-jsoup/src/main/java/android/ly/jsoup/Mate.java b/support-ly-jsoup/src/main/java/android/ly/jsoup/Mate.java new file mode 100644 index 00000000..b86661c2 --- /dev/null +++ b/support-ly-jsoup/src/main/java/android/ly/jsoup/Mate.java @@ -0,0 +1,28 @@ +package android.ly.jsoup; + +/** + * Create by LingYan on 2018-03-23 + */ + +abstract class Mate { + static final int TIME_OUT = 50 * 1000; + static final String USER_AGENT = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36"; + static final String DESKTOP_USER_AGENT = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; Desktop) AppleWebKit/534.13 (KHTML, like Gecko) UCBrowser/8.9.0.25"; + + int timeOut = TIME_OUT; + String userAgent = USER_AGENT; + String url; + boolean isMobile = true; + + Mate(String url) { + this.url = url; + } + + public abstract T build(); + + public abstract Mate setTimeOut(int timeOut); + + public abstract Mate setUserAgent(String userAgent); + + public abstract Mate setMobile(boolean isMobile); +} diff --git a/support-ly-jsoup/src/main/java/android/ly/jsoup/RxJsoupMate.java b/support-ly-jsoup/src/main/java/android/ly/jsoup/RxJsoupMate.java new file mode 100644 index 00000000..6c1c57de --- /dev/null +++ b/support-ly-jsoup/src/main/java/android/ly/jsoup/RxJsoupMate.java @@ -0,0 +1,63 @@ +package android.ly.jsoup; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; + +import java.io.IOException; + +import io.reactivex.Observable; +import io.reactivex.ObservableEmitter; +import io.reactivex.ObservableOnSubscribe; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; + +/** + * Create by LingYan on 2018-03-23 + */ + +public class RxJsoupMate extends Mate> { + + RxJsoupMate(String url) { + super(url); + } + + @Override + public Observable build() { + return Observable.create(new ObservableOnSubscribe() { + @Override + public void subscribe(ObservableEmitter subscriber) throws Exception { + Document doc; + try { + doc = Jsoup.connect(url) + .userAgent(userAgent) + .timeout(timeOut) + .get(); + subscriber.onNext(doc); + } catch (IOException e) { + subscriber.onError(new Throwable(e)); + } + subscriber.onComplete(); + } + }).subscribeOn(Schedulers.io()) + .unsubscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + @Override + public Mate setTimeOut(int timeOut) { + this.timeOut = timeOut; + return this; + } + + @Override + public Mate setUserAgent(String userAgent) { + this.userAgent = userAgent; + return this; + } + + @Override + public Mate setMobile(boolean isMobile) { + this.isMobile = isMobile; + return this; + } +} diff --git a/support-ly-jsoup/src/main/res/values/strings.xml b/support-ly-jsoup/src/main/res/values/strings.xml new file mode 100644 index 00000000..1a20827c --- /dev/null +++ b/support-ly-jsoup/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + support-ly-jsoup + diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java index c3d139be..6394e279 100644 --- a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java @@ -9,7 +9,7 @@ * Create by LingYan on 2017-11-27 */ -public abstract class BasicHolder extends RecyclerView.ViewHolder { +public abstract class BasicHolder extends RecyclerView.ViewHolder { public BasicHolder(ViewGroup parent, @LayoutRes int layout) { super(LayoutInflater.from(parent.getContext()).inflate(layout, parent, false)); } diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicItem.java b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicViewItem.java similarity index 59% rename from support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicItem.java rename to support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicViewItem.java index c1065358..29a0dc94 100644 --- a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicItem.java +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicViewItem.java @@ -4,5 +4,5 @@ * Create by LingYan on 2017-11-27 */ -public abstract class BasicItem implements Item { +public abstract class BasicViewItem implements ViewItem { } diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java new file mode 100644 index 00000000..87b18e0b --- /dev/null +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java @@ -0,0 +1,28 @@ +package android.lectcoding.ui.adapter; + +import android.support.v7.widget.RecyclerView; + +/** + * Create by LingYan on 2018-03-23 + */ + +public abstract class ObserverAdapter extends BaseAdapter { + public ObserverAdapter() { + if (!isObserverNull()) { + registerAdapterDataObserver(getObserver()); + } + } + + @Override + public void destroy() { + if (!isObserverNull()) { + unregisterAdapterDataObserver(getObserver()); + } + } + + protected abstract RecyclerView.AdapterDataObserver getObserver(); + + private boolean isObserverNull() { + return getObserver() == null; + } +} diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/Item.java b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/ViewItem.java similarity index 85% rename from support-ly-ui/src/main/java/android/lectcoding/ui/adapter/Item.java rename to support-ly-ui/src/main/java/android/lectcoding/ui/adapter/ViewItem.java index 713ef8e7..353882b0 100644 --- a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/Item.java +++ b/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/ViewItem.java @@ -6,7 +6,7 @@ * Create by LingYan on 2017-11-27 */ -public interface Item { +public interface ViewItem { @LayoutRes int getViewType(); } From 28dc13170728bc2c95cf58c57f56e175a9b20e62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=87=8C=E7=82=8E?= Date: Mon, 26 Mar 2018 18:29:20 +0800 Subject: [PATCH 17/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...erKnifeHolder.java => BindViewHolder.java} | 4 +- .../gankly/ui/android/AndroidAdapter.java | 14 +- .../gank/gankly/ui/base/BaseViewHolder.java | 2 - .../com/gank/gankly/ui/cure/CureAdapter.java | 152 ++++++--- .../com/gank/gankly/ui/cure/CureContract.java | 16 +- .../com/gank/gankly/ui/cure/CureFragment.java | 120 ++++--- .../gank/gankly/ui/cure/CurePresenter.java | 321 +++++++----------- .../gankly/ui/daily/DailyGirlAdapter.java | 115 +++++++ .../DailyGirlContract.java} | 10 +- .../gankly/ui/daily/DailyGirlFragment.java | 193 +++++++++++ .../DailyGirlPresenter.java} | 18 +- .../ui/dailymeizi/DailyMeiziAdapter.java | 91 ----- .../ui/dailymeizi/DailyMeiziFragment.java | 235 ------------- .../gankly/ui/gallery/GalleryActivity.java | 4 +- .../ui/history/BrowseHistoryAdapter.java | 2 +- .../com/gank/gankly/ui/ios/IosAdapter.java | 14 +- .../com/gank/gankly/ui/pure/PureAdapter.java | 10 +- .../com/gank/gankly/ui/pure/PureFragment.java | 2 +- .../res/layout/adapter_browse_history.xml | 2 +- ..._dailymeizi.xml => adapter_daily_girl.xml} | 2 +- .../java/android/ly/business/domain/Gift.java | 50 +-- .../domain/{DailyMeizi.java => Girl.java} | 16 +- 22 files changed, 676 insertions(+), 717 deletions(-) rename app/src/main/java/com/gank/gankly/butterknife/{ButterKnifeHolder.java => BindViewHolder.java} (69%) create mode 100644 app/src/main/java/com/gank/gankly/ui/daily/DailyGirlAdapter.java rename app/src/main/java/com/gank/gankly/ui/{dailymeizi/DailyMeiziContract.java => daily/DailyGirlContract.java} (76%) create mode 100644 app/src/main/java/com/gank/gankly/ui/daily/DailyGirlFragment.java rename app/src/main/java/com/gank/gankly/ui/{dailymeizi/DailyMeiziPresenter.java => daily/DailyGirlPresenter.java} (92%) delete mode 100644 app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziAdapter.java delete mode 100644 app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziFragment.java rename app/src/main/res/layout/{adapter_dailymeizi.xml => adapter_daily_girl.xml} (97%) rename support-ly-business/src/main/java/android/ly/business/domain/{DailyMeizi.java => Girl.java} (69%) diff --git a/app/src/main/java/com/gank/gankly/butterknife/ButterKnifeHolder.java b/app/src/main/java/com/gank/gankly/butterknife/BindViewHolder.java similarity index 69% rename from app/src/main/java/com/gank/gankly/butterknife/ButterKnifeHolder.java rename to app/src/main/java/com/gank/gankly/butterknife/BindViewHolder.java index 5fcc5249..146ba3c9 100644 --- a/app/src/main/java/com/gank/gankly/butterknife/ButterKnifeHolder.java +++ b/app/src/main/java/com/gank/gankly/butterknife/BindViewHolder.java @@ -11,8 +11,8 @@ * Create by LingYan on 2017-10-13 */ -public abstract class ButterKnifeHolder extends BasicHolder { - public ButterKnifeHolder(ViewGroup parent, @LayoutRes int layoutRes) { +public abstract class BindViewHolder extends BasicHolder { + public BindViewHolder(ViewGroup parent, @LayoutRes int layoutRes) { super(parent, layoutRes); ButterKnife.bind(this, itemView); } diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java index 5ae38dbe..a00a1046 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java @@ -13,7 +13,7 @@ import com.bumptech.glide.Glide; import com.gank.gankly.R; -import com.gank.gankly.butterknife.ButterKnifeHolder; +import com.gank.gankly.butterknife.BindViewHolder; import com.gank.gankly.utils.DateUtils; import java.util.ArrayList; @@ -26,7 +26,7 @@ /** * Create by LingYan on 2016-04-25 */ -class AndroidAdapter extends BaseAdapter { +class AndroidAdapter extends BaseAdapter { private ItemCallback itemCallback; private Context context; @@ -63,8 +63,8 @@ public int getItemViewType(int position) { } @Override - public ButterKnifeHolder onCreateViewHolder(ViewGroup parent, int viewType) { - ButterKnifeHolder defaultHolder; + public BindViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + BindViewHolder defaultHolder; switch (viewType) { case NormalViewHolder.LAYOUT: defaultHolder = new NormalViewHolder(parent, itemCallback); @@ -77,7 +77,7 @@ public ButterKnifeHolder onCreateViewHolder(ViewGroup parent, int viewType) { } @Override - public void onBindViewHolder(ButterKnifeHolder holder, int position) { + public void onBindViewHolder(BindViewHolder holder, int position) { final ViewItem viewItem = viewItemList.get(position); switch (holder.getItemViewType()) { case NormalViewHolder.LAYOUT: @@ -87,7 +87,7 @@ public void onBindViewHolder(ButterKnifeHolder holder, int position) { } @Override - public void onViewRecycled(ButterKnifeHolder holder) { + public void onViewRecycled(BindViewHolder holder) { super.onViewRecycled(holder); Glide.get(context).clearMemory(); } @@ -150,7 +150,7 @@ public int getViewType() { } } - static class NormalViewHolder extends ButterKnifeHolder { + static class NormalViewHolder extends BindViewHolder { static final int LAYOUT = R.layout.adapter_android; @BindView(R.id.author_name) diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseViewHolder.java b/app/src/main/java/com/gank/gankly/ui/base/BaseViewHolder.java index a9e18af6..24c1f4a0 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseViewHolder.java +++ b/app/src/main/java/com/gank/gankly/ui/base/BaseViewHolder.java @@ -7,6 +7,4 @@ public abstract class BaseViewHolder extends RecyclerView.ViewHolder { public BaseViewHolder(View itemView) { super(itemView); } - - public abstract void setDataOnView(int position); } \ No newline at end of file diff --git a/app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java b/app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java index b87d61cd..10c48122 100644 --- a/app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java @@ -1,44 +1,56 @@ package com.gank.gankly.ui.cure; -import android.ly.business.domain.DailyMeizi; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; +import android.lectcoding.ui.adapter.BaseAdapter; +import android.lectcoding.ui.adapter.BasicViewItem; +import android.ly.business.domain.Gift; +import android.support.annotation.IntDef; import android.view.ViewGroup; import android.widget.TextView; import com.gank.gankly.R; +import com.gank.gankly.butterknife.BindViewHolder; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.List; import butterknife.BindView; -import butterknife.ButterKnife; + +import static com.gank.gankly.ui.cure.CureAdapter.ViewType.VIEW_TYPE_CURE; /** * Create by LingYan on 2016-07-05 */ -public class CureAdapter extends RecyclerView.Adapter { +public class CureAdapter extends BaseAdapter { private ItemCallback itemCallback; - private List mDailyMeiziList; + private List gifts = new ArrayList<>(); + private final List items = new ArrayList<>(); CureAdapter() { setHasStableIds(true); - mDailyMeiziList = new ArrayList<>(); } @Override - public CureAdapter.DailyMeiziHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_dailymeizi, parent, false); - return new DailyMeiziHolder(view); + public CureAdapter.NormalViewHolder onCreateViewHolder(ViewGroup parent, @ViewType.CureViewType int viewType) { + NormalViewHolder viewHolder; + switch (viewType) { + case VIEW_TYPE_CURE: + viewHolder = new CureHolder(parent); + break; + default: + viewHolder = null; + break; + } + return viewHolder; } @Override - public void onBindViewHolder(CureAdapter.DailyMeiziHolder holder, int position) { - DailyMeizi dailyMeizi = mDailyMeiziList.get(position); - holder.dailyMeizi = dailyMeizi; - if (dailyMeizi != null) { - holder.txtTitle.setText(dailyMeizi.title); + public void onBindViewHolder(NormalViewHolder holder, int position) { + switch (holder.getItemViewType()) { + case VIEW_TYPE_CURE: + ((CureHolder) holder).bindHolder(items.get(position), itemCallback); + break; } } @@ -46,9 +58,17 @@ public void setOnItemClickListener(ItemCallback itemCallback) { this.itemCallback = itemCallback; } + @Override + public int getItemViewType(int position) { + if (!items.isEmpty()) { + return items.get(position).getViewType(); + } + return super.getItemViewType(position); + } + @Override public int getItemCount() { - return mDailyMeiziList.size(); + return gifts.size(); } @Override @@ -56,38 +76,94 @@ public long getItemId(int position) { return position; } - void refillItem(List dailyMeiziList) { - int size = mDailyMeiziList.size(); - mDailyMeiziList.clear(); - notifyItemRangeRemoved(0, size); - appendItem(dailyMeiziList); + void refillItem(List dailyGirlList) { + gifts.clear(); + appendItem(dailyGirlList); + } + + public void appendItem(List dailyGirlList) { + int startIndex = items.size(); + gifts.addAll(dailyGirlList); + changeItems(startIndex); + } + + private void changeItems(int startIndex) { + for (int i = startIndex, size = gifts.size(); i < size; i++) { + final Gift gift = gifts.get(i); + if (gift != null) { + items.add(new CureItem(gift)); + } + } } - public void appendItem(List dailyMeiziList) { - mDailyMeiziList.addAll(dailyMeiziList); - notifyItemRangeInserted(getItemCount(), dailyMeiziList.size()); + @Override + public void destroy() { + items.clear(); + gifts.clear(); + itemCallback = null; } - public class DailyMeiziHolder extends RecyclerView.ViewHolder implements View.OnClickListener { - @BindView(R.id.daily_meizi_title) - TextView txtTitle; - DailyMeizi dailyMeizi; + static class CureHolder extends NormalViewHolder { + @BindView(R.id.title) + TextView title; - DailyMeiziHolder(View itemView) { - super(itemView); - itemView.setOnClickListener(this); - ButterKnife.bind(this, itemView); + CureHolder(ViewGroup parent) { + super(parent, R.layout.adapter_daily_girl); } @Override - public void onClick(View v) { - if (itemCallback != null) { - itemCallback.onItemClick(dailyMeizi); - } + void bindHolder(CureItem item, ItemCallback callback) { + super.bindHolder(item, callback); + final Gift gift = item.gift; + title.setText(gift.title); + + itemView.setOnClickListener(v -> { + if (callback != null) { + callback.onItemClick(gift.url); + } + }); + } + } + + static class CureItem extends BasicViewItem { + final Gift gift; + + CureItem(Gift gift) { + this.gift = gift; + } + + @Override + public int getViewType() { + return VIEW_TYPE_CURE; } } interface ItemCallback { - void onItemClick(DailyMeizi dailyMeizi); + void onItemClick(String url); + } + + abstract static class NormalViewHolder extends BindViewHolder { + + NormalViewHolder(ViewGroup parent, int layoutRes) { + super(parent, layoutRes); + } + + void bindHolder(TT item, ItemCallback callback) { + + } + + @Override + public void bindHolder(TT item) { + + } + } + + interface ViewType { + int VIEW_TYPE_CURE = 1; + + @IntDef(VIEW_TYPE_CURE) + @Retention(RetentionPolicy.SOURCE) + @interface CureViewType { + } } } diff --git a/app/src/main/java/com/gank/gankly/ui/cure/CureContract.java b/app/src/main/java/com/gank/gankly/ui/cure/CureContract.java index 782dd9b4..ec993a39 100644 --- a/app/src/main/java/com/gank/gankly/ui/cure/CureContract.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CureContract.java @@ -4,23 +4,17 @@ import android.ly.business.domain.Gift; import android.support.annotation.NonNull; -import android.ly.business.domain.DailyMeizi; import com.gank.gankly.mvp.base.LoadMorePresenter; -import com.gank.gankly.mvp.base.SupportView; +import com.gank.gankly.mvp.base.PageView; import java.util.ArrayList; -import java.util.List; /** * Create by LingYan on 2016-10-26 */ public interface CureContract { - interface View extends SupportView { - void refillData(List list); - - void appendItem(List list); - + interface View extends PageView { void setMaxProgress(int value); void disProgressDialog(); @@ -33,6 +27,10 @@ public Presenter(@NonNull Context context, View view) { super(context, view); } - abstract void girlsImages(String url); + abstract void refreshGirls(); + + abstract void appendGirls(); + + abstract void loadImages(String url); } } diff --git a/app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java b/app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java index 4c8a3c0c..ea1ac5ad 100644 --- a/app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java @@ -11,9 +11,6 @@ import android.view.View; import com.gank.gankly.R; - -import android.ly.business.domain.DailyMeizi; - import com.gank.gankly.ui.base.fragment.LazyFragment; import com.gank.gankly.ui.gallery.GalleryActivity; import com.gank.gankly.widget.LySwipeRefreshLayout; @@ -30,15 +27,15 @@ */ public class CureFragment extends LazyFragment implements CureContract.View { @BindView(R.id.multiple_status_view) - MultipleStatusView mMultipleStatusView; + MultipleStatusView multipleStatusView; @BindView(R.id.swipe_refresh) LySwipeRefreshLayout swipeRefresh; - private CureAdapter mCureAdapter; - private CurePresenter curePresenter; + private CureAdapter cureAdapter; + private CureContract.Presenter curePresenter; - private ProgressDialog mDialog; + private ProgressDialog progressDialog; @Override protected int getLayoutId() { @@ -48,23 +45,28 @@ protected int getLayoutId() { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - mCureAdapter = new CureAdapter(); + cureAdapter = new CureAdapter(); + cureAdapter.setOnItemClickListener(cureCallback); swipeRefresh.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)); - swipeRefresh.setAdapter(mCureAdapter); + swipeRefresh.setAdapter(cureAdapter); swipeRefresh.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { - onRefresh(); + initCureRefresh(); } @Override public void onLoadMore() { - curePresenter.fetchMore(); + curePresenter.appendGirls(); } }); + } - mCureAdapter.setOnItemClickListener(cureCallback); + private void initCureRefresh() { + if (curePresenter != null) { + curePresenter.refreshGirls(); + } } @Override @@ -75,37 +77,31 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { private final CureAdapter.ItemCallback cureCallback = new CureAdapter.ItemCallback() { @Override - public void onItemClick(final DailyMeizi dailyMeizi) { - final String url = dailyMeizi.url; + public void onItemClick(final String url) { if (!TextUtils.isEmpty(url)) { showLoadingDialog(); - curePresenter.girlsImages(url); + curePresenter.loadImages(url); } } }; @Override protected void initLazy() { - onRefresh(); - } - - void onRefresh() { - if (curePresenter != null) { - curePresenter.fetchNew(); - } + initCureRefresh(); } private void showLoadingDialog() { - if (mDialog == null) { - mDialog = new ProgressDialog(context); + if (progressDialog == null) { + progressDialog = new ProgressDialog(context); + progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); + progressDialog.setMessage(context.getString(R.string.loading_meizi_images)); + progressDialog.setIndeterminate(true); + progressDialog.setCanceledOnTouchOutside(true); + progressDialog.setOnCancelListener(dialog -> curePresenter.unSubscribe()); } - mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); - mDialog.setMessage(context.getString(R.string.loading_meizi_images)); - mDialog.setIndeterminate(true); - mDialog.setCanceledOnTouchOutside(true); - mDialog.setOnCancelListener(dialog -> curePresenter.unSubscribe()); - if (!mDialog.isShowing()) { - mDialog.show(); + + if (!progressDialog.isShowing()) { + progressDialog.show(); } } @@ -121,7 +117,9 @@ public void openBrowseActivity(@NonNull ArrayList list) { @Override public void hideProgress() { - swipeRefresh.setRefreshing(false); + if (swipeRefresh != null && swipeRefresh.isRefreshing()) { + swipeRefresh.setRefreshing(false); + } } @Override @@ -131,12 +129,16 @@ public void hasNoMoreDate() { @Override public void showProgress() { - swipeRefresh.setRefreshing(true); + if (swipeRefresh != null && !swipeRefresh.isRefreshing()) { + swipeRefresh.setRefreshing(true); + } } @Override public void showContent() { - mMultipleStatusView.showContent(); + if (multipleStatusView != null) { + multipleStatusView.showContent(); + } } @Override @@ -155,31 +157,57 @@ public void showError() { } @Override - public void refillData(List list) { - mCureAdapter.refillItem(list); + public void setMaxProgress(int value) { + if (progressDialog != null) { + progressDialog.setMax(value); + } + } + + @Override + public void disProgressDialog() { + if (progressDialog != null && progressDialog.isShowing()) { + progressDialog.dismiss(); + } } @Override - public void appendItem(List list) { - mCureAdapter.appendItem(list); + public void onDestroyView() { + super.onDestroyView(); + if (cureAdapter != null) { + cureAdapter.destroy(); + } + if (curePresenter != null) { + curePresenter.unSubscribe(); + } } @Override - public void setMaxProgress(int value) { - if (mDialog != null) { - mDialog.setMax(value); + public void refreshSuccess(List list) { + if (list != null) { + if (cureAdapter != null) { + cureAdapter.refillItem(list); + cureAdapter.notifyDataSetChanged(); + } } } @Override - public void disProgressDialog() { - if (mDialog != null && mDialog.isShowing()) { - mDialog.dismiss(); + public void refreshFailure(String msg) { + shortToast(msg); + } + + @Override + public void appendSuccess(List list) { + if (cureAdapter != null) { + if (list != null) { + cureAdapter.appendItem(list); + cureAdapter.notifyDataSetChanged(); + } } } @Override - public void onDestroyView() { - super.onDestroyView(); + public void appendFailure(String msg) { + shortToast(msg); } } diff --git a/app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java b/app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java index ab452fea..77b5e01c 100644 --- a/app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java @@ -1,20 +1,24 @@ package com.gank.gankly.ui.cure; import android.content.Context; +import android.lectcoding.ui.logcat.Logcat; import android.ly.business.domain.Gift; +import android.ly.business.domain.PageConfig; import android.ly.jsoup.JsoupServer; +import android.text.TextUtils; -import android.ly.business.domain.DailyMeizi; -import com.gank.gankly.utils.ListUtils; -import com.socks.library.KLog; +import com.gank.gankly.utils.CrashUtils; +import com.gank.gankly.utils.StringUtils; +import com.leftcoding.rxbus.RxApiManager; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import java.util.ArrayList; +import java.util.IllegalFormatException; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; -import io.reactivex.Observer; import io.reactivex.disposables.Disposable; /** @@ -22,252 +26,165 @@ */ class CurePresenter extends CureContract.Presenter { - private static final String MEIZI_FIRST_URL = "http://www.meizitu.com/a/qingchun_3_"; - private static final int LIMIT = 30; + private static final String BASE_URL = "http://www.mzitu.com/xinggan/"; - private ArrayList imagesList; - private int max; + private final ArrayList imagesList = new ArrayList<>(); + private final AtomicBoolean destroyFlag = new AtomicBoolean(false); + private int maxPageNumber; + private PageConfig pageConfig = new PageConfig(); CurePresenter(Context context, CureContract.View view) { super(context, view); + pageConfig.limit = 24; } - // @Override - public void fetchNew() { -// String url = getMeiziUrl(); -// setFetchLimit(LIMIT); -// fetchData(url); - } - - // @Override - public void fetchMore() { -// String url = getMeiziUrl(); -// if (hasMore()) { -// mModelView.showProgress(); -// fetchData(url); -// } - //empty - } - - private void fetchData(String url) { - JsoupServer.rxConnect(url).build() - .subscribe(new Observer() { - @Override - public void onComplete() { -// setFetchPage(getFetchPage() + 1); -// mModelView.showContent(); -// mModelView.hideProgress(); - } - - @Override - public void onError(Throwable e) { - KLog.e(e); -// parseError(mModelView); - } - - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onNext(Document document) { - parseMeiZiTu(document); - } - }); + @Override + void refreshGirls() { + pageConfig.curPage = 1; + fetchData(getUrl(pageConfig.curPage)); } @Override - public void unSubscribe() { - //empty + void appendGirls() { + if (maxPageNumber >= pageConfig.curPage) { + fetchData(getUrl(pageConfig.curPage)); + } } @Override - public void girlsImages(final String url) { - JsoupServer.rxConnect(url).build() - .subscribe(new Observer() { - @Override - public void onComplete() { -// mModelView.disProgressDialog(); -// mModelView.openBrowseActivity(imagesList); - } - - @Override - public void onError(Throwable e) { - KLog.e(e); - } - - @Override - public void onSubscribe(Disposable d) { - //empty - } - - @Override - public void onNext(Document doc) { - getImagesList(doc); + void loadImages(String url) { + Disposable disposable = JsoupServer.rxConnect(url).build() + .doFinally(() -> { + if (view != null) { + view.disProgressDialog(); } - }); + }) + .subscribe(document -> { + getDetailMaxPage(document); + getImagesList(document); + }, Logcat::e); + RxApiManager.get().add(requestTag, disposable); } - private void getImagesList(Document doc) { - imagesList = new ArrayList<>(); - if (doc != null) { - Elements imgs = doc.select("#picture img"); - if (imgs != null && imgs.size() > 0) { - for (int i = 0; i < imgs.size(); i++) { - String src = imgs.get(i).attr("src"); - imagesList.add(new Gift(src)); - } - } + private void fetchData(String url) { + if (destroyFlag.get()) { + return; } - } - private void getImages(String url) { - JsoupServer.rxConnect(url).build() - .map(this::getImageCountList) - .subscribe(new Observer() { - @Override - public void onComplete() { -// mModelView.disProgressDialog(); -// mModelView.openBrowseActivity(imagesList); + Disposable disposable = JsoupServer.rxConnect(url).build() + .doOnSubscribe(dis -> { + if (view != null) { + view.showProgress(); } - - @Override - public void onError(Throwable e) { -// mModelView.disProgressDialog(); - KLog.e(e); + }) + .doFinally(() -> { + if (view != null) { + view.hideProgress(); } - - @Override - public void onSubscribe(Disposable d) { - //empty - } - - @Override - public void onNext(String url) { - imagesList = new ArrayList<>(); - String baseUrl = null; - String name = null; - String endType = null; - int lastPointIndex; - int lastNameIndex; - if (url.contains(".")) { - if (url.contains("-")) { - lastPointIndex = url.lastIndexOf("-"); + }) + .subscribe(document -> { + maxPageNumber = getMaxPageNum(document); + List gifts = getPageLists(document); + if (gifts != null) { + if (view != null) { + if (pageConfig.isFirst()) { + view.refreshSuccess(gifts); } else { - lastPointIndex = url.lastIndexOf("."); + view.appendSuccess(gifts); } - lastNameIndex = url.lastIndexOf("/"); - baseUrl = url.substring(0, lastNameIndex); - name = url.substring(lastNameIndex, lastPointIndex - 2); - endType = url.substring(lastPointIndex, url.length()); - } - - String number; - String lastUrl; - for (int i = 1; i <= max; i++) { - if (i < 10) { - number = "0" + i; - } else { - number = String.valueOf(i); - } - lastUrl = baseUrl + name + number + endType; - imagesList.add(new Gift(lastUrl)); + pageConfig.curPage++; } } - }); + }, Logcat::e); + RxApiManager.get().add(requestTag, disposable); } - private void parseMeiZiTu(Document document) { - if (document != null) { - List list = getColumnList(document); -// list = filterData(list, mModelView); - if (ListUtils.getSize(list) > 0) { -// if (getFetchPage() > 1) { -// mModelView.appendItem(list); -// } else { -// mModelView.refillData(list); -// } - } + /** + * 解析每面,封面入口地址 + */ + private List getPageLists(Document doc) { + List list = new ArrayList<>(); + if (doc == null) { + return null; } - } - - private void parseDocument(Document document) { - if (document != null) { - List list = getDays(document); -// list = filterData(list, mModelView); - if (ListUtils.getSize(list) > 0) { -// mModelView.refillData(list); + Elements href = doc.select("#pins > li > a"); + Elements img = doc.select("#pins a img"); + Elements times = doc.select(".time"); + Elements views = doc.select(".view"); + + final int countSize = href.size(); + final int imgSize = img.size(); + final int size = countSize > imgSize ? imgSize : countSize; + + if (size > 0) { + for (int i = 0; i < size; i++) { + String imgUrl = img.get(i).attr("data-original"); + String title = img.get(i).attr("alt"); + String url = href.get(i).attr("href"); + String time = times.get(i).text(); + String view = views.get(i).text(); + if (!TextUtils.isEmpty(imgUrl) && !TextUtils.isEmpty(url)) { + list.add(new Gift(imgUrl, url, time, view, title)); + } } } + return list; } - private List getColumnList(Document doc) { - List list = new ArrayList<>(); + private int getMaxPageNum(Document doc) { + int p = 0; if (doc != null) { - Elements times = doc.select(".con"); - KLog.d("times" + times.size()); - Elements imgs = doc.select(".con img"); - Elements a_href = doc.select(".con .pic a"); - for (int i = 0; i < times.size(); i++) { - KLog.d("href:" + a_href.get(i).attr("href")); - list.add(new DailyMeizi(a_href.get(i).attr("href"), times.get(i).text())); + Elements count = doc.select(".nav-links a[href]"); + int size = count.size(); + if (size > 0) { + for (int i = size - 1; i >= 0; i--) { + String num = count.get(i).text(); + if (StringUtils.isNumeric(num)) { + try { + return Integer.parseInt(num); + } catch (IllegalFormatException e) { + Logcat.e(e); + CrashUtils.crashReport(e); + } + } + } } } - return list; + return p; } - /** - * 筛选过滤得到月份集合 - */ - private List getDays(Document doc) { - List list = new ArrayList<>(); + private int getDetailMaxPage(Document doc) { if (doc != null) { - Elements times = doc.select(".post-content .archive-brick"); - Elements a_href = doc.select(".post-content .archive-brick a"); - for (int i = 0; i < a_href.size(); i++) { - list.add(new DailyMeizi(a_href.get(i).attr("href"), times.get(i).text())); + Elements pages = doc.select(".pagenavi span"); + if (pages != null && !pages.isEmpty()) { + } } - return list; + return 0; } - - private int getImageUrlsMax(Document doc) { - int max = 0; + private void getImagesList(Document doc) { + imagesList.clear(); if (doc != null) { - Elements page = doc.select(".prev-next-page"); - if (page.size() > 0) { - String mm = page.get(0).text(); - String[] split = mm.split("/"); - int length = split.length; - if (length > 1) { - String s = split[1]; - mm = s.substring(0, s.length() - 1); - try { - max = Integer.parseInt(mm); - } catch (Exception e) { - throw new RuntimeException(e); - } + Elements imgs = doc.select(".main-image a img"); + if (imgs != null && imgs.size() > 0) { + for (int i = 0; i < imgs.size(); i++) { + String src = imgs.get(i).attr("src"); + imagesList.add(new Gift(src)); } } } - - return max; } - private String getImageUrl(String url) { - return url + "/" + 0; + private String getUrl(int page) { + return page == pageConfig.initPage ? BASE_URL : BASE_URL + "page/" + page; } - private String getImageCountList(Document doc) { - String imgUrl = null; - if (doc != null) { - Elements page = doc.select(".place-padding p a img"); - for (int i = 0; i < page.size(); i++) { - imgUrl = page.get(i).attr("src"); - } + @Override + public void unSubscribe() { + if (destroyFlag.compareAndSet(false, true)) { + RxApiManager.get().clear(requestTag); } - return imgUrl; + super.unSubscribe(); } } diff --git a/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlAdapter.java b/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlAdapter.java new file mode 100644 index 00000000..4b036055 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlAdapter.java @@ -0,0 +1,115 @@ +package com.gank.gankly.ui.daily; + +import android.lectcoding.ui.adapter.BaseAdapter; +import android.lectcoding.ui.adapter.BasicViewItem; +import android.ly.business.domain.Girl; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.gank.gankly.R; +import com.gank.gankly.butterknife.BindViewHolder; +import com.gank.gankly.listener.ItemClick; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * Create by LingYan on 2016-07-05 + */ +public class DailyGirlAdapter extends BaseAdapter { + private ItemClick mMeiZiOnClick; + private List mGirlList = new ArrayList<>(); + + DailyGirlAdapter() { + setHasStableIds(true); + } + + @Override + public DailyGirlAdapter.NormalViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + return new DailyGirlHolder(parent); + } + + @Override + public void onBindViewHolder(NormalViewHolder holder, int position) { + + } + + public void setOnItemClickListener(ItemClick onItemClickListener) { + mMeiZiOnClick = onItemClickListener; + } + + @Override + public int getItemCount() { + return mGirlList.size(); + } + + @Override + public long getItemId(int position) { + return position; + } + + void refillItem(List girlList) { + int size = mGirlList.size(); + mGirlList.clear(); + notifyItemRangeRemoved(0, size); + appendItem(girlList); + } + + public void appendItem(List girlList) { + mGirlList.addAll(girlList); + notifyItemRangeInserted(getItemCount(), girlList.size()); + } + + @Override + public void destroy() { + + } + + public static class DailyGirlHolder extends NormalViewHolder implements View.OnClickListener { + static final int LAYOUT = R.layout.adapter_daily_girl; + + @BindView(R.id.title) + TextView txtTitle; + + Girl girl; + + public DailyGirlHolder(ViewGroup parent) { + super(parent, LAYOUT); + } + + @Override + public void onClick(View v) { + } + + @Override + public void bindHolder(NormalItem item) { + + } + } + + static class NormalItem extends BasicViewItem { + + @Override + public int getViewType() { + return 0; + } + } + + abstract static class NormalViewHolder extends BindViewHolder { + + public NormalViewHolder(ViewGroup parent, int layoutRes) { + super(parent, layoutRes); + } + + void bindHolder(TT item, ItemCallback callback) { + + } + } + + interface ItemCallback { + void onItemClick(Girl girl); + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziContract.java b/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlContract.java similarity index 76% rename from app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziContract.java rename to app/src/main/java/com/gank/gankly/ui/daily/DailyGirlContract.java index 92490e93..ca7bb384 100644 --- a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziContract.java +++ b/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlContract.java @@ -1,10 +1,10 @@ -package com.gank.gankly.ui.dailymeizi; +package com.gank.gankly.ui.daily; import android.content.Context; import android.ly.business.domain.Gift; import android.support.annotation.NonNull; -import android.ly.business.domain.DailyMeizi; +import android.ly.business.domain.Girl; import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; @@ -15,11 +15,11 @@ * Create by LingYan on 2016-10-26 */ -public interface DailyMeiziContract { +public interface DailyGirlContract { interface View extends SupportView { - void refillData(List list); + void refillData(List list); - void appendItem(List list); + void appendItem(List list); void setMaxProgress(int value); diff --git a/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlFragment.java b/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlFragment.java new file mode 100644 index 00000000..d95dbf9f --- /dev/null +++ b/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlFragment.java @@ -0,0 +1,193 @@ +package com.gank.gankly.ui.daily; + +import android.app.ProgressDialog; +import android.content.Intent; +import android.ly.business.domain.Girl; +import android.ly.business.domain.Gift; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v7.widget.LinearLayoutManager; +import android.view.View; + +import com.gank.gankly.R; +import com.gank.gankly.listener.ItemClick; +import com.gank.gankly.ui.base.fragment.LazyFragment; +import com.gank.gankly.ui.gallery.GalleryActivity; +import com.gank.gankly.widget.LySwipeRefreshLayout; +import com.gank.gankly.widget.MultipleStatusView; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * 妹子 - 每日更新 + * Create by LingYan on 2016-07-01 + */ +public class DailyGirlFragment extends LazyFragment implements DailyGirlContract.View { + @BindView(R.id.multiple_status_view) + MultipleStatusView multipleStatusView; + + @BindView(R.id.swipe_refresh) + LySwipeRefreshLayout swipeRefresh; + + private DailyGirlAdapter dailyGirlAdapter; + private DailyGirlPresenter dailyPresenter; + + private ProgressDialog mDialog; + + @Override + protected int getLayoutId() { + return R.layout.fragment_gift; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + dailyGirlAdapter = new DailyGirlAdapter(); + swipeRefresh.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)); + swipeRefresh.setAdapter(dailyGirlAdapter); + + swipeRefresh.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { + @Override + public void onRefresh() { + dailyPresenter.fetchNew(); + } + + @Override + public void onLoadMore() { + } + }); + + dailyGirlAdapter.setOnItemClickListener(new ItemClick() { + @Override + public void onClick(int position, Object object) { + + } + }); + + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + dailyPresenter = new DailyGirlPresenter(context, this); + } + + @Override + protected void initLazy() { + multipleStatusView.showLoading(); + dailyPresenter.fetchNew(); + } + + private void showLoadingDialog() { + if (mDialog == null) { + mDialog = new ProgressDialog(context); + } + + mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); + mDialog.setMessage(context.getString(R.string.loading_meizi_images)); + mDialog.setIndeterminate(true); + mDialog.setCanceledOnTouchOutside(true); + mDialog.setOnCancelListener(dialog -> dailyPresenter.unSubscribe()); + + if (!mDialog.isShowing()) { + mDialog.show(); + } + } + + @Override + public void openBrowseActivity(@NonNull ArrayList list) { + Bundle bundle = new Bundle(); + Intent intent = new Intent(context, GalleryActivity.class); + bundle.putString(GalleryActivity.EXTRA_MODEL, GalleryActivity.EXTRA_DAILY); + intent.putExtra(GalleryActivity.EXTRA_LIST, list); + intent.putExtras(bundle); + context.startActivity(intent); + } + + @Override + public void hideProgress() { + swipeRefresh.setRefreshing(false); + } + + @Override + public void hasNoMoreDate() { + + } + + @Override + public void showProgress() { + + } + + @Override + public void showContent() { + multipleStatusView.showContent(); + } + + @Override + public void showEmpty() { + + } + + @Override + public void showDisNetWork() { + + } + + @Override + public void showError() { + + } + + private void showLoading() { + if (swipeRefresh != null) { + swipeRefresh.setRefreshing(true); + } + } + +// @Override + public void onClick(int position, Object object) { +// DailyGirl dailyGirl = (DailyGirl) object; +// String url = dailyGirl.getUrl(); +// if (!TextUtils.isEmpty(url)) { +// showLoadingDialog(); +// dailyPresenter.girlsImages(url); +// } + } + + @Override + public void refillData(List list) { + dailyGirlAdapter.refillItem(list); + } + + @Override + public void appendItem(List list) { + dailyGirlAdapter.appendItem(list); + } + + @Override + public void setMaxProgress(int value) { + if (mDialog != null) { + mDialog.setMax(value); + } + } + + @Override + public void disProgressDialog() { + if (mDialog != null && mDialog.isShowing()) { + mDialog.dismiss(); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (dailyGirlAdapter != null) { + dailyGirlAdapter.destroy(); + } + } +} diff --git a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziPresenter.java b/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlPresenter.java similarity index 92% rename from app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziPresenter.java rename to app/src/main/java/com/gank/gankly/ui/daily/DailyGirlPresenter.java index 40db4ee9..cbc8465f 100644 --- a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlPresenter.java @@ -1,10 +1,10 @@ -package com.gank.gankly.ui.dailymeizi; +package com.gank.gankly.ui.daily; import android.content.Context; import android.ly.business.domain.Gift; import android.ly.jsoup.JsoupServer; -import android.ly.business.domain.DailyMeizi; +import android.ly.business.domain.Girl; import com.gank.gankly.utils.ListUtils; import com.socks.library.KLog; @@ -21,13 +21,13 @@ * Create by LingYan on 2016-10-26 */ -public class DailyMeiziPresenter extends DailyMeiziContract.Presenter { +public class DailyGirlPresenter extends DailyGirlContract.Presenter { private static final String MEIZI_FIRST_URL = "http://m.mzitu.com/all"; - private final DailyMeiziContract.View mModelView; + private final DailyGirlContract.View mModelView; private ArrayList imagesList; private int max; - public DailyMeiziPresenter(Context context, DailyMeiziContract.View view) { + public DailyGirlPresenter(Context context, DailyGirlContract.View view) { super(context, view); mModelView = view; } @@ -168,7 +168,7 @@ public void onNext(String url) { private void parseDocument(Document document) { if (document != null) { - List list = getDays(document); + List list = getDays(document); // list = filterData(list, mModelView); if (ListUtils.getSize(list) > 0) { mModelView.refillData(list); @@ -179,13 +179,13 @@ private void parseDocument(Document document) { /** * 筛选过滤得到月份集合 */ - private List getDays(Document doc) { - List list = new ArrayList<>(); + private List getDays(Document doc) { + List list = new ArrayList<>(); if (doc != null) { Elements times = doc.select(".post-content .archive-brick"); Elements a_href = doc.select(".post-content .archive-brick a"); for (int i = 0; i < a_href.size(); i++) { - list.add(new DailyMeizi(a_href.get(i).attr("href"), times.get(i).text())); + list.add(new Girl(a_href.get(i).attr("href"), times.get(i).text())); } } return list; diff --git a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziAdapter.java b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziAdapter.java deleted file mode 100644 index 243677dc..00000000 --- a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziAdapter.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.gank.gankly.ui.dailymeizi; - -import android.ly.business.domain.DailyMeizi; -import android.ly.business.domain.DailyMeiziBean; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.gank.gankly.R; -import com.gank.gankly.listener.ItemClick; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -/** - * Create by LingYan on 2016-07-05 - */ -public class DailyMeiziAdapter extends RecyclerView.Adapter { - private ItemClick mMeiZiOnClick; - private List mDailyMeiziList; - - DailyMeiziAdapter() { - setHasStableIds(true); - mDailyMeiziList = new ArrayList<>(); - } - - @Override - public DailyMeiziAdapter.DailyMeiziHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_dailymeizi, parent, false); - return new DailyMeiziHolder(view); - } - - @Override - public void onBindViewHolder(DailyMeiziAdapter.DailyMeiziHolder holder, int position) { - DailyMeizi dailyMeizi = mDailyMeiziList.get(position); - holder.dailyMeizi = dailyMeizi; - if (dailyMeizi != null) { - holder.txtTitle.setText(dailyMeizi.getTitle()); - } - } - - public void setOnItemClickListener(ItemClick onItemClickListener) { - mMeiZiOnClick = onItemClickListener; - } - - @Override - public int getItemCount() { - return mDailyMeiziList.size(); - } - - @Override - public long getItemId(int position) { - return position; - } - - void refillItem(List dailyMeiziList) { - int size = mDailyMeiziList.size(); - mDailyMeiziList.clear(); - notifyItemRangeRemoved(0, size); - appendItem(dailyMeiziList); - } - - public void appendItem(List dailyMeiziList) { - mDailyMeiziList.addAll(dailyMeiziList); - notifyItemRangeInserted(getItemCount(), dailyMeiziList.size()); - } - - public class DailyMeiziHolder extends RecyclerView.ViewHolder implements View.OnClickListener { - @BindView(R.id.daily_meizi_title) - TextView txtTitle; - DailyMeizi dailyMeizi; - - DailyMeiziHolder(View itemView) { - super(itemView); - itemView.setOnClickListener(this); - ButterKnife.bind(this, itemView); - } - - @Override - public void onClick(View v) { - if (mMeiZiOnClick != null) { - mMeiZiOnClick.onClick(getAdapterPosition(), dailyMeizi); - } - } - } -} diff --git a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziFragment.java b/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziFragment.java deleted file mode 100644 index edb8b59e..00000000 --- a/app/src/main/java/com/gank/gankly/ui/dailymeizi/DailyMeiziFragment.java +++ /dev/null @@ -1,235 +0,0 @@ -package com.gank.gankly.ui.dailymeizi; - -import android.app.ProgressDialog; -import android.content.Context; -import android.content.Intent; -import android.content.res.Resources; -import android.ly.business.domain.Gift; -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.widget.LinearLayoutManager; -import android.text.TextUtils; -import android.util.TypedValue; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.gank.gankly.R; -import android.ly.business.domain.DailyMeizi; -import com.gank.gankly.listener.ItemClick; -import com.gank.gankly.rxjava.RxBus_; -import com.gank.gankly.rxjava.theme.ThemeEvent; -import com.gank.gankly.ui.base.fragment.LazyFragment; -import com.gank.gankly.ui.gallery.GalleryActivity; -import com.gank.gankly.ui.main.MainActivity; -import com.gank.gankly.utils.StyleUtils; -import com.gank.gankly.widget.LySwipeRefreshLayout; -import com.gank.gankly.widget.MultipleStatusView; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import io.reactivex.disposables.Disposable; - -/** - * 妹子每日更新 - * Create by LingYan on 2016-07-01 - */ -public class DailyMeiziFragment extends LazyFragment implements DailyMeiziContract.View, ItemClick { - @BindView(R.id.multiple_status_view) - MultipleStatusView mMultipleStatusView; - @BindView(R.id.swipe_refresh) - LySwipeRefreshLayout mSwipeRefreshLayout; - - private DailyMeiziAdapter mDailyMeiziAdapter; - private DailyMeiziPresenter mPresenter; - private MainActivity mActivity; - private Disposable mDisposable; - - private ProgressDialog mDialog; - - @Override - protected int getLayoutId() { - return R.layout.fragment_gift; - } - - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - mDailyMeiziAdapter = new DailyMeiziAdapter(); - mSwipeRefreshLayout.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)); - mSwipeRefreshLayout.setAdapter(mDailyMeiziAdapter); - - mSwipeRefreshLayout.setOnScrollListener(new LySwipeRefreshLayout.OnSwipeRefreshListener() { - @Override - public void onRefresh() { - mPresenter.fetchNew(); - } - - @Override - public void onLoadMore() { - } - }); - - mDailyMeiziAdapter.setOnItemClickListener(this); - - mDisposable = RxBus_.getInstance().toObservable(ThemeEvent.class) - .subscribe(themeEvent -> changeUi()); - } - - @Override - public void onActivityCreated(@Nullable Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); -// mPresenter = new DailyMeiziPresenter(MeiziDataSource.getInstance(), this); - } - - @Override - protected void initLazy() { - mMultipleStatusView.showLoading(); - mPresenter.fetchNew(); - } - - private void changeUi() { - TypedValue typedValue = new TypedValue(); - Resources.Theme theme = mActivity.getTheme(); - theme.resolveAttribute(R.attr.meiziDailyItemBackground, typedValue, true); - int background = typedValue.data; - TypedValue textValue = new TypedValue(); - theme.resolveAttribute(R.attr.baseAdapterItemTextColor, textValue, true); - int textColor = textValue.data; - theme.resolveAttribute(R.attr.themeBackground, textValue, true); - int recyclerColor = textValue.data; - mSwipeRefreshLayout.getRecyclerView().setBackgroundColor(recyclerColor); - - int childCount = mSwipeRefreshLayout.getRecyclerView().getChildCount(); - for (int childIndex = 0; childIndex < childCount; childIndex++) { - ViewGroup childView = (ViewGroup) mSwipeRefreshLayout.getRecyclerView().getChildAt(childIndex); - childView.setBackgroundColor(background); - TextView title = (TextView) childView.findViewById(R.id.daily_meizi_title); - title.setTextColor(textColor); - } - - StyleUtils.clearRecyclerViewItem(mSwipeRefreshLayout.getRecyclerView()); - StyleUtils.changeSwipeRefreshLayout(mSwipeRefreshLayout); - } - - private void showLoadingDialog() { - if (mDialog == null) { - mDialog = new ProgressDialog(mActivity); - } - mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); - mDialog.setMessage(context.getString(R.string.loading_meizi_images)); - mDialog.setIndeterminate(true); - mDialog.setCanceledOnTouchOutside(true); - mDialog.setOnCancelListener(dialog -> mPresenter.unSubscribe()); - if (!mDialog.isShowing()) { - mDialog.show(); - } - } - - @Override - public void openBrowseActivity(@NonNull ArrayList list) { - Bundle bundle = new Bundle(); - Intent intent = new Intent(mActivity, GalleryActivity.class); - bundle.putString(GalleryActivity.EXTRA_MODEL, GalleryActivity.EXTRA_DAILY); - intent.putExtra(GalleryActivity.EXTRA_LIST, list); - intent.putExtras(bundle); - mActivity.startActivity(intent); - } - - @Override - public void hideProgress() { - mSwipeRefreshLayout.setRefreshing(false); - } - - @Override - public void hasNoMoreDate() { - - } - - @Override - public void showProgress() { - - } - - @Override - public void showContent() { - mMultipleStatusView.showContent(); - } - - @Override - public void showEmpty() { - - } - - @Override - public void showDisNetWork() { - - } - - @Override - public void showError() { - - } - - private void showLoading() { - if (mSwipeRefreshLayout != null) { - mSwipeRefreshLayout.setRefreshing(true); - } - } - - @Override - public void onClick(int position, Object object) { - DailyMeizi dailyMeizi = (DailyMeizi) object; - String url = dailyMeizi.getUrl(); - if (!TextUtils.isEmpty(url)) { - showLoadingDialog(); - mPresenter.girlsImages(url); - } - } - - @Override - public void onAttach(Context context) { - super.onAttach(context); - mActivity = (MainActivity) context; - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Override - public void refillData(List list) { - mDailyMeiziAdapter.refillItem(list); - } - - @Override - public void appendItem(List list) { - mDailyMeiziAdapter.appendItem(list); - } - - @Override - public void setMaxProgress(int value) { - if (mDialog != null) { - mDialog.setMax(value); - } - } - - @Override - public void disProgressDialog() { - if (mDialog != null && mDialog.isShowing()) { - mDialog.dismiss(); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (mDisposable != null && !mDisposable.isDisposed()) { - mDisposable.dispose(); - } - } -} diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java index 7553b336..4f04ab52 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java @@ -511,7 +511,7 @@ public int getCount() { @Override public Fragment getItem(int position) { - return GalleryFragment.newInstance(mGiftList.get(position).getImgUrl()); + return GalleryFragment.newInstance(mGiftList.get(position).imgUrl); } } @@ -635,7 +635,7 @@ private String getImageUrl() { if (EXTRA_GANK.equals(mViewsModel)) { mUrl = MeiziArrayList.getInstance().getResultBean(position).url; } else { - mUrl = mGiftList.get(position).getImgUrl(); + mUrl = mGiftList.get(position).imgUrl; } return mUrl; } diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryAdapter.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryAdapter.java index 3366bf40..f862341e 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryAdapter.java @@ -75,7 +75,7 @@ public ReadHistory getReadHistory(int position) { } public class BrowseHolder extends BaseHolder implements View.OnClickListener { - @BindView(R.id.daily_meizi_title) + @BindView(R.id.title) TextView mTitle; ReadHistory mReadHistory; @BindView(R.id.daily_meizi_ll_body) diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java index ab99af18..8a227a3c 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java @@ -12,7 +12,7 @@ import com.bumptech.glide.Glide; import com.gank.gankly.R; -import com.gank.gankly.butterknife.ButterKnifeHolder; +import com.gank.gankly.butterknife.BindViewHolder; import com.gank.gankly.utils.DateUtils; import java.util.ArrayList; @@ -24,7 +24,7 @@ /** * Create by LingYan on 2016-04-25 */ -class IosAdapter extends BaseAdapter { +class IosAdapter extends BaseAdapter { private final List resultsBeans = new ArrayList<>(); private final List viewItemList = new ArrayList<>(); @@ -53,8 +53,8 @@ public void onChanged() { }; @Override - public ButterKnifeHolder onCreateViewHolder(ViewGroup parent, int viewType) { - ButterKnifeHolder defaultHolder; + public BindViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + BindViewHolder defaultHolder; switch (viewType) { case NormalViewHolder.LAYOUT: defaultHolder = new NormalViewHolder(parent, itemCallBack); @@ -67,7 +67,7 @@ public ButterKnifeHolder onCreateViewHolder(ViewGroup parent, int viewType) { } @Override - public void onBindViewHolder(ButterKnifeHolder holder, int position) { + public void onBindViewHolder(BindViewHolder holder, int position) { final ViewItem viewItem = viewItemList.get(position); switch (holder.getItemViewType()) { case NormalViewHolder.LAYOUT: @@ -82,7 +82,7 @@ public int getItemViewType(int position) { } @Override - public void onViewRecycled(ButterKnifeHolder holder) { + public void onViewRecycled(BindViewHolder holder) { super.onViewRecycled(holder); Glide.get(context).clearMemory(); } @@ -115,7 +115,7 @@ public void setOnItemClickListener(ItemCallback itemCallBack) { this.itemCallBack = itemCallBack; } - static class NormalViewHolder extends ButterKnifeHolder { + static class NormalViewHolder extends BindViewHolder { static final int LAYOUT = R.layout.adapter_ios; @BindView(R.id.author_name) diff --git a/app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java b/app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java index 92917031..e44a8d4f 100644 --- a/app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java @@ -17,7 +17,7 @@ import com.bumptech.glide.load.model.LazyHeaders; import com.bumptech.glide.request.RequestOptions; import com.gank.gankly.R; -import com.gank.gankly.butterknife.ButterKnifeHolder; +import com.gank.gankly.butterknife.BindViewHolder; import java.util.ArrayList; import java.util.List; @@ -164,10 +164,10 @@ void bindHolder(GiftViewItem item, ItemClickCallback callback) { super.bindHolder(item, callback); final Gift gift = item.gift; final Context context = itemView.getContext(); - title.setText(gift.getTitle()); - author.setText(gift.getTime()); + title.setText(gift.title); + author.setText(gift.time); - final GlideUrl glideUrl = new GlideUrl(gift.getImgUrl(), new LazyHeaders.Builder() + final GlideUrl glideUrl = new GlideUrl(gift.imgUrl, new LazyHeaders.Builder() .addHeader("referer", "http://www.mzitu.com/mm/") .build()); @@ -201,7 +201,7 @@ public int getViewType() { } } - abstract static class PureViewHolder extends ButterKnifeHolder { + abstract static class PureViewHolder extends BindViewHolder { PureViewHolder(ViewGroup parent, int layoutRes) { super(parent, layoutRes); diff --git a/app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java b/app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java index 9324ce9e..9498624a 100644 --- a/app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java @@ -77,7 +77,7 @@ public void onItemClick(final Gift gift) { .throttleFirst(100, TimeUnit.MILLISECONDS) .subscribeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(giftBean1 -> purePresenter.refreshImages(giftBean1.getUrl())); + .subscribe(giftBean1 -> purePresenter.refreshImages(giftBean1.url)); } }; diff --git a/app/src/main/res/layout/adapter_browse_history.xml b/app/src/main/res/layout/adapter_browse_history.xml index a2b99944..ea3c1d58 100644 --- a/app/src/main/res/layout/adapter_browse_history.xml +++ b/app/src/main/res/layout/adapter_browse_history.xml @@ -36,7 +36,7 @@ android:orientation="vertical"> CREATOR = new Creator() { + public static final Creator CREATOR = new Creator() { @Override - public DailyMeizi createFromParcel(Parcel source) { - return new DailyMeizi(source); + public Girl createFromParcel(Parcel source) { + return new Girl(source); } @Override - public DailyMeizi[] newArray(int size) { - return new DailyMeizi[size]; + public Girl[] newArray(int size) { + return new Girl[size]; } }; } From 2559c48771d3c77f0ceba6366fb067378678c377 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=87=8C=E7=82=8E?= Date: Fri, 14 Sep 2018 16:27:35 +0800 Subject: [PATCH 18/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 25 +++++++- .../gank/gankly/ExampleInstrumentedTest.java | 26 +++++++++ app/src/main/AndroidManifest.xml | 57 +++++++++--------- .../main/java/com/gank/gankly/AppConfig.java | 4 +- .../main/java/com/gank/gankly/TestConfig.java | 10 ++++ .../com/gank/gankly/ui/main/MainActivity.java | 4 ++ app/src/main/res/values/dimens.xml | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 8 ++- .../gank/gankly/ui/main/MainActivityTest.java | 58 +++++++++++++++++++ .../java/com/test/test/ExampleUnitTest.java | 38 ++++++++++++ build.gradle | 4 +- 12 files changed, 203 insertions(+), 33 deletions(-) create mode 100644 app/src/androidTest/java/com/gank/gankly/ExampleInstrumentedTest.java create mode 100644 app/src/main/java/com/gank/gankly/TestConfig.java create mode 100644 app/src/test/java/com/gank/gankly/ui/main/MainActivityTest.java create mode 100644 app/src/test/java/com/test/test/ExampleUnitTest.java diff --git a/app/build.gradle b/app/build.gradle index ffede8cb..9195376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,6 +20,14 @@ android { } buildConfigField("String", "GANK_SERVER_ULR", "\"${gank_server_url}\"") + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testOptions.unitTests.includeAndroidResources = true + } + + testOptions { + unitTests { + includeAndroidResources = true + } } //执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关闭 @@ -81,10 +89,24 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' + testCompile 'org.robolectric:shadows-support-v4:3.4-SNAPSHOT' + androidTestCompile 'com.android.support.test:runner:1.0.1' + androidTestCompile 'com.android.support.test.espresso:espresso-core:3.0.1' + testImplementation "org.robolectric:robolectric:3.8" + androidTestCompile 'com.android.support:support-annotations:27.0.1' + androidTestCompile 'com.android.support.test:rules:1.0.1' + // Optional -- Hamcrest library + androidTestCompile 'org.hamcrest:hamcrest-library:1.3' + // Optional -- UI testing with Espresso + androidTestCompile 'com.android.support.test.espresso:espresso-core:3.0.1' + // Optional -- UI testing with UI Automator + androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3' + // implementation project(':support-ly-business') implementation project(':support-ly-rxbus') implementation project(':superplayerlibrary') implementation project(':support-ly-ui') + implementation project(':support-ly-jsoup') implementation "com.android.support:appcompat-v7:${supportVersion}" implementation "com.android.support:design:${supportVersion}" implementation "com.android.support:cardview-v7:${supportVersion}" @@ -131,6 +153,5 @@ dependencies { implementation "io.reactivex.rxjava2:rxjava:${rxjava}" implementation "io.reactivex.rxjava2:rxandroid:${rxandroid}" implementation "com.tencent.bugly:crashreport_upgrade:${crashreportUpgrade}" - implementation 'com.android.support.constraint:constraint-layout:1.0.2' - implementation project(':support-ly-jsoup') + implementation 'com.android.support.constraint:constraint-layout:1.1.0' } diff --git a/app/src/androidTest/java/com/gank/gankly/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/gank/gankly/ExampleInstrumentedTest.java new file mode 100644 index 00000000..8cfb541b --- /dev/null +++ b/app/src/androidTest/java/com/gank/gankly/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.gank.gankly; + +import android.support.test.runner.AndroidJUnit4; + +import org.junit.After; +import org.junit.Before; +import org.junit.runner.RunWith; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + + @Before + public void setUp() throws Exception { + + } + + @After + public void tearDown() throws Exception { + } + +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ef9bbebf..3778902e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -7,23 +7,24 @@ - + + + - - + + - + + - - - - - - - - - + + + + + + + + + - - - + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/gank/gankly/AppConfig.java b/app/src/main/java/com/gank/gankly/AppConfig.java index d8b7b083..2d5b7cd0 100644 --- a/app/src/main/java/com/gank/gankly/AppConfig.java +++ b/app/src/main/java/com/gank/gankly/AppConfig.java @@ -29,9 +29,9 @@ public AppConfig() { @Override public void onCreate() { super.onCreate(); - setupLeakCanary(); +// setupLeakCanary(); setupStetho(); - setupBugly(); +// setupBugly(); setupX5WebView(); InitGankServer.init(AppConfig.this) diff --git a/app/src/main/java/com/gank/gankly/TestConfig.java b/app/src/main/java/com/gank/gankly/TestConfig.java new file mode 100644 index 00000000..4f8dda83 --- /dev/null +++ b/app/src/main/java/com/gank/gankly/TestConfig.java @@ -0,0 +1,10 @@ +package com.gank.gankly; + +import android.app.Application; + +/** + * Create by LingYan on 2018-04-25 + */ + +public class TestConfig extends Application { +} diff --git a/app/src/main/java/com/gank/gankly/ui/main/MainActivity.java b/app/src/main/java/com/gank/gankly/ui/main/MainActivity.java index c40ca136..6ce3cecc 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/MainActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/main/MainActivity.java @@ -1,6 +1,7 @@ package com.gank.gankly.ui.main; import android.content.res.Resources; +import android.lectcoding.ui.logcat.Logcat; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -130,6 +131,9 @@ private List getFragmentList() { return fragments; } + public void testMy() { + Logcat.d(">>test"); + } public void changeBottomBar() { TypedValue typedValue = new TypedValue(); diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 0547b48e..da604e80 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -11,4 +11,5 @@ 34sp 45sp 56sp + 16dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 56457eee..8f7aad8a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -111,4 +111,5 @@ %1$s_%2$d.html + Main2Activity diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 6f63cb6d..660345e8 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -13,9 +13,9 @@ true - + + + + diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index c02383d9..af319c56 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -2,6 +2,9 @@ + + \ No newline at end of file diff --git a/app/src/main/res/xml/bottombar_tabs_color_changing.xml b/app/src/main/res/xml/bottombar_tabs_color_changing.xml index 07d09def..8c92f683 100644 --- a/app/src/main/res/xml/bottombar_tabs_color_changing.xml +++ b/app/src/main/res/xml/bottombar_tabs_color_changing.xml @@ -4,21 +4,21 @@ barColorWhenSelected="@color/colorPrimary" icon="@drawable/ic_bottom_bar_home" id="@+id/tab_home" - title="干货"/> + title="@string/navigation_home" /> + title="@string/navigation_news" /> + title="@string/navigation_gift" /> + title="@string/navigation_mine" /> \ No newline at end of file From 5dafe05de50169c76e44443750fb423cb8ed8fbb Mon Sep 17 00:00:00 2001 From: leftcoding <137387869@qq.com> Date: Sat, 13 Apr 2019 22:42:28 +0800 Subject: [PATCH 25/27] test grone --- .drone.yml | 8 ++++++++ docker-compose.yml | 31 +++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 .drone.yml create mode 100644 docker-compose.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 00000000..6d2313c0 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,8 @@ +kind: pipeline +name: default + +steps: +- name: check + image: runmymind/docker-android-sdk + commands: + - ./gradlew clean check diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..b68f7bcd --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,31 @@ +# 版本 +version: "3.7" + +# 服务 +services: + drone-server: + container_name: drone.lingyan + image: drone/drone:1.0.0 + restart: always + volumes: + - ./:/data + environment: + - DRONE_TLS_AUTOCERT=false + - DRONE_RUNNER_CAPACITY=2 + - DRONE_SERVER_HOST=cloud.drone.io + - DRONE_SERVER_PROTO=https + - DRONE_GITHUB_SERVER=https://github.com + - DRONE_GITHUB_CLIENT_ID=b1700953b846cc841faf + - DRONE_GITHUB_CLIENT_SECRET=420c8669af0cb55116466efc8db5ea3499ace5e4 + + drone-agent: + image: drone/agent:1.0.0-rc.1 + restart: always + depends_on: + - drone-server + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - DRONE_RPC_SERVER=http://drone-server + - DRONE_RUNNER_CAPACITY=3 + From 004368c957a4c3a83b9c1ca353e34ca00240308c Mon Sep 17 00:00:00 2001 From: leftcoding <137387869@qq.com> Date: Sun, 14 Apr 2019 17:28:37 +0800 Subject: [PATCH 26/27] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BA=93=E7=9A=84?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=20=E5=8D=87=E7=BA=A7=E7=AC=AC=E4=B8=89?= =?UTF-8?q?=E6=96=B9=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.gitignore | 0 .../build.gradle | 2 +- .../proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 0 .../java/android/ly/business/api/GankApi.java | 0 .../android/ly/business/api/GankServer.java | 0 .../ly/business/api/GankServerHelper.java | 0 .../ly/business/domain/BaseEntity.java | 0 .../ly/business/domain/ContentEqual.java | 0 .../java/android/ly/business/domain/Gank.java | 0 .../java/android/ly/business/domain/Gift.java | 0 .../java/android/ly/business/domain/Girl.java | 0 .../ly/business/domain/ListEntity.java | 0 .../ly/business/domain/PageConfig.java | 0 .../ly/business/domain/PageEntity.java | 0 .../src/main/res/values/strings.xml | 0 .../.gitignore | 0 .../build.gradle | 2 +- .../proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 0 .../main/java/android/ly/jsoup/JsoupMate.java | 0 .../java/android/ly/jsoup/JsoupServer.java | 0 .../src/main/java/android/ly/jsoup/Mate.java | 0 .../java/android/ly/jsoup/RxJsoupMate.java | 0 .../src/main/res/values/strings.xml | 0 .../.gitignore | 0 .../build.gradle | 5 +- .../proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 0 .../network/base/NetworkControl.java | 0 .../com/leftcoding/network/base/Server.java | 0 .../network/base/ServerDisposable.java | 0 .../leftcoding/network/base/ServerHelper.java | 0 .../src/main/res/values/strings.xml | 0 .../.gitignore | 0 .../build.gradle | 7 +- .../proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 0 .../com/leftcoding/rxbus/RxActionManager.java | 0 .../com/leftcoding/rxbus/RxApiManager.java | 0 .../main/java/com/leftcoding/rxbus/RxBus.java | 0 .../java/com/leftcoding/rxbus/RxConsumer.java | 0 .../src/main/res/values/strings.xml | 0 .../.gitignore | 0 .../build.gradle | 3 +- .../proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 0 .../lectcoding/ui/adapter/BaseAdapter.java | 0 .../lectcoding/ui/adapter/BasicHolder.java | 0 .../lectcoding/ui/adapter/BasicViewItem.java | 0 .../ui/adapter/ObserverAdapter.java | 0 .../lectcoding/ui/adapter/ViewItem.java | 0 .../lectcoding/ui/base/BaseContract.java | 0 .../lectcoding/ui/base/BaseFragment.java | 0 .../android/lectcoding/ui/base/BaseView.java | 0 .../android/lectcoding/ui/logcat/Logcat.java | 0 .../lectcoding/ui/logcat/LogcatUtil.java | 0 .../lectcoding/ui/logcat/base/BaseLog.java | 0 .../lectcoding/ui/logcat/base/FileLog.java | 0 .../lectcoding/ui/logcat/base/JsonLog.java | 0 .../lectcoding/ui/logcat/base/XmlLog.java | 0 .../src/main/res/values/strings.xml | 0 app/build.gradle | 20 ++--- build.gradle | 7 +- docker-compose.yml | 31 -------- gradle.properties | 8 +- gradle/wrapper/gradle-wrapper.properties | 4 +- ijkplayerlibrary/build.gradle | 13 ++-- javalib/build.gradle | 31 -------- .../javalib/ExampleInstrumentedTest.java | 26 ------- javalib/src/main/AndroidManifest.xml | 10 --- .../src/main/java/com/example/javalib/A.java | 78 ------------------- .../src/main/java/com/example/javalib/B.java | 21 ----- javalib/src/main/res/values/strings.xml | 3 - .../com/example/javalib/ExampleUnitTest.java | 17 ---- settings.gradle | 2 +- superplayerlibrary/build.gradle | 10 +-- support-ly-rxbus/proguard-rules.pro | 25 ------ support-ly-ui/.gitignore | 1 - 79 files changed, 36 insertions(+), 290 deletions(-) rename {javalib => android-coding-business}/.gitignore (100%) rename {support-ly-business => android-coding-business}/build.gradle (93%) rename {support-ly-business => android-coding-business}/proguard-rules.pro (100%) rename {support-ly-business => android-coding-business}/src/main/AndroidManifest.xml (100%) rename {support-ly-business => android-coding-business}/src/main/java/android/ly/business/api/GankApi.java (100%) rename {support-ly-business => android-coding-business}/src/main/java/android/ly/business/api/GankServer.java (100%) rename {support-ly-business => android-coding-business}/src/main/java/android/ly/business/api/GankServerHelper.java (100%) rename {support-ly-business => android-coding-business}/src/main/java/android/ly/business/domain/BaseEntity.java (100%) rename {support-ly-business => android-coding-business}/src/main/java/android/ly/business/domain/ContentEqual.java (100%) rename {support-ly-business => android-coding-business}/src/main/java/android/ly/business/domain/Gank.java (100%) rename {support-ly-business => android-coding-business}/src/main/java/android/ly/business/domain/Gift.java (100%) rename {support-ly-business => android-coding-business}/src/main/java/android/ly/business/domain/Girl.java (100%) rename {support-ly-business => android-coding-business}/src/main/java/android/ly/business/domain/ListEntity.java (100%) rename {support-ly-business => android-coding-business}/src/main/java/android/ly/business/domain/PageConfig.java (100%) rename {support-ly-business => android-coding-business}/src/main/java/android/ly/business/domain/PageEntity.java (100%) rename {support-ly-business => android-coding-business}/src/main/res/values/strings.xml (100%) rename {support-ly-business => android-coding-jsoup}/.gitignore (100%) rename {support-ly-jsoup => android-coding-jsoup}/build.gradle (92%) rename {support-ly-jsoup => android-coding-jsoup}/proguard-rules.pro (100%) rename {support-ly-jsoup => android-coding-jsoup}/src/main/AndroidManifest.xml (100%) rename {support-ly-jsoup => android-coding-jsoup}/src/main/java/android/ly/jsoup/JsoupMate.java (100%) rename {support-ly-jsoup => android-coding-jsoup}/src/main/java/android/ly/jsoup/JsoupServer.java (100%) rename {support-ly-jsoup => android-coding-jsoup}/src/main/java/android/ly/jsoup/Mate.java (100%) rename {support-ly-jsoup => android-coding-jsoup}/src/main/java/android/ly/jsoup/RxJsoupMate.java (100%) rename {support-ly-jsoup => android-coding-jsoup}/src/main/res/values/strings.xml (100%) rename {support-ly-jsoup => android-coding-network}/.gitignore (100%) rename {support-ly-network => android-coding-network}/build.gradle (88%) rename {javalib => android-coding-network}/proguard-rules.pro (100%) rename {support-ly-network => android-coding-network}/src/main/AndroidManifest.xml (100%) rename {support-ly-network => android-coding-network}/src/main/java/com/leftcoding/network/base/NetworkControl.java (100%) rename {support-ly-network => android-coding-network}/src/main/java/com/leftcoding/network/base/Server.java (100%) rename {support-ly-network => android-coding-network}/src/main/java/com/leftcoding/network/base/ServerDisposable.java (100%) rename {support-ly-network => android-coding-network}/src/main/java/com/leftcoding/network/base/ServerHelper.java (100%) rename {support-ly-network => android-coding-network}/src/main/res/values/strings.xml (100%) rename {support-ly-network => android-coding-rxbus}/.gitignore (100%) rename {support-ly-rxbus => android-coding-rxbus}/build.gradle (73%) rename {support-ly-network => android-coding-rxbus}/proguard-rules.pro (100%) rename {support-ly-rxbus => android-coding-rxbus}/src/main/AndroidManifest.xml (100%) rename {support-ly-rxbus => android-coding-rxbus}/src/main/java/com/leftcoding/rxbus/RxActionManager.java (100%) rename {support-ly-rxbus => android-coding-rxbus}/src/main/java/com/leftcoding/rxbus/RxApiManager.java (100%) rename {support-ly-rxbus => android-coding-rxbus}/src/main/java/com/leftcoding/rxbus/RxBus.java (100%) rename {support-ly-rxbus => android-coding-rxbus}/src/main/java/com/leftcoding/rxbus/RxConsumer.java (100%) rename {support-ly-rxbus => android-coding-rxbus}/src/main/res/values/strings.xml (100%) rename {support-ly-rxbus => android-coding-ui}/.gitignore (100%) rename {support-ly-ui => android-coding-ui}/build.gradle (84%) rename {support-ly-ui => android-coding-ui}/proguard-rules.pro (100%) rename {support-ly-ui => android-coding-ui}/src/main/AndroidManifest.xml (100%) rename {support-ly-ui => android-coding-ui}/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java (100%) rename {support-ly-ui => android-coding-ui}/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java (100%) rename {support-ly-ui => android-coding-ui}/src/main/java/android/lectcoding/ui/adapter/BasicViewItem.java (100%) rename {support-ly-ui => android-coding-ui}/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java (100%) rename {support-ly-ui => android-coding-ui}/src/main/java/android/lectcoding/ui/adapter/ViewItem.java (100%) rename {support-ly-ui => android-coding-ui}/src/main/java/android/lectcoding/ui/base/BaseContract.java (100%) rename {support-ly-ui => android-coding-ui}/src/main/java/android/lectcoding/ui/base/BaseFragment.java (100%) rename {support-ly-ui => android-coding-ui}/src/main/java/android/lectcoding/ui/base/BaseView.java (100%) rename {support-ly-ui => android-coding-ui}/src/main/java/android/lectcoding/ui/logcat/Logcat.java (100%) rename {support-ly-ui => android-coding-ui}/src/main/java/android/lectcoding/ui/logcat/LogcatUtil.java (100%) rename {support-ly-ui => android-coding-ui}/src/main/java/android/lectcoding/ui/logcat/base/BaseLog.java (100%) rename {support-ly-ui => android-coding-ui}/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java (100%) rename {support-ly-ui => android-coding-ui}/src/main/java/android/lectcoding/ui/logcat/base/JsonLog.java (100%) rename {support-ly-ui => android-coding-ui}/src/main/java/android/lectcoding/ui/logcat/base/XmlLog.java (100%) rename {support-ly-ui => android-coding-ui}/src/main/res/values/strings.xml (100%) delete mode 100644 docker-compose.yml delete mode 100644 javalib/build.gradle delete mode 100644 javalib/src/androidTest/java/com/example/javalib/ExampleInstrumentedTest.java delete mode 100644 javalib/src/main/AndroidManifest.xml delete mode 100644 javalib/src/main/java/com/example/javalib/A.java delete mode 100644 javalib/src/main/java/com/example/javalib/B.java delete mode 100644 javalib/src/main/res/values/strings.xml delete mode 100644 javalib/src/test/java/com/example/javalib/ExampleUnitTest.java delete mode 100644 support-ly-rxbus/proguard-rules.pro delete mode 100644 support-ly-ui/.gitignore diff --git a/javalib/.gitignore b/android-coding-business/.gitignore similarity index 100% rename from javalib/.gitignore rename to android-coding-business/.gitignore diff --git a/support-ly-business/build.gradle b/android-coding-business/build.gradle similarity index 93% rename from support-ly-business/build.gradle rename to android-coding-business/build.gradle index 158bf26f..33c7a170 100644 --- a/support-ly-business/build.gradle +++ b/android-coding-business/build.gradle @@ -21,5 +21,5 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - api project(':support-ly-network') + api project(':android-coding-network') } diff --git a/support-ly-business/proguard-rules.pro b/android-coding-business/proguard-rules.pro similarity index 100% rename from support-ly-business/proguard-rules.pro rename to android-coding-business/proguard-rules.pro diff --git a/support-ly-business/src/main/AndroidManifest.xml b/android-coding-business/src/main/AndroidManifest.xml similarity index 100% rename from support-ly-business/src/main/AndroidManifest.xml rename to android-coding-business/src/main/AndroidManifest.xml diff --git a/support-ly-business/src/main/java/android/ly/business/api/GankApi.java b/android-coding-business/src/main/java/android/ly/business/api/GankApi.java similarity index 100% rename from support-ly-business/src/main/java/android/ly/business/api/GankApi.java rename to android-coding-business/src/main/java/android/ly/business/api/GankApi.java diff --git a/support-ly-business/src/main/java/android/ly/business/api/GankServer.java b/android-coding-business/src/main/java/android/ly/business/api/GankServer.java similarity index 100% rename from support-ly-business/src/main/java/android/ly/business/api/GankServer.java rename to android-coding-business/src/main/java/android/ly/business/api/GankServer.java diff --git a/support-ly-business/src/main/java/android/ly/business/api/GankServerHelper.java b/android-coding-business/src/main/java/android/ly/business/api/GankServerHelper.java similarity index 100% rename from support-ly-business/src/main/java/android/ly/business/api/GankServerHelper.java rename to android-coding-business/src/main/java/android/ly/business/api/GankServerHelper.java diff --git a/support-ly-business/src/main/java/android/ly/business/domain/BaseEntity.java b/android-coding-business/src/main/java/android/ly/business/domain/BaseEntity.java similarity index 100% rename from support-ly-business/src/main/java/android/ly/business/domain/BaseEntity.java rename to android-coding-business/src/main/java/android/ly/business/domain/BaseEntity.java diff --git a/support-ly-business/src/main/java/android/ly/business/domain/ContentEqual.java b/android-coding-business/src/main/java/android/ly/business/domain/ContentEqual.java similarity index 100% rename from support-ly-business/src/main/java/android/ly/business/domain/ContentEqual.java rename to android-coding-business/src/main/java/android/ly/business/domain/ContentEqual.java diff --git a/support-ly-business/src/main/java/android/ly/business/domain/Gank.java b/android-coding-business/src/main/java/android/ly/business/domain/Gank.java similarity index 100% rename from support-ly-business/src/main/java/android/ly/business/domain/Gank.java rename to android-coding-business/src/main/java/android/ly/business/domain/Gank.java diff --git a/support-ly-business/src/main/java/android/ly/business/domain/Gift.java b/android-coding-business/src/main/java/android/ly/business/domain/Gift.java similarity index 100% rename from support-ly-business/src/main/java/android/ly/business/domain/Gift.java rename to android-coding-business/src/main/java/android/ly/business/domain/Gift.java diff --git a/support-ly-business/src/main/java/android/ly/business/domain/Girl.java b/android-coding-business/src/main/java/android/ly/business/domain/Girl.java similarity index 100% rename from support-ly-business/src/main/java/android/ly/business/domain/Girl.java rename to android-coding-business/src/main/java/android/ly/business/domain/Girl.java diff --git a/support-ly-business/src/main/java/android/ly/business/domain/ListEntity.java b/android-coding-business/src/main/java/android/ly/business/domain/ListEntity.java similarity index 100% rename from support-ly-business/src/main/java/android/ly/business/domain/ListEntity.java rename to android-coding-business/src/main/java/android/ly/business/domain/ListEntity.java diff --git a/support-ly-business/src/main/java/android/ly/business/domain/PageConfig.java b/android-coding-business/src/main/java/android/ly/business/domain/PageConfig.java similarity index 100% rename from support-ly-business/src/main/java/android/ly/business/domain/PageConfig.java rename to android-coding-business/src/main/java/android/ly/business/domain/PageConfig.java diff --git a/support-ly-business/src/main/java/android/ly/business/domain/PageEntity.java b/android-coding-business/src/main/java/android/ly/business/domain/PageEntity.java similarity index 100% rename from support-ly-business/src/main/java/android/ly/business/domain/PageEntity.java rename to android-coding-business/src/main/java/android/ly/business/domain/PageEntity.java diff --git a/support-ly-business/src/main/res/values/strings.xml b/android-coding-business/src/main/res/values/strings.xml similarity index 100% rename from support-ly-business/src/main/res/values/strings.xml rename to android-coding-business/src/main/res/values/strings.xml diff --git a/support-ly-business/.gitignore b/android-coding-jsoup/.gitignore similarity index 100% rename from support-ly-business/.gitignore rename to android-coding-jsoup/.gitignore diff --git a/support-ly-jsoup/build.gradle b/android-coding-jsoup/build.gradle similarity index 92% rename from support-ly-jsoup/build.gradle rename to android-coding-jsoup/build.gradle index 238f7ea5..62259bcd 100644 --- a/support-ly-jsoup/build.gradle +++ b/android-coding-jsoup/build.gradle @@ -23,5 +23,5 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') api "org.jsoup:jsoup:${jsoup}" - implementation project(':support-ly-rxbus') + implementation project(':android-coding-rxbus') } diff --git a/support-ly-jsoup/proguard-rules.pro b/android-coding-jsoup/proguard-rules.pro similarity index 100% rename from support-ly-jsoup/proguard-rules.pro rename to android-coding-jsoup/proguard-rules.pro diff --git a/support-ly-jsoup/src/main/AndroidManifest.xml b/android-coding-jsoup/src/main/AndroidManifest.xml similarity index 100% rename from support-ly-jsoup/src/main/AndroidManifest.xml rename to android-coding-jsoup/src/main/AndroidManifest.xml diff --git a/support-ly-jsoup/src/main/java/android/ly/jsoup/JsoupMate.java b/android-coding-jsoup/src/main/java/android/ly/jsoup/JsoupMate.java similarity index 100% rename from support-ly-jsoup/src/main/java/android/ly/jsoup/JsoupMate.java rename to android-coding-jsoup/src/main/java/android/ly/jsoup/JsoupMate.java diff --git a/support-ly-jsoup/src/main/java/android/ly/jsoup/JsoupServer.java b/android-coding-jsoup/src/main/java/android/ly/jsoup/JsoupServer.java similarity index 100% rename from support-ly-jsoup/src/main/java/android/ly/jsoup/JsoupServer.java rename to android-coding-jsoup/src/main/java/android/ly/jsoup/JsoupServer.java diff --git a/support-ly-jsoup/src/main/java/android/ly/jsoup/Mate.java b/android-coding-jsoup/src/main/java/android/ly/jsoup/Mate.java similarity index 100% rename from support-ly-jsoup/src/main/java/android/ly/jsoup/Mate.java rename to android-coding-jsoup/src/main/java/android/ly/jsoup/Mate.java diff --git a/support-ly-jsoup/src/main/java/android/ly/jsoup/RxJsoupMate.java b/android-coding-jsoup/src/main/java/android/ly/jsoup/RxJsoupMate.java similarity index 100% rename from support-ly-jsoup/src/main/java/android/ly/jsoup/RxJsoupMate.java rename to android-coding-jsoup/src/main/java/android/ly/jsoup/RxJsoupMate.java diff --git a/support-ly-jsoup/src/main/res/values/strings.xml b/android-coding-jsoup/src/main/res/values/strings.xml similarity index 100% rename from support-ly-jsoup/src/main/res/values/strings.xml rename to android-coding-jsoup/src/main/res/values/strings.xml diff --git a/support-ly-jsoup/.gitignore b/android-coding-network/.gitignore similarity index 100% rename from support-ly-jsoup/.gitignore rename to android-coding-network/.gitignore diff --git a/support-ly-network/build.gradle b/android-coding-network/build.gradle similarity index 88% rename from support-ly-network/build.gradle rename to android-coding-network/build.gradle index 807f1511..541597ff 100644 --- a/support-ly-network/build.gradle +++ b/android-coding-network/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.library' android { compileSdkVersion rootProject.compileSdkVersion - buildToolsVersion rootProject.buildToolsVersion defaultConfig { minSdkVersion rootProject.minSdkVersion @@ -25,7 +24,7 @@ android { } dependencies { - compile fileTree(include: ['*.jar'], dir: 'libs') + api fileTree(include: ['*.jar'], dir: 'libs') // Gson api "com.google.code.gson:gson:${gsonVersion}" @@ -36,5 +35,5 @@ dependencies { api "com.squareup.retrofit2:converter-gson:${converterGson}" api "com.squareup.retrofit2:adapter-rxjava2:${adapterRxjava2}" // RxJava2 - api project(':support-ly-rxbus') + api project(':android-coding-rxbus') } diff --git a/javalib/proguard-rules.pro b/android-coding-network/proguard-rules.pro similarity index 100% rename from javalib/proguard-rules.pro rename to android-coding-network/proguard-rules.pro diff --git a/support-ly-network/src/main/AndroidManifest.xml b/android-coding-network/src/main/AndroidManifest.xml similarity index 100% rename from support-ly-network/src/main/AndroidManifest.xml rename to android-coding-network/src/main/AndroidManifest.xml diff --git a/support-ly-network/src/main/java/com/leftcoding/network/base/NetworkControl.java b/android-coding-network/src/main/java/com/leftcoding/network/base/NetworkControl.java similarity index 100% rename from support-ly-network/src/main/java/com/leftcoding/network/base/NetworkControl.java rename to android-coding-network/src/main/java/com/leftcoding/network/base/NetworkControl.java diff --git a/support-ly-network/src/main/java/com/leftcoding/network/base/Server.java b/android-coding-network/src/main/java/com/leftcoding/network/base/Server.java similarity index 100% rename from support-ly-network/src/main/java/com/leftcoding/network/base/Server.java rename to android-coding-network/src/main/java/com/leftcoding/network/base/Server.java diff --git a/support-ly-network/src/main/java/com/leftcoding/network/base/ServerDisposable.java b/android-coding-network/src/main/java/com/leftcoding/network/base/ServerDisposable.java similarity index 100% rename from support-ly-network/src/main/java/com/leftcoding/network/base/ServerDisposable.java rename to android-coding-network/src/main/java/com/leftcoding/network/base/ServerDisposable.java diff --git a/support-ly-network/src/main/java/com/leftcoding/network/base/ServerHelper.java b/android-coding-network/src/main/java/com/leftcoding/network/base/ServerHelper.java similarity index 100% rename from support-ly-network/src/main/java/com/leftcoding/network/base/ServerHelper.java rename to android-coding-network/src/main/java/com/leftcoding/network/base/ServerHelper.java diff --git a/support-ly-network/src/main/res/values/strings.xml b/android-coding-network/src/main/res/values/strings.xml similarity index 100% rename from support-ly-network/src/main/res/values/strings.xml rename to android-coding-network/src/main/res/values/strings.xml diff --git a/support-ly-network/.gitignore b/android-coding-rxbus/.gitignore similarity index 100% rename from support-ly-network/.gitignore rename to android-coding-rxbus/.gitignore diff --git a/support-ly-rxbus/build.gradle b/android-coding-rxbus/build.gradle similarity index 73% rename from support-ly-rxbus/build.gradle rename to android-coding-rxbus/build.gradle index 13285843..5f6a1741 100644 --- a/support-ly-rxbus/build.gradle +++ b/android-coding-rxbus/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.library' android { compileSdkVersion rootProject.compileSdkVersion - buildToolsVersion rootProject.buildToolsVersion defaultConfig { minSdkVersion rootProject.minSdkVersion @@ -21,7 +20,7 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile "io.reactivex.rxjava2:rxjava:${rxjava}" - compile "io.reactivex.rxjava2:rxandroid:${rxandroid}" + api fileTree(dir: 'libs', include: ['*.jar']) + api "io.reactivex.rxjava2:rxjava:${rxjava}" + api "io.reactivex.rxjava2:rxandroid:${rxandroid}" } diff --git a/support-ly-network/proguard-rules.pro b/android-coding-rxbus/proguard-rules.pro similarity index 100% rename from support-ly-network/proguard-rules.pro rename to android-coding-rxbus/proguard-rules.pro diff --git a/support-ly-rxbus/src/main/AndroidManifest.xml b/android-coding-rxbus/src/main/AndroidManifest.xml similarity index 100% rename from support-ly-rxbus/src/main/AndroidManifest.xml rename to android-coding-rxbus/src/main/AndroidManifest.xml diff --git a/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxActionManager.java b/android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxActionManager.java similarity index 100% rename from support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxActionManager.java rename to android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxActionManager.java diff --git a/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxApiManager.java b/android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxApiManager.java similarity index 100% rename from support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxApiManager.java rename to android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxApiManager.java diff --git a/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxBus.java b/android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxBus.java similarity index 100% rename from support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxBus.java rename to android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxBus.java diff --git a/support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxConsumer.java b/android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxConsumer.java similarity index 100% rename from support-ly-rxbus/src/main/java/com/leftcoding/rxbus/RxConsumer.java rename to android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxConsumer.java diff --git a/support-ly-rxbus/src/main/res/values/strings.xml b/android-coding-rxbus/src/main/res/values/strings.xml similarity index 100% rename from support-ly-rxbus/src/main/res/values/strings.xml rename to android-coding-rxbus/src/main/res/values/strings.xml diff --git a/support-ly-rxbus/.gitignore b/android-coding-ui/.gitignore similarity index 100% rename from support-ly-rxbus/.gitignore rename to android-coding-ui/.gitignore diff --git a/support-ly-ui/build.gradle b/android-coding-ui/build.gradle similarity index 84% rename from support-ly-ui/build.gradle rename to android-coding-ui/build.gradle index 96ce74f6..0be0fa22 100644 --- a/support-ly-ui/build.gradle +++ b/android-coding-ui/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.library' android { compileSdkVersion rootProject.compileSdkVersion - buildToolsVersion rootProject.buildToolsVersion defaultConfig { minSdkVersion rootProject.minSdkVersion @@ -23,5 +22,5 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "com.android.support:recyclerview-v7:${supportVersion}" - api "com.android.support:appcompat-v7:${supportVersion}" + implementation "com.android.support:appcompat-v7:${supportVersion}" } diff --git a/support-ly-ui/proguard-rules.pro b/android-coding-ui/proguard-rules.pro similarity index 100% rename from support-ly-ui/proguard-rules.pro rename to android-coding-ui/proguard-rules.pro diff --git a/support-ly-ui/src/main/AndroidManifest.xml b/android-coding-ui/src/main/AndroidManifest.xml similarity index 100% rename from support-ly-ui/src/main/AndroidManifest.xml rename to android-coding-ui/src/main/AndroidManifest.xml diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java b/android-coding-ui/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java similarity index 100% rename from support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java rename to android-coding-ui/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java b/android-coding-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java similarity index 100% rename from support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java rename to android-coding-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicViewItem.java b/android-coding-ui/src/main/java/android/lectcoding/ui/adapter/BasicViewItem.java similarity index 100% rename from support-ly-ui/src/main/java/android/lectcoding/ui/adapter/BasicViewItem.java rename to android-coding-ui/src/main/java/android/lectcoding/ui/adapter/BasicViewItem.java diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java b/android-coding-ui/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java similarity index 100% rename from support-ly-ui/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java rename to android-coding-ui/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/adapter/ViewItem.java b/android-coding-ui/src/main/java/android/lectcoding/ui/adapter/ViewItem.java similarity index 100% rename from support-ly-ui/src/main/java/android/lectcoding/ui/adapter/ViewItem.java rename to android-coding-ui/src/main/java/android/lectcoding/ui/adapter/ViewItem.java diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/base/BaseContract.java b/android-coding-ui/src/main/java/android/lectcoding/ui/base/BaseContract.java similarity index 100% rename from support-ly-ui/src/main/java/android/lectcoding/ui/base/BaseContract.java rename to android-coding-ui/src/main/java/android/lectcoding/ui/base/BaseContract.java diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/base/BaseFragment.java b/android-coding-ui/src/main/java/android/lectcoding/ui/base/BaseFragment.java similarity index 100% rename from support-ly-ui/src/main/java/android/lectcoding/ui/base/BaseFragment.java rename to android-coding-ui/src/main/java/android/lectcoding/ui/base/BaseFragment.java diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/base/BaseView.java b/android-coding-ui/src/main/java/android/lectcoding/ui/base/BaseView.java similarity index 100% rename from support-ly-ui/src/main/java/android/lectcoding/ui/base/BaseView.java rename to android-coding-ui/src/main/java/android/lectcoding/ui/base/BaseView.java diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/Logcat.java b/android-coding-ui/src/main/java/android/lectcoding/ui/logcat/Logcat.java similarity index 100% rename from support-ly-ui/src/main/java/android/lectcoding/ui/logcat/Logcat.java rename to android-coding-ui/src/main/java/android/lectcoding/ui/logcat/Logcat.java diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/LogcatUtil.java b/android-coding-ui/src/main/java/android/lectcoding/ui/logcat/LogcatUtil.java similarity index 100% rename from support-ly-ui/src/main/java/android/lectcoding/ui/logcat/LogcatUtil.java rename to android-coding-ui/src/main/java/android/lectcoding/ui/logcat/LogcatUtil.java diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/BaseLog.java b/android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/BaseLog.java similarity index 100% rename from support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/BaseLog.java rename to android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/BaseLog.java diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java b/android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java similarity index 100% rename from support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java rename to android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/JsonLog.java b/android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/JsonLog.java similarity index 100% rename from support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/JsonLog.java rename to android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/JsonLog.java diff --git a/support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/XmlLog.java b/android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/XmlLog.java similarity index 100% rename from support-ly-ui/src/main/java/android/lectcoding/ui/logcat/base/XmlLog.java rename to android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/XmlLog.java diff --git a/support-ly-ui/src/main/res/values/strings.xml b/android-coding-ui/src/main/res/values/strings.xml similarity index 100% rename from support-ly-ui/src/main/res/values/strings.xml rename to android-coding-ui/src/main/res/values/strings.xml diff --git a/app/build.gradle b/app/build.gradle index fc4ced23..7970e422 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,14 +5,12 @@ apply plugin: "findbugs" android { compileSdkVersion rootProject.compileSdkVersion - buildToolsVersion rootProject.buildToolsVersion defaultConfig { applicationId "com.gank.gankly" minSdkVersion rootProject.minSdkVersion targetSdkVersion rootProject.targetSdkVersion versionCode 4 versionName "2.1.1" - // 4 2.1.1 multiDexEnabled true ndk { // 设置支持的SO库架构 @@ -88,13 +86,13 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - testCompile 'junit:junit:4.12' + testImplementation 'junit:junit:4.12' // - implementation project(':support-ly-business') - implementation project(':support-ly-rxbus') + implementation project(':android-coding-business') + implementation project(':android-coding-rxbus') implementation project(':superplayerlibrary') - implementation project(':support-ly-ui') - implementation project(':support-ly-jsoup') + implementation project(':android-coding-ui') + implementation project(':android-coding-jsoup') implementation "com.android.support:appcompat-v7:${supportVersion}" implementation "com.android.support:design:${supportVersion}" implementation "com.android.support:cardview-v7:${supportVersion}" @@ -109,8 +107,8 @@ dependencies { implementation "com.squareup.retrofit2:adapter-rxjava2:${adapterRxjava2}" implementation "com.squareup.okhttp3:okhttp:${okhttp}" implementation "com.squareup.okhttp3:logging-interceptor:${okhttp}" - debugCompile "com.squareup.leakcanary:leakcanary-android:${leakcanaryandroid}" - releaseCompile "com.squareup.leakcanary:leakcanary-android-no-op:${leakcanaryandroid}" + debugImplementation "com.squareup.leakcanary:leakcanary-android:${leakcanaryandroid}" + releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:${leakcanaryandroid}" implementation "com.github.bumptech.glide:glide:${glide}" implementation "com.github.bumptech.glide:annotations:${glide}" implementation "com.github.bumptech.glide:okhttp3-integration:${glide}" @@ -131,7 +129,9 @@ dependencies { implementation "com.roughike:bottom-bar:${bottomBar}" //大图库 - implementation "com.davemorrissey.labs:subsampling-scale-image-view:${subsamplingVersion}" + implementation("com.davemorrissey.labs:subsampling-scale-image-view:${subsamplingVersion}") { + exclude group: 'com.android.support' + } //rxjava2 https://github.com/ReactiveX/RxJava implementation "io.reactivex.rxjava2:rxjava:${rxjava}" diff --git a/build.gradle b/build.gradle index e5985f9c..360f6c98 100644 --- a/build.gradle +++ b/build.gradle @@ -2,12 +2,12 @@ buildscript { repositories { - jcenter() google() + jcenter() maven { url "https://oss.sonatype.org/content/repositories/snapshots" } } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.3.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } @@ -15,7 +15,6 @@ buildscript { ext { compileSdkVersion = 28 - buildToolsVersion = "28.0.2" minSdkVersion = 21 targetSdkVersion = 23 @@ -28,8 +27,8 @@ ext { allprojects { repositories { - jcenter() google() + jcenter() maven { url "https://oss.sonatype.org/content/repositories/snapshots" } } } diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index b68f7bcd..00000000 --- a/docker-compose.yml +++ /dev/null @@ -1,31 +0,0 @@ -# 版本 -version: "3.7" - -# 服务 -services: - drone-server: - container_name: drone.lingyan - image: drone/drone:1.0.0 - restart: always - volumes: - - ./:/data - environment: - - DRONE_TLS_AUTOCERT=false - - DRONE_RUNNER_CAPACITY=2 - - DRONE_SERVER_HOST=cloud.drone.io - - DRONE_SERVER_PROTO=https - - DRONE_GITHUB_SERVER=https://github.com - - DRONE_GITHUB_CLIENT_ID=b1700953b846cc841faf - - DRONE_GITHUB_CLIENT_SECRET=420c8669af0cb55116466efc8db5ea3499ace5e4 - - drone-agent: - image: drone/agent:1.0.0-rc.1 - restart: always - depends_on: - - drone-server - volumes: - - /var/run/docker.sock:/var/run/docker.sock - environment: - - DRONE_RPC_SERVER=http://drone-server - - DRONE_RUNNER_CAPACITY=3 - diff --git a/gradle.properties b/gradle.properties index 2fb88e7c..916c48df 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,13 +13,9 @@ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true #Wed Nov 29 14:48:44 CST 2017 -butterknife=8.8.1 +butterknife=10.1.0 supportV4=25.3.1 greendao=2.1.0 -systemProp.http.proxyHost=127.0.0.1 -systemProp.https.proxyHost=127.0.0.1 -systemProp.http.proxyPort=1080 -systemProp.https.proxyPort=1080 supportVersion=28.0.0 butterknifeVersion=8.8.1 retrofitConverters=2.3.0 @@ -40,7 +36,7 @@ adapterRxjava2=2.3.0 glide=4.2.0 bottomBar=2.3.1 retrofitAdapters=2.3.0 -rxandroid=2.0.2 +rxandroid=2.1.1 crashreportUpgrade=1.3.1 klogVersion=1.6.0 stethoVersion=1.5.0 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7d6ebd0d..d86560a2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Nov 08 16:40:09 CST 2018 +#Sat Apr 13 23:05:27 CST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip diff --git a/ijkplayerlibrary/build.gradle b/ijkplayerlibrary/build.gradle index 8f9b1625..83d573e4 100644 --- a/ijkplayerlibrary/build.gradle +++ b/ijkplayerlibrary/build.gradle @@ -1,12 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 24 - buildToolsVersion '26.0.2' + compileSdkVersion rootProject.compileSdkVersion defaultConfig { - minSdkVersion 14 - targetSdkVersion 24 + minSdkVersion rootProject.minSdkVersion + targetSdkVersion rootProject.targetSdkVersion versionCode 1 versionName "1.0" } @@ -19,7 +18,7 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:24.2.0' + implementation fileTree(dir: 'libs', include: ['*.jar']) + testImplementation 'junit:junit:4.12' + implementation "com.android.support:appcompat-v7:${supportVersion}" } diff --git a/javalib/build.gradle b/javalib/build.gradle deleted file mode 100644 index fecd8bed..00000000 --- a/javalib/build.gradle +++ /dev/null @@ -1,31 +0,0 @@ -apply plugin: 'com.android.library' - -android { - compileSdkVersion 25 - buildToolsVersion '26.0.2' - - defaultConfig { - minSdkVersion 14 - targetSdkVersion 25 - versionCode 1 - versionName "1.0" - - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { - exclude group: 'com.android.support', module: 'support-annotations' - }) - compile 'com.android.support:appcompat-v7:25.3.1' - testCompile 'junit:junit:4.12' -} diff --git a/javalib/src/androidTest/java/com/example/javalib/ExampleInstrumentedTest.java b/javalib/src/androidTest/java/com/example/javalib/ExampleInstrumentedTest.java deleted file mode 100644 index b330c424..00000000 --- a/javalib/src/androidTest/java/com/example/javalib/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.example.javalib; - -import android.content.Context; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumentation test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() throws Exception { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - - assertEquals("com.example.javalib.test", appContext.getPackageName()); - } -} diff --git a/javalib/src/main/AndroidManifest.xml b/javalib/src/main/AndroidManifest.xml deleted file mode 100644 index 01a150a9..00000000 --- a/javalib/src/main/AndroidManifest.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/javalib/src/main/java/com/example/javalib/A.java b/javalib/src/main/java/com/example/javalib/A.java deleted file mode 100644 index 3357a961..00000000 --- a/javalib/src/main/java/com/example/javalib/A.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.example.javalib; - -import java.util.UUID; - -/** - * Create by LingYan on 2017-10-17 - */ - -public class A { - public static B mB; - public static A ma; - - public A() { - - } - - public static A getA() { - if (ma == null) { - ma = new A(); - } - return ma; - } - - public B getB() { - return mB; - } - - public class W extends B { - public W() { - - } - - @Override - public void change(String s) { - - } - } - - public class C extends B { - - @Override - public void change(String s) { - System.out.println("s" + s + ".C"); - } - } - - public class D extends B { - - @Override - public void change(String s) { - System.out.println("s" + s + ".D"); - } - } - - public void setA(B b) { - this.mB = b; - b.change("333"); - } - - public class E extends B { - - @Override - public void change(String s) { - System.out.println("s" + s + ".E"); - } - } - - public static void main(String[] args) { -// B b = new A().new E(); -// A.getA().getB().change("333"); - for (int i = 0; i < 1000; i++) { - System.out.println("xxx:" + UUID.randomUUID().toString()); - } - } -} - - - diff --git a/javalib/src/main/java/com/example/javalib/B.java b/javalib/src/main/java/com/example/javalib/B.java deleted file mode 100644 index 561f0d6a..00000000 --- a/javalib/src/main/java/com/example/javalib/B.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.example.javalib; - -/** - * Create by LingYan on 2017-10-17 - */ - -abstract class B { - public B() { - A.getA().setA(this); - } - - public void HH() { - - } - - public abstract void change(String s); - - public static void main(String[] args) { - - } -} diff --git a/javalib/src/main/res/values/strings.xml b/javalib/src/main/res/values/strings.xml deleted file mode 100644 index 64c94c55..00000000 --- a/javalib/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Javalib - diff --git a/javalib/src/test/java/com/example/javalib/ExampleUnitTest.java b/javalib/src/test/java/com/example/javalib/ExampleUnitTest.java deleted file mode 100644 index a7aca4a1..00000000 --- a/javalib/src/test/java/com/example/javalib/ExampleUnitTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.example.javalib; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * Example local unit test, which will execute on the development machine (host). - * - * @see Testing documentation - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() throws Exception { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 244f7dbc..2fb938dd 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':app', ':superplayerlibrary', ':ijkplayerlibrary', ':javalib', ':support-ly-network', ':support-ly-rxbus', ':support-ly-ui', ':support-ly-business', ':support-ly-jsoup' +include ':app', ':superplayerlibrary', ':ijkplayerlibrary', ':android-coding-network', ':android-coding-rxbus', ':android-coding-ui', ':android-coding-business', ':android-coding-jsoup' diff --git a/superplayerlibrary/build.gradle b/superplayerlibrary/build.gradle index 5404ae2c..8533a719 100644 --- a/superplayerlibrary/build.gradle +++ b/superplayerlibrary/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.library' android { compileSdkVersion rootProject.compileSdkVersion - buildToolsVersion rootProject.buildToolsVersion defaultConfig { minSdkVersion rootProject.minSdkVersion @@ -20,12 +19,11 @@ android { lintOptions { abortOnError false } - buildToolsVersion '26.0.2' } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - testCompile 'junit:junit:4.12' - compile "com.android.support:appcompat-v7:${supportVersion}" - compile project(':ijkplayerlibrary') + implementation fileTree(dir: 'libs', include: ['*.jar']) + testImplementation 'junit:junit:4.12' + implementation "com.android.support:appcompat-v7:${supportVersion}" + implementation project(':ijkplayerlibrary') } diff --git a/support-ly-rxbus/proguard-rules.pro b/support-ly-rxbus/proguard-rules.pro deleted file mode 100644 index f3e3ccae..00000000 --- a/support-ly-rxbus/proguard-rules.pro +++ /dev/null @@ -1,25 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in D:\android\sdk/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile diff --git a/support-ly-ui/.gitignore b/support-ly-ui/.gitignore deleted file mode 100644 index 796b96d1..00000000 --- a/support-ly-ui/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build From af5a20ac6baa4530a13b2011c6631858c8b11010 Mon Sep 17 00:00:00 2001 From: leftcoding <137387869@qq.com> Date: Sun, 14 Apr 2019 23:29:16 +0800 Subject: [PATCH 27/27] =?UTF-8?q?=E8=BF=81=E7=A7=BBAndroidX?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/leftcoding/network/base/Server.java | 38 ---------- app/build.gradle | 50 ++++--------- app/src/main/AndroidManifest.xml | 3 +- .../gank/gankly/butterknife/BasicHolder.java | 5 +- .../gankly/butterknife/BindViewHolder.java | 2 +- .../butterknife/ButterKnifeFragment.java | 4 +- .../config/glide/GlideRoundTransform.java | 1 - .../config/glide/MyOkHttpUrlLoader.java | 3 +- .../gankly/config/glide/ProgressTarget.java | 2 +- .../gankly/config/glide/WrappingTarget.java | 2 +- .../com/gank/gankly/diff/DiffCallback.java | 2 +- .../gank/gankly/mvp/SubscribePresenter.java | 2 +- .../gank/gankly/mvp/base/BasePresenter.java | 7 ++ .../gankly/mvp/base/LoadMorePresenter.java | 2 +- .../gankly/mvp/observer/BaseObserver.java | 3 +- .../gankly/mvp/observer/PageOnObserver.java | 52 ------------- .../mvp/observer/RefreshOnObserver.java | 19 ++--- .../gankly/mvp/source/LocalDataSource.java | 2 +- .../mvp/source/remote/MeiZiTuDataSource.java | 2 +- .../gankly/mvp/subseribe/PageSubscribe.java | 60 ++------------- .../gank/gankly/network/api/ApiManager.java | 2 +- .../gank/gankly/rxjava/rxclick/Rxbunding.java | 2 +- .../java/com/gank/gankly/ui/MainActivity.java | 6 +- .../gankly/ui/android/AndroidAdapter.java | 4 +- .../gankly/ui/android/AndroidContract.java | 6 +- .../gankly/ui/android/AndroidFragment.java | 26 ++++--- .../gankly/ui/android/AndroidPresenter.java | 73 ++++++++++--------- .../gank/gankly/ui/baisi/BaiSiActivity.java | 2 +- .../gankly/ui/baisi/BaiSiMainFragment.java | 12 +-- .../gankly/ui/baisi/BaiSiVideoAdapter.java | 4 +- .../gankly/ui/baisi/BaiSiVideoFragment.java | 6 +- .../ui/baisi/BaiSiVideoPreViewActivity.java | 6 +- .../ui/baisi/image/BaiSiGalleryFragment.java | 8 +- .../ui/baisi/image/BaiSiImageAdapter.java | 4 +- .../ui/baisi/image/BaiSiImageContract.java | 2 +- .../ui/baisi/image/BaiSiImageFragment.java | 6 +- .../com/gank/gankly/ui/base/BaseHolder.java | 2 +- .../ui/base/BaseSwipeRefreshFragment.java | 4 +- .../gankly/ui/base/BaseThemeFragment.java | 33 ++++----- .../gank/gankly/ui/base/BaseViewHolder.java | 2 +- .../com/gank/gankly/ui/base/DiffAdapter.java | 6 +- .../gank/gankly/ui/base/ISwipeRefresh.java | 2 +- .../com/gank/gankly/ui/base/LazyFragment.java | 4 +- .../gankly/ui/base/activity/BaseActivity.java | 12 +-- .../gankly/ui/base/adapter/BaseAdapter.java | 4 +- .../gankly/ui/base/adapter/BaseHolder.java | 2 +- .../gankly/ui/base/adapter/BaseViewModel.java | 2 +- .../gankly/ui/base/adapter/ViewModel.java | 2 +- .../ui/base/fragment/SupportFragment.java | 4 +- .../ui/base/fragment/ThemeFragment.java | 31 ++++---- .../gankly/ui/collect/CollectAdapter.java | 2 +- .../gankly/ui/collect/CollectFragment.java | 20 +++-- .../gankly/ui/collect/CollectPresenter.java | 2 +- .../com/gank/gankly/ui/cure/CureAdapter.java | 2 +- .../com/gank/gankly/ui/cure/CureContract.java | 2 +- .../com/gank/gankly/ui/cure/CureFragment.java | 6 +- .../gank/gankly/ui/cure/CurePresenter.java | 8 +- .../gankly/ui/daily/DailyGirlContract.java | 2 +- .../gankly/ui/daily/DailyGirlFragment.java | 6 +- .../ui/discovered/DiscoveredFragment.java | 8 +- .../ui/discovered/jiandan/JiandanAdapter.java | 2 +- .../discovered/jiandan/JiandanContract.java | 2 +- .../discovered/jiandan/JiandanFragment.java | 8 +- .../ui/discovered/more/DiscoveredAdapter.java | 6 +- .../discovered/teamBlog/TeamBlogAdapter.java | 2 +- .../discovered/teamBlog/TeamBlogFragment.java | 8 +- .../technology/TechnologyAdapter.java | 2 +- .../technology/TechnologyContract.java | 2 +- .../technology/TechnologyFragment.java | 8 +- .../ui/discovered/video/VideoAdapter.java | 2 +- .../ui/discovered/video/VideoContract.java | 2 +- .../ui/discovered/video/VideoFragment.java | 12 +-- .../gankly/ui/gallery/GalleryActivity.java | 10 +-- .../gankly/ui/gallery/GalleryContract.java | 2 +- .../gankly/ui/gallery/GalleryFragment.java | 4 +- .../ui/gallery/GalleryPagerAdapter.java | 6 +- .../gank/gankly/ui/girls/GirlsAdapter.java | 6 +- .../gank/gankly/ui/girls/GirlsFragment.java | 8 +- .../ui/history/BrowseHistoryAdapter.java | 4 +- .../ui/history/BrowseHistoryContract.java | 2 +- .../ui/history/BrowseHistoryFragment.java | 14 ++-- .../com/gank/gankly/ui/ios/IosAdapter.java | 2 +- .../com/gank/gankly/ui/ios/IosContract.java | 2 +- .../com/gank/gankly/ui/ios/IosFragment.java | 10 +-- .../com/gank/gankly/ui/ios/IosPresenter.java | 33 +++++++-- .../gank/gankly/ui/main/GankPagerAdapter.java | 6 +- .../gank/gankly/ui/main/IndexContract.java | 2 +- .../gank/gankly/ui/main/IndexFragment.java | 10 +-- .../gankly/ui/main/tab/MainTabContract.java | 2 +- .../gankly/ui/main/tab/MainTabFragment.java | 4 +- .../gankly/ui/main/tab/MainTabPresenter.java | 2 +- .../com/gank/gankly/ui/mine/MineFragment.java | 51 +++++++------ .../gank/gankly/ui/more/AboutFragment.java | 10 +-- .../com/gank/gankly/ui/more/MoreActivity.java | 4 +- .../gank/gankly/ui/more/SettingFragment.java | 8 +- .../com/gank/gankly/ui/pure/PureAdapter.java | 2 +- .../com/gank/gankly/ui/pure/PureContract.java | 2 +- .../com/gank/gankly/ui/pure/PureFragment.java | 8 +- .../gank/gankly/ui/pure/PurePresenter.java | 3 +- .../gank/gankly/ui/splash/SplashActivity.java | 2 +- .../gankly/ui/web/JiandanWebActivity.java | 8 +- .../gankly/ui/web/WebVideoViewActivity.java | 2 +- .../gankly/ui/web/normal/WebActivity.java | 6 +- .../gankly/ui/web/normal/WebContract.java | 2 +- .../gankly/ui/web/normal/WebPresenter.java | 2 +- .../gankly/ui/welfare/ImageViewModel.java | 2 +- .../gankly/ui/welfare/WelfareContract.java | 2 +- .../gankly/ui/welfare/WelfareFragment.java | 12 +-- .../gankly/ui/welfare/WelfarePresenter.java | 23 ++++-- .../com/gank/gankly/utils/StyleUtils.java | 5 +- .../utils/gilde/GlideImageLoaderStrategy.java | 2 +- .../utils/gilde/NetworkDisablingLoader.java | 2 +- .../gankly/utils/gilde/WifiOnlyLoader.java | 2 +- .../utils/permission/PermissionUtils.java | 6 +- .../gankly/utils/theme/RecyclerViewColor.java | 4 +- .../gank/gankly/utils/theme/ThemeColor.java | 6 +- .../gank/gankly/widget/ByeBurgerBehavior.java | 4 +- .../widget/ByeBurgerBottomBehavior.java | 2 +- .../com/gank/gankly/widget/DeleteDialog.java | 8 +- .../gankly/widget/DepthPageTransformer.java | 2 +- .../gank/gankly/widget/HorizontalLoading.java | 2 +- .../gankly/widget/ImageDefaultLoading.java | 2 +- .../gank/gankly/widget/ImageDefaultView.java | 2 +- .../java/com/gank/gankly/widget/LSwitch.java | 6 +- .../gank/gankly/widget/LyRecyclerView.java | 6 +- .../gankly/widget/LySwipeRefreshLayout.java | 10 +-- .../com/gank/gankly/widget/MyDecoration.java | 4 +- .../gank/gankly/widget/ProgressImageView.java | 7 +- .../gank/gankly/widget/RatioImageView.java | 2 +- .../gankly/widget/RecycleViewDivider.java | 4 +- .../gankly/widget/SpaceItemDecoration.java | 2 +- .../gank/gankly/widget/TouchImageView.java | 2 +- .../gankly/widget/UpdateVersionDialog.java | 4 +- .../OnFlexibleScrollListener.java | 8 +- .../widget/transforms/ABaseTransformer.java | 2 +- .../res/layout/activity_browse_picture.xml | 2 +- app/src/main/res/layout/activity_collcet.xml | 10 +-- app/src/main/res/layout/activity_jiandan.xml | 6 +- app/src/main/res/layout/activity_main.xml | 4 +- app/src/main/res/layout/activity_web.xml | 10 +-- app/src/main/res/layout/adapter_gift.xml | 4 +- app/src/main/res/layout/adapter_ios.xml | 4 +- .../main/res/layout/adapter_technology.xml | 4 +- app/src/main/res/layout/adapter_video.xml | 4 +- app/src/main/res/layout/fragment_about.xml | 18 ++--- .../layout/fragment_baisi_preview_video.xml | 4 +- app/src/main/res/layout/fragment_browse.xml | 10 +-- .../main/res/layout/fragment_discovered.xml | 8 +- app/src/main/res/layout/fragment_girls.xml | 8 +- app/src/main/res/layout/fragment_main.xml | 8 +- .../main/res/layout/fragment_mian_baisi.xml | 14 ++-- app/src/main/res/layout/fragment_mine.xml | 26 +++---- app/src/main/res/layout/fragment_setting.xml | 8 +- app/src/main/res/layout/fragment_welfare.xml | 10 +-- app/src/main/res/layout/layout_bar.xml | 6 +- .../res/layout/layout_default_refresh.xml | 2 +- gradle.properties | 10 +-- ijkplayerlibrary/build.gradle | 2 +- .../ijk/media/player/widget/IRenderView.java | 5 +- .../ijk/media/player/widget/IjkVideoView.java | 2 +- .../player/widget/SurfaceRenderView.java | 4 +- .../player/widget/TextureRenderView.java | 4 +- settings.gradle | 2 +- superplayerlibrary/build.gradle | 2 +- .../com/superplayer/library/SuperPlayer.java | 4 +- .../library/mediaplayer/IRenderView.java | 4 +- .../library/mediaplayer/IjkVideoView.java | 2 +- .../mediaplayer/SurfaceRenderView.java | 4 +- .../mediaplayer/TextureRenderView.java | 4 +- .../.gitignore | 0 .../build.gradle | 2 +- .../proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 0 .../java/android/ly/business/api/Api.java | 2 +- .../android/ly/business/api/GankServer.java | 30 ++++---- .../ly/business/api/GankServerHelper.java | 0 .../ly/business/domain/BaseEntity.java | 2 +- .../ly/business/domain/ContentEqual.java | 0 .../java/android/ly/business/domain/Gank.java | 0 .../java/android/ly/business/domain/Gift.java | 0 .../java/android/ly/business/domain/Girl.java | 0 .../ly/business/domain/ListEntity.java | 0 .../ly/business/domain/PageConfig.java | 18 ++++- .../ly/business/domain/PageEntity.java | 0 .../src/main/res/values/strings.xml | 0 .../.gitignore | 0 .../build.gradle | 2 +- .../proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 0 .../main/java/android/ly/jsoup/JsoupMate.java | 0 .../java/android/ly/jsoup/JsoupServer.java | 0 .../src/main/java/android/ly/jsoup/Mate.java | 0 .../java/android/ly/jsoup/RxJsoupMate.java | 0 .../src/main/res/values/strings.xml | 0 .../.gitignore | 0 .../build.gradle | 2 +- .../proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 0 .../network/base/NetworkControl.java | 0 .../com/leftcoding/network/base/Server.java | 16 ++++ .../network/base/ServerDisposable.java | 0 .../leftcoding/network/base/ServerHelper.java | 0 .../src/main/res/values/strings.xml | 0 .../.gitignore | 0 .../build.gradle | 2 +- .../proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 0 .../com/leftcoding/rxbus/RxActionManager.java | 0 .../com/leftcoding/rxbus/RxApiManager.java | 0 .../main/java/com/leftcoding/rxbus/RxBus.java | 0 .../java/com/leftcoding/rxbus/RxConsumer.java | 0 .../src/main/res/values/strings.xml | 0 .../.gitignore | 0 .../build.gradle | 4 +- .../proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 0 .../lectcoding/ui/adapter/BaseAdapter.java | 2 +- .../lectcoding/ui/adapter/BasicHolder.java | 4 +- .../lectcoding/ui/adapter/BasicViewItem.java | 0 .../ui/adapter/ObserverAdapter.java | 2 +- .../lectcoding/ui/adapter/ViewItem.java | 2 +- .../lectcoding/ui/base/BaseContract.java | 0 .../lectcoding/ui/base/BaseFragment.java | 6 +- .../android/lectcoding/ui/base/BaseView.java | 0 .../android/lectcoding/ui/logcat/Logcat.java | 2 +- .../lectcoding/ui/logcat/LogcatUtil.java | 0 .../lectcoding/ui/logcat/base/BaseLog.java | 0 .../lectcoding/ui/logcat/base/FileLog.java | 4 +- .../lectcoding/ui/logcat/base/JsonLog.java | 0 .../lectcoding/ui/logcat/base/XmlLog.java | 0 .../src/main/res/values/strings.xml | 0 231 files changed, 633 insertions(+), 726 deletions(-) delete mode 100644 android-coding-network/src/main/java/com/leftcoding/network/base/Server.java delete mode 100644 app/src/main/java/com/gank/gankly/mvp/observer/PageOnObserver.java rename {android-coding-business => support-coding-business}/.gitignore (100%) rename {android-coding-business => support-coding-business}/build.gradle (93%) rename {android-coding-business => support-coding-business}/proguard-rules.pro (100%) rename {android-coding-business => support-coding-business}/src/main/AndroidManifest.xml (100%) rename android-coding-business/src/main/java/android/ly/business/api/GankApi.java => support-coding-business/src/main/java/android/ly/business/api/Api.java (97%) rename {android-coding-business => support-coding-business}/src/main/java/android/ly/business/api/GankServer.java (81%) rename {android-coding-business => support-coding-business}/src/main/java/android/ly/business/api/GankServerHelper.java (100%) rename {android-coding-business => support-coding-business}/src/main/java/android/ly/business/domain/BaseEntity.java (90%) rename {android-coding-business => support-coding-business}/src/main/java/android/ly/business/domain/ContentEqual.java (100%) rename {android-coding-business => support-coding-business}/src/main/java/android/ly/business/domain/Gank.java (100%) rename {android-coding-business => support-coding-business}/src/main/java/android/ly/business/domain/Gift.java (100%) rename {android-coding-business => support-coding-business}/src/main/java/android/ly/business/domain/Girl.java (100%) rename {android-coding-business => support-coding-business}/src/main/java/android/ly/business/domain/ListEntity.java (100%) rename {android-coding-business => support-coding-business}/src/main/java/android/ly/business/domain/PageConfig.java (67%) rename {android-coding-business => support-coding-business}/src/main/java/android/ly/business/domain/PageEntity.java (100%) rename {android-coding-business => support-coding-business}/src/main/res/values/strings.xml (100%) rename {android-coding-jsoup => support-coding-jsoup}/.gitignore (100%) rename {android-coding-jsoup => support-coding-jsoup}/build.gradle (92%) rename {android-coding-jsoup => support-coding-jsoup}/proguard-rules.pro (100%) rename {android-coding-jsoup => support-coding-jsoup}/src/main/AndroidManifest.xml (100%) rename {android-coding-jsoup => support-coding-jsoup}/src/main/java/android/ly/jsoup/JsoupMate.java (100%) rename {android-coding-jsoup => support-coding-jsoup}/src/main/java/android/ly/jsoup/JsoupServer.java (100%) rename {android-coding-jsoup => support-coding-jsoup}/src/main/java/android/ly/jsoup/Mate.java (100%) rename {android-coding-jsoup => support-coding-jsoup}/src/main/java/android/ly/jsoup/RxJsoupMate.java (100%) rename {android-coding-jsoup => support-coding-jsoup}/src/main/res/values/strings.xml (100%) rename {android-coding-network => support-coding-network}/.gitignore (100%) rename {android-coding-network => support-coding-network}/build.gradle (96%) rename {android-coding-network => support-coding-network}/proguard-rules.pro (100%) rename {android-coding-network => support-coding-network}/src/main/AndroidManifest.xml (100%) rename {android-coding-network => support-coding-network}/src/main/java/com/leftcoding/network/base/NetworkControl.java (100%) create mode 100644 support-coding-network/src/main/java/com/leftcoding/network/base/Server.java rename {android-coding-network => support-coding-network}/src/main/java/com/leftcoding/network/base/ServerDisposable.java (100%) rename {android-coding-network => support-coding-network}/src/main/java/com/leftcoding/network/base/ServerHelper.java (100%) rename {android-coding-network => support-coding-network}/src/main/res/values/strings.xml (100%) rename {android-coding-rxbus => support-coding-rxbus}/.gitignore (100%) rename {android-coding-rxbus => support-coding-rxbus}/build.gradle (89%) rename {android-coding-rxbus => support-coding-rxbus}/proguard-rules.pro (100%) rename {android-coding-rxbus => support-coding-rxbus}/src/main/AndroidManifest.xml (100%) rename {android-coding-rxbus => support-coding-rxbus}/src/main/java/com/leftcoding/rxbus/RxActionManager.java (100%) rename {android-coding-rxbus => support-coding-rxbus}/src/main/java/com/leftcoding/rxbus/RxApiManager.java (100%) rename {android-coding-rxbus => support-coding-rxbus}/src/main/java/com/leftcoding/rxbus/RxBus.java (100%) rename {android-coding-rxbus => support-coding-rxbus}/src/main/java/com/leftcoding/rxbus/RxConsumer.java (100%) rename {android-coding-rxbus => support-coding-rxbus}/src/main/res/values/strings.xml (100%) rename {android-coding-ui => support-coding-ui}/.gitignore (100%) rename {android-coding-ui => support-coding-ui}/build.gradle (78%) rename {android-coding-ui => support-coding-ui}/proguard-rules.pro (100%) rename {android-coding-ui => support-coding-ui}/src/main/AndroidManifest.xml (100%) rename {android-coding-ui => support-coding-ui}/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java (82%) rename {android-coding-ui => support-coding-ui}/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java (86%) rename {android-coding-ui => support-coding-ui}/src/main/java/android/lectcoding/ui/adapter/BasicViewItem.java (100%) rename {android-coding-ui => support-coding-ui}/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java (92%) rename {android-coding-ui => support-coding-ui}/src/main/java/android/lectcoding/ui/adapter/ViewItem.java (77%) rename {android-coding-ui => support-coding-ui}/src/main/java/android/lectcoding/ui/base/BaseContract.java (100%) rename {android-coding-ui => support-coding-ui}/src/main/java/android/lectcoding/ui/base/BaseFragment.java (91%) rename {android-coding-ui => support-coding-ui}/src/main/java/android/lectcoding/ui/base/BaseView.java (100%) rename {android-coding-ui => support-coding-ui}/src/main/java/android/lectcoding/ui/logcat/Logcat.java (99%) rename {android-coding-ui => support-coding-ui}/src/main/java/android/lectcoding/ui/logcat/LogcatUtil.java (100%) rename {android-coding-ui => support-coding-ui}/src/main/java/android/lectcoding/ui/logcat/base/BaseLog.java (100%) rename {android-coding-ui => support-coding-ui}/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java (94%) rename {android-coding-ui => support-coding-ui}/src/main/java/android/lectcoding/ui/logcat/base/JsonLog.java (100%) rename {android-coding-ui => support-coding-ui}/src/main/java/android/lectcoding/ui/logcat/base/XmlLog.java (100%) rename {android-coding-ui => support-coding-ui}/src/main/res/values/strings.xml (100%) diff --git a/android-coding-network/src/main/java/com/leftcoding/network/base/Server.java b/android-coding-network/src/main/java/com/leftcoding/network/base/Server.java deleted file mode 100644 index 1327f9fe..00000000 --- a/android-coding-network/src/main/java/com/leftcoding/network/base/Server.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.leftcoding.network.base; - -import android.content.Context; - -import io.reactivex.Observable; -import io.reactivex.functions.Consumer; - -/** - * Create by LingYan on 2018-09-21 - */ - -public abstract class Server extends ServerDisposable { - - protected Server(Context context) { - super(context); - } - - protected void addExec(String tag, Observable observable, final ConsumerCall call) { - addExec(tag, observable.subscribe(new Consumer() { - @Override - public void accept(T t) throws Exception { - call.onNext(t); - } - }, new Consumer() { - @Override - public void accept(Throwable throwable) throws Exception { - call.accept(throwable); - } - }) - ); - } - - public interface ConsumerCall { - void onNext(T t) throws Exception; - - void accept(Throwable throwable); - } -} diff --git a/app/build.gradle b/app/build.gradle index 7970e422..5ce985e6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,8 +1,5 @@ apply plugin: 'com.android.application' -//findbugs -apply plugin: "findbugs" - android { compileSdkVersion rootProject.compileSdkVersion defaultConfig { @@ -18,7 +15,7 @@ android { } buildConfigField("String", "GANK_SERVER_ULR", "\"${gank_server_url}\"") - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testOptions.unitTests.includeAndroidResources = true } @@ -61,42 +58,21 @@ android { exclude 'META-INF/services/javax.annotation.processing.Processor' exclude 'META-INF/rxjava.properties' } - - apply plugin: 'findbugs' - task findbugs(type: FindBugs) { - ignoreFailures = false - effort = "default" - reportLevel = "medium" - excludeFilter = new File("${project.rootDir}/findbugs/findbugs-filter.xml") - classes = files("${project.rootDir}/app/build/intermediates/classes") - source = fileTree('src/main/java/') - classpath = files() - reports { - xml.enabled = true - html.enabled = true - xml { - destination "$project.buildDir/findbugs/findbugs-output.xml" - } - html { - destination "$project.buildDir/findbugs/findbugs-output.html" - } - } - } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') testImplementation 'junit:junit:4.12' // - implementation project(':android-coding-business') - implementation project(':android-coding-rxbus') + implementation project(':support-coding-business') + implementation project(':support-coding-rxbus') implementation project(':superplayerlibrary') - implementation project(':android-coding-ui') - implementation project(':android-coding-jsoup') - implementation "com.android.support:appcompat-v7:${supportVersion}" - implementation "com.android.support:design:${supportVersion}" - implementation "com.android.support:cardview-v7:${supportVersion}" - implementation "com.android.support:recyclerview-v7:${supportVersion}" + implementation project(':support-coding-ui') + implementation project(':support-coding-jsoup') + implementation "androidx.appcompat:appcompat:${supportVersion}" + implementation "com.google.android.material:material:${supportVersion}" + implementation "androidx.cardview:cardview:${supportVersion}" + implementation "androidx.recyclerview:recyclerview:${supportVersion}" implementation "com.github.zhaokaiqiang.klog:library:${klogVersion}" implementation "com.jakewharton:butterknife:${butterknife}" annotationProcessor "com.jakewharton:butterknife-compiler:${butterknife}" @@ -123,10 +99,12 @@ dependencies { implementation "com.facebook.stetho:stetho-okhttp3:${stethoOkhttp3}" // recyclerview-animators - implementation 'jp.wasabeef:recyclerview-animators:2.2.3' +// implementation 'jp.wasabeef:recyclerview-animators:2.2.3' //底部导航 https://github.com/roughike/BottomBar - implementation "com.roughike:bottom-bar:${bottomBar}" + implementation ("com.roughike:bottom-bar:${bottomBar}"){ + exclude group: 'com.android.support' + } //大图库 implementation("com.davemorrissey.labs:subsampling-scale-image-view:${subsamplingVersion}") { @@ -137,5 +115,5 @@ dependencies { implementation "io.reactivex.rxjava2:rxjava:${rxjava}" implementation "io.reactivex.rxjava2:rxandroid:${rxandroid}" implementation "com.tencent.bugly:crashreport_upgrade:${crashreportUpgrade}" - implementation "com.android.support.constraint:constraint-layout:${constraintLayout}" + implementation "androidx.constraintlayout:constraintlayout:${constraintLayout}" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 52cdcf3f..ccd882ad 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ @@ -87,7 +88,7 @@ android:theme="@android:style/Theme.Translucent" /> diff --git a/app/src/main/java/com/gank/gankly/butterknife/BasicHolder.java b/app/src/main/java/com/gank/gankly/butterknife/BasicHolder.java index 0bbf25ea..f358edab 100644 --- a/app/src/main/java/com/gank/gankly/butterknife/BasicHolder.java +++ b/app/src/main/java/com/gank/gankly/butterknife/BasicHolder.java @@ -1,10 +1,11 @@ package com.gank.gankly.butterknife; -import android.support.annotation.LayoutRes; -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.ViewGroup; +import androidx.annotation.LayoutRes; +import androidx.recyclerview.widget.RecyclerView; + public abstract class BasicHolder extends RecyclerView.ViewHolder { public BasicHolder(ViewGroup parent, @LayoutRes int layout) { super(LayoutInflater.from(parent.getContext()).inflate(layout, parent, false)); diff --git a/app/src/main/java/com/gank/gankly/butterknife/BindViewHolder.java b/app/src/main/java/com/gank/gankly/butterknife/BindViewHolder.java index 184a852a..f1e28198 100644 --- a/app/src/main/java/com/gank/gankly/butterknife/BindViewHolder.java +++ b/app/src/main/java/com/gank/gankly/butterknife/BindViewHolder.java @@ -1,6 +1,6 @@ package com.gank.gankly.butterknife; -import android.support.annotation.LayoutRes; +import androidx.annotation.LayoutRes; import android.view.ViewGroup; import butterknife.ButterKnife; diff --git a/app/src/main/java/com/gank/gankly/butterknife/ButterKnifeFragment.java b/app/src/main/java/com/gank/gankly/butterknife/ButterKnifeFragment.java index d872f2d4..ad522381 100644 --- a/app/src/main/java/com/gank/gankly/butterknife/ButterKnifeFragment.java +++ b/app/src/main/java/com/gank/gankly/butterknife/ButterKnifeFragment.java @@ -1,8 +1,8 @@ package com.gank.gankly.butterknife; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gank/gankly/config/glide/GlideRoundTransform.java b/app/src/main/java/com/gank/gankly/config/glide/GlideRoundTransform.java index 8a64e764..978f1560 100644 --- a/app/src/main/java/com/gank/gankly/config/glide/GlideRoundTransform.java +++ b/app/src/main/java/com/gank/gankly/config/glide/GlideRoundTransform.java @@ -22,7 +22,6 @@ public GlideRoundTransform(Context context) { } public GlideRoundTransform(Context context, int dp) { - super(context); radius = Resources.getSystem().getDisplayMetrics().density * dp; } diff --git a/app/src/main/java/com/gank/gankly/config/glide/MyOkHttpUrlLoader.java b/app/src/main/java/com/gank/gankly/config/glide/MyOkHttpUrlLoader.java index 04865af2..876e1a12 100644 --- a/app/src/main/java/com/gank/gankly/config/glide/MyOkHttpUrlLoader.java +++ b/app/src/main/java/com/gank/gankly/config/glide/MyOkHttpUrlLoader.java @@ -1,7 +1,5 @@ package com.gank.gankly.config.glide; -import android.support.annotation.Nullable; - import com.bumptech.glide.load.Options; import com.bumptech.glide.load.data.DataFetcher; import com.bumptech.glide.load.model.GlideUrl; @@ -11,6 +9,7 @@ import java.io.InputStream; +import androidx.annotation.Nullable; import okhttp3.OkHttpClient; /** diff --git a/app/src/main/java/com/gank/gankly/config/glide/ProgressTarget.java b/app/src/main/java/com/gank/gankly/config/glide/ProgressTarget.java index dbc3ed28..e8f29930 100644 --- a/app/src/main/java/com/gank/gankly/config/glide/ProgressTarget.java +++ b/app/src/main/java/com/gank/gankly/config/glide/ProgressTarget.java @@ -1,7 +1,7 @@ package com.gank.gankly.config.glide; import android.graphics.drawable.Drawable; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.transition.Transition; diff --git a/app/src/main/java/com/gank/gankly/config/glide/WrappingTarget.java b/app/src/main/java/com/gank/gankly/config/glide/WrappingTarget.java index b6962ecb..b656c089 100644 --- a/app/src/main/java/com/gank/gankly/config/glide/WrappingTarget.java +++ b/app/src/main/java/com/gank/gankly/config/glide/WrappingTarget.java @@ -1,7 +1,7 @@ package com.gank.gankly.config.glide; import android.graphics.drawable.Drawable; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.bumptech.glide.request.Request; import com.bumptech.glide.request.target.SizeReadyCallback; diff --git a/app/src/main/java/com/gank/gankly/diff/DiffCallback.java b/app/src/main/java/com/gank/gankly/diff/DiffCallback.java index 10aac346..3f1cb6ef 100644 --- a/app/src/main/java/com/gank/gankly/diff/DiffCallback.java +++ b/app/src/main/java/com/gank/gankly/diff/DiffCallback.java @@ -1,6 +1,6 @@ package com.gank.gankly.diff; -import android.support.v7.util.DiffUtil; +import androidx.recyclerview.widget.DiffUtil; import com.gank.gankly.ui.base.adapter.ItemComparator; diff --git a/app/src/main/java/com/gank/gankly/mvp/SubscribePresenter.java b/app/src/main/java/com/gank/gankly/mvp/SubscribePresenter.java index b2ca5dbe..250b56bb 100644 --- a/app/src/main/java/com/gank/gankly/mvp/SubscribePresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/SubscribePresenter.java @@ -1,7 +1,7 @@ package com.gank.gankly.mvp; import android.content.Context; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.mvp.base.BasePresenter; import android.lectcoding.ui.base.BaseView; diff --git a/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java b/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java index bd187935..978947bc 100644 --- a/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/base/BasePresenter.java @@ -7,6 +7,7 @@ import com.gank.gankly.R; import java.util.UUID; +import java.util.concurrent.atomic.AtomicBoolean; /** * Create by LingYan on 2016-05-12 @@ -15,6 +16,7 @@ public abstract class BasePresenter extends BaseContract.Pre protected E view; protected Context context; protected String requestTag = UUID.randomUUID().toString(); + private AtomicBoolean isDestroy = new AtomicBoolean(false); private String errorTip; public BasePresenter(Context context, E view) { @@ -25,6 +27,7 @@ public BasePresenter(Context context, E view) { public void destroy() { onDestroy(); + isDestroy.set(true); view = null; context = null; } @@ -50,4 +53,8 @@ protected boolean isViewLife() { } protected abstract void onDestroy(); + + protected boolean isDestroy() { + return isDestroy.get(); + } } diff --git a/app/src/main/java/com/gank/gankly/mvp/base/LoadMorePresenter.java b/app/src/main/java/com/gank/gankly/mvp/base/LoadMorePresenter.java index fd5e129c..f7cc6ed9 100644 --- a/app/src/main/java/com/gank/gankly/mvp/base/LoadMorePresenter.java +++ b/app/src/main/java/com/gank/gankly/mvp/base/LoadMorePresenter.java @@ -2,7 +2,7 @@ import android.content.Context; import android.lectcoding.ui.base.BaseView; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; /** * Create by LingYan on 2017-10-12 diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java index e97b04b7..507ffdbc 100644 --- a/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java +++ b/app/src/main/java/com/gank/gankly/mvp/observer/BaseObserver.java @@ -24,7 +24,8 @@ public void onSubscribe(@NonNull Disposable d) { RxApiManager.get().add(observerTag, d); } - protected void onErrorException(Throwable e) { + @Override + public void onError(Throwable e) { Logcat.e(e); } } diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/PageOnObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/PageOnObserver.java deleted file mode 100644 index 3929f1a4..00000000 --- a/app/src/main/java/com/gank/gankly/mvp/observer/PageOnObserver.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.gank.gankly.mvp.observer; - -import android.ly.business.domain.PageEntity; - -import android.lectcoding.ui.base.BaseView; - -/** - * Create by LingYan on 2017-10-12 - */ - -public abstract class PageOnObserver extends RefreshOnObserver { - protected PageOnObserver(String requestTag, V v) { - super(requestTag, v); - } - - @Override - public final void onNext(T t) { - if (t != null) { - onSuccess(t); - } else { - onFailure(); - } - } - - @Override - public final void onError(Throwable e) { - onErrorException(e); - onFailure(); - } - - protected abstract void loadMoreSuccess(T t); - - protected abstract void loadMoreFailure(); - - protected abstract boolean isFirst(); - - private void onSuccess(T t) { - if (isFirst()) { - onRefreshSuccess(t); - } else { - loadMoreSuccess(t); - } - } - - private void onFailure() { - if (isFirst()) { - onRefreshFailure(); - } else { - loadMoreFailure(); - } - } -} diff --git a/app/src/main/java/com/gank/gankly/mvp/observer/RefreshOnObserver.java b/app/src/main/java/com/gank/gankly/mvp/observer/RefreshOnObserver.java index 3988dc50..f1d96aab 100644 --- a/app/src/main/java/com/gank/gankly/mvp/observer/RefreshOnObserver.java +++ b/app/src/main/java/com/gank/gankly/mvp/observer/RefreshOnObserver.java @@ -2,35 +2,28 @@ import android.ly.business.domain.BaseEntity; -import android.lectcoding.ui.base.BaseView; - /** * Create by LingYan on 2017-11-19 */ -public abstract class RefreshOnObserver extends BaseObserver { - protected V view; +public abstract class RefreshOnObserver extends BaseObserver { - RefreshOnObserver(String requestTag, V v) { + public RefreshOnObserver(String requestTag) { super(requestTag); - this.view = v; } - protected abstract void onRefreshSuccess(T t); + protected abstract void onSuccess(T t); - protected abstract void onRefreshFailure(); + protected abstract void onFailure(); @Override public void onNext(T t) { - if (t == null) { - onRefreshFailure(); - } + onSuccess(t); } @Override public void onError(Throwable e) { - onErrorException(e); - onRefreshFailure(); + onFailure(); } @Override diff --git a/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java index 9c4c19c0..a447b39a 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/LocalDataSource.java @@ -1,6 +1,6 @@ package com.gank.gankly.mvp.source; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.data.entity.ReadHistory; import com.gank.gankly.data.entity.ReadHistoryDao; diff --git a/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiZiTuDataSource.java b/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiZiTuDataSource.java index 38351cf5..f68cb430 100644 --- a/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiZiTuDataSource.java +++ b/app/src/main/java/com/gank/gankly/mvp/source/remote/MeiZiTuDataSource.java @@ -1,6 +1,6 @@ package com.gank.gankly.mvp.source.remote; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; /** * Create by LingYan on 2016-10-26 diff --git a/app/src/main/java/com/gank/gankly/mvp/subseribe/PageSubscribe.java b/app/src/main/java/com/gank/gankly/mvp/subseribe/PageSubscribe.java index b6395873..a56dc487 100644 --- a/app/src/main/java/com/gank/gankly/mvp/subseribe/PageSubscribe.java +++ b/app/src/main/java/com/gank/gankly/mvp/subseribe/PageSubscribe.java @@ -1,74 +1,26 @@ package com.gank.gankly.mvp.subseribe; import android.ly.business.domain.Gank; -import android.ly.business.domain.PageConfig; import android.ly.business.domain.PageEntity; -import com.gank.gankly.mvp.base.PageView; -import com.gank.gankly.mvp.observer.PageOnObserver; +import com.gank.gankly.mvp.observer.RefreshOnObserver; /** * Create by LingYan on 2018-03-22 */ -public class PageSubscribe extends PageOnObserver, PageView> { - private PageConfig pageConfig; - - public PageSubscribe(String requestTag, PageView view, PageConfig pageConfig) { - super(requestTag, view); - this.pageConfig = pageConfig; - } - - @Override - protected void loadMoreSuccess(PageEntity pageEntity) { - if (view == null) { - return; - } - - if (pageEntity.results == null) { - view.appendFailure(pageEntity.msg); - return; - } - - view.appendSuccess(pageEntity.results); +public class PageSubscribe extends RefreshOnObserver> { + public PageSubscribe(String requestTag) { + super(requestTag); } @Override - protected void loadMoreFailure() { - if (view != null) { - view.appendFailure(null); - } - } + protected void onSuccess(PageEntity gankPageEntity) { - @Override - protected boolean isFirst() { - return pageConfig.isFirst(); } @Override - protected void onRefreshSuccess(PageEntity pageEntity) { - if (view == null) { - return; - } + protected void onFailure() { - if (pageEntity.results == null) { - view.refreshFailure(pageEntity.msg); - return; - } - - view.refreshSuccess(pageEntity.results); - } - - @Override - protected void onRefreshFailure() { - if (view != null) { - view.refreshFailure(null); - } - } - - @Override - public void onComplete() { - super.onComplete(); - pageConfig.curPage++; } } \ No newline at end of file diff --git a/app/src/main/java/com/gank/gankly/network/api/ApiManager.java b/app/src/main/java/com/gank/gankly/network/api/ApiManager.java index d4208852..a9717f64 100644 --- a/app/src/main/java/com/gank/gankly/network/api/ApiManager.java +++ b/app/src/main/java/com/gank/gankly/network/api/ApiManager.java @@ -1,6 +1,6 @@ package com.gank.gankly.network.api; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.facebook.stetho.okhttp3.StethoInterceptor; import com.google.gson.Gson; diff --git a/app/src/main/java/com/gank/gankly/rxjava/rxclick/Rxbunding.java b/app/src/main/java/com/gank/gankly/rxjava/rxclick/Rxbunding.java index 032d73a6..87360280 100644 --- a/app/src/main/java/com/gank/gankly/rxjava/rxclick/Rxbunding.java +++ b/app/src/main/java/com/gank/gankly/rxjava/rxclick/Rxbunding.java @@ -1,6 +1,6 @@ package com.gank.gankly.rxjava.rxclick; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.view.View; import io.reactivex.Observable; diff --git a/app/src/main/java/com/gank/gankly/ui/MainActivity.java b/app/src/main/java/com/gank/gankly/ui/MainActivity.java index 0b444ad7..9f9d21f4 100644 --- a/app/src/main/java/com/gank/gankly/ui/MainActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/MainActivity.java @@ -2,9 +2,9 @@ import android.content.res.Resources; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; import android.util.TypedValue; import android.view.KeyEvent; diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java index 098ce26f..bccd1e64 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidAdapter.java @@ -3,8 +3,8 @@ import android.content.Context; import android.lectcoding.ui.adapter.BaseAdapter; import android.ly.business.domain.Gank; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java index 793f52c4..4ecd50f0 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidContract.java @@ -2,7 +2,7 @@ import android.content.Context; import android.ly.business.domain.Gank; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.PageView; @@ -21,8 +21,6 @@ public Presenter(@NonNull Context context, @NonNull View view) { super(context, view); } - protected abstract void refreshAndroid(); - - protected abstract void appendAndroid(); + public abstract void loadAndroid(int page); } } diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java index 10c6ea88..5b3ce990 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidFragment.java @@ -3,11 +3,12 @@ import android.content.Context; import android.content.Intent; import android.ly.business.domain.Gank; +import android.ly.business.domain.PageConfig; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.Snackbar; -import android.support.v7.widget.LinearLayoutManager; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import com.google.android.material.snackbar.Snackbar; +import androidx.recyclerview.widget.LinearLayoutManager; import android.view.View; import com.gank.gankly.R; @@ -39,6 +40,7 @@ public class AndroidFragment extends LazyFragment implements AndroidContract.Vie private AndroidContract.Presenter androidPresenter; private AtomicBoolean isFirst = new AtomicBoolean(true); + private PageConfig pageConfig; @Override protected int getLayoutId() { @@ -63,11 +65,11 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat @Override public void onLazyActivityCreate() { androidPresenter = new AndroidPresenter(context, this); - initLoadAndroid(); + loadAndroid(PageConfig.starPage()); } private void initRecycler() { - androidAdapter = new AndroidAdapter(getContext()); + androidAdapter = new AndroidAdapter(context); swipeRefreshLayout.setAdapter(androidAdapter); swipeRefreshLayout.setLayoutManager(new LinearLayoutManager(getContext())); swipeRefreshLayout.setOnScrollListener(onRefreshListener); @@ -90,22 +92,24 @@ public void onItemClick(View view, Gank gank) { private final LySwipeRefreshLayout.OnSwipeRefreshListener onRefreshListener = new LySwipeRefreshLayout.OnSwipeRefreshListener() { @Override public void onRefresh() { - initLoadAndroid(); + loadAndroid(PageConfig.starPage()); } @Override public void onLoadMore() { - androidPresenter.appendAndroid(); + if (pageConfig != null) { + loadAndroid(pageConfig.getNextPage()); + } } }; private final MultipleStatusView.OnMultipleClick onMultipleClick = v -> { showLoading(); - initLoadAndroid(); + loadAndroid(PageConfig.starPage()); }; - private void initLoadAndroid() { - androidPresenter.refreshAndroid(); + private void loadAndroid(int page) { + androidPresenter.loadAndroid(page); } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java index 90535cfc..8f46d3e5 100644 --- a/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/android/AndroidPresenter.java @@ -2,45 +2,67 @@ import android.content.Context; import android.ly.business.api.GankServer; -import android.ly.business.domain.PageConfig; +import android.ly.business.domain.Gank; +import android.ly.business.domain.PageEntity; +import com.gank.gankly.mvp.observer.RefreshOnObserver; import com.gank.gankly.ui.android.AndroidContract.Presenter; -import com.gank.gankly.mvp.subseribe.PageSubscribe; import com.leftcoding.rxbus.RxApiManager; -import java.util.concurrent.atomic.AtomicBoolean; - /** * Create by LingYan on 2016-10-25 */ class AndroidPresenter extends Presenter { // 请求个数 private static final int INIT_LIMIT = 20; - private final AtomicBoolean destroyTag = new AtomicBoolean(false); - private PageConfig pageConfig; AndroidPresenter(Context context, AndroidContract.View view) { super(context, view); - pageConfig = new PageConfig(); } @Override - protected void refreshAndroid() { - pageConfig.curPage = 1; - fetchAndroid(); - } + public void loadAndroid(int page) { + if (isDestroy()) { + return; + } - @Override - protected void appendAndroid() { - fetchAndroid(); + GankServer.with(context) + .androids(page, INIT_LIMIT) + .doOnSubscribe(disposable -> { + if (isViewLife()) { + view.showProgress(); + } + }) + .doFinally(() -> { + if (isViewLife()) { + view.hideProgress(); + } + }) + .subscribe(new RefreshOnObserver>(requestTag) { + @Override + protected void onSuccess(PageEntity entity) { + if (isViewLife()) { + if (entity != null) { + view.refreshSuccess(entity.results); + return; + } + view.refreshFailure(""); + } + } + + @Override + protected void onFailure() { + if (isViewLife()) { + view.refreshFailure(""); + } + } + }); } @Override public void destroy() { - if (destroyTag.compareAndSet(false, true)) { - RxApiManager.get().clear(requestTag); - } super.destroy(); + RxApiManager.get().clear(requestTag); } @Override @@ -49,22 +71,7 @@ protected void onDestroy() { } private void fetchAndroid() { - if (destroyTag.get()) { - return; - } - GankServer.with(context) - .androids(pageConfig.curPage, INIT_LIMIT) - .doOnSubscribe(disposable -> { - if (isViewLife()) { - view.showProgress(); - } - }) - .doFinally(() -> { - if (isViewLife()) { - view.hideProgress(); - } - }) - .subscribe(new PageSubscribe(requestTag, view, pageConfig)); + } } diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiActivity.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiActivity.java index cb95307a..1895a57a 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiActivity.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.baisi; import android.os.Bundle; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.gank.gankly.R; import com.gank.gankly.ui.base.activity.BaseActivity; diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java index 34e5f40f..e8d9be38 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiMainFragment.java @@ -3,12 +3,12 @@ import android.content.Context; import android.content.res.Resources; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.TabLayout; -import android.support.v4.view.ViewPager; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.Toolbar; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import com.google.android.material.tabs.TabLayout; +import androidx.viewpager.widget.ViewPager; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.Toolbar; import android.util.TypedValue; import android.view.View; diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoAdapter.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoAdapter.java index 0d252b03..a94df548 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoAdapter.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.baisi; import android.content.Context; -import android.support.v4.util.ArrayMap; -import android.support.v7.widget.RecyclerView; +import androidx.collection.ArrayMap; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java index f551241a..2ef401a0 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoFragment.java @@ -3,9 +3,9 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.widget.LinearLayoutManager; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.LinearLayoutManager; import android.view.View; import com.gank.gankly.R; diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPreViewActivity.java b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPreViewActivity.java index 6b6ce33b..9141012b 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPreViewActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/BaiSiVideoPreViewActivity.java @@ -2,9 +2,9 @@ import android.content.res.Configuration; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.Toolbar; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java index b7330ba8..0a360ce2 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiGalleryFragment.java @@ -3,8 +3,6 @@ import android.graphics.PointF; import android.net.Uri; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; @@ -22,6 +20,8 @@ import java.io.File; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import butterknife.BindView; /** @@ -82,7 +82,7 @@ public void loadImageBitmap(final String url) { if (url.endsWith(IMAGE_GIF)) { sliderIv.setVisibility(View.GONE); mImageView.setVisibility(View.VISIBLE); - Glide.with(this) + Glide.with(getContext()) .asGif() .load(mUrl) // .diskCacheStrategy(DiskCacheStrategy.RESOURCE) @@ -92,7 +92,7 @@ public void loadImageBitmap(final String url) { layoutParams.width = 1080; sliderIv.setLayoutParams(layoutParams); - Glide.with(this).load(mUrl).downloadOnly(new SimpleTarget() { + Glide.with(getContext()).load(mUrl).downloadOnly(new SimpleTarget() { @Override public void onResourceReady(File resource, Transition transition) { //设置图片初始化状态 = 从顶部开始加载 diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageAdapter.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageAdapter.java index cc0bf648..86d6c16f 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageAdapter.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.baisi.image; import android.content.Context; -import android.support.v4.util.ArrayMap; -import android.support.v7.widget.RecyclerView; +import androidx.collection.ArrayMap; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java index 777122f3..b8de73da 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageContract.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.baisi.image; import android.content.Context; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.bean.BuDeJieBean; import com.gank.gankly.mvp.base.LoadMorePresenter; diff --git a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java index 2a894397..e0b210fc 100644 --- a/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/baisi/image/BaiSiImageFragment.java @@ -2,9 +2,9 @@ import android.content.Context; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.widget.LinearLayoutManager; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.LinearLayoutManager; import android.view.View; import com.gank.gankly.R; diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseHolder.java b/app/src/main/java/com/gank/gankly/ui/base/BaseHolder.java index 7cc90e2d..a57cd942 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseHolder.java +++ b/app/src/main/java/com/gank/gankly/ui/base/BaseHolder.java @@ -1,6 +1,6 @@ package com.gank.gankly.ui.base; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; /** diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseSwipeRefreshFragment.java b/app/src/main/java/com/gank/gankly/ui/base/BaseSwipeRefreshFragment.java index 343d4c32..fb689b73 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseSwipeRefreshFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/BaseSwipeRefreshFragment.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.base; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.view.View; diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseThemeFragment.java b/app/src/main/java/com/gank/gankly/ui/base/BaseThemeFragment.java index d6587332..3b09e414 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseThemeFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/BaseThemeFragment.java @@ -2,21 +2,20 @@ import android.content.res.TypedArray; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.widget.SwipeRefreshLayout; import android.view.View; import com.gank.gankly.R; +import com.gank.gankly.butterknife.ButterKnifeFragment; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.rxjava.theme.ThemeEvent; -import com.gank.gankly.butterknife.ButterKnifeFragment; import com.gank.gankly.utils.ListUtils; import com.gank.gankly.widget.LYRelativeLayoutRipple; import java.util.List; -import butterknife.ButterKnife; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import io.reactivex.disposables.Disposable; /** @@ -54,12 +53,12 @@ public void setItemSelectBackground(@NonNull List list) { TypedArray typedArray = getActivity().obtainStyledAttributes(attrs); final int backgroundResource = typedArray.getResourceId(0, 0); - ButterKnife.apply(list, new ButterKnife.Action() { - @Override - public void apply(@NonNull View view, int index) { - view.setBackgroundResource(backgroundResource); - } - }); +// ButterKnife.apply(list, new ButterKnife.Action() { +// @Override +// public void apply(@NonNull View view, int index) { +// view.setBackgroundResource(backgroundResource); +// } +// }); typedArray.recycle(); } } @@ -67,12 +66,12 @@ public void apply(@NonNull View view, int index) { public void setItemBackground(@NonNull List list) { if (!ListUtils.isEmpty(list)) { final int backgroundResource = R.attr.lyItemSelectBackground; - ButterKnife.apply(list, new ButterKnife.Action() { - @Override - public void apply(@NonNull LYRelativeLayoutRipple view, int index) { - view.setCustomBackgroundResource(backgroundResource); - } - }); +// ButterKnife.apply(list, new ButterKnife.Action() { +// @Override +// public void apply(@NonNull LYRelativeLayoutRipple view, int index) { +// view.setCustomBackgroundResource(backgroundResource); +// } +// }); } } diff --git a/app/src/main/java/com/gank/gankly/ui/base/BaseViewHolder.java b/app/src/main/java/com/gank/gankly/ui/base/BaseViewHolder.java index 24c1f4a0..9592ebc1 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/BaseViewHolder.java +++ b/app/src/main/java/com/gank/gankly/ui/base/BaseViewHolder.java @@ -1,6 +1,6 @@ package com.gank.gankly.ui.base; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; public abstract class BaseViewHolder extends RecyclerView.ViewHolder { diff --git a/app/src/main/java/com/gank/gankly/ui/base/DiffAdapter.java b/app/src/main/java/com/gank/gankly/ui/base/DiffAdapter.java index a0c36694..8d1c12d5 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/DiffAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/base/DiffAdapter.java @@ -2,9 +2,9 @@ import android.content.Context; import android.lectcoding.ui.adapter.BaseAdapter; -import android.support.v7.util.DiffUtil; -import android.support.v7.util.ListUpdateCallback; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.DiffUtil; +import androidx.recyclerview.widget.ListUpdateCallback; +import androidx.recyclerview.widget.RecyclerView; import com.gank.gankly.butterknife.ItemModel; import com.gank.gankly.diff.DiffCallback; diff --git a/app/src/main/java/com/gank/gankly/ui/base/ISwipeRefresh.java b/app/src/main/java/com/gank/gankly/ui/base/ISwipeRefresh.java index a2261d02..19bf4a10 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/ISwipeRefresh.java +++ b/app/src/main/java/com/gank/gankly/ui/base/ISwipeRefresh.java @@ -1,6 +1,6 @@ package com.gank.gankly.ui.base; -import android.support.v4.widget.SwipeRefreshLayout; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; /** * Create by LingYan on 2016-09-13 diff --git a/app/src/main/java/com/gank/gankly/ui/base/LazyFragment.java b/app/src/main/java/com/gank/gankly/ui/base/LazyFragment.java index 7fb700c3..dbf565eb 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/LazyFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/LazyFragment.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.base; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.view.View; import com.gank.gankly.butterknife.ButterKnifeFragment; diff --git a/app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java b/app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java index 1f7e151a..465e11fe 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/base/activity/BaseActivity.java @@ -5,18 +5,18 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.design.widget.Snackbar; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentTransaction; -import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.util.Pair; import android.view.View; import android.widget.TextView; import com.gank.gankly.R; +import com.google.android.material.snackbar.Snackbar; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; import butterknife.ButterKnife; import butterknife.Unbinder; @@ -170,7 +170,7 @@ public void showSnackbar(View view, int rexText, int resColor) { // Changing action button text color View sbView = snackbar.getView(); - TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); + TextView textView = (TextView) sbView.findViewById(R.id.snackbar_text); textView.setTextColor(resColor); snackbar.show(); } diff --git a/app/src/main/java/com/gank/gankly/ui/base/adapter/BaseAdapter.java b/app/src/main/java/com/gank/gankly/ui/base/adapter/BaseAdapter.java index 55793dfe..f53182be 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/adapter/BaseAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/base/adapter/BaseAdapter.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.base.adapter; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.view.ViewGroup; import java.util.ArrayList; diff --git a/app/src/main/java/com/gank/gankly/ui/base/adapter/BaseHolder.java b/app/src/main/java/com/gank/gankly/ui/base/adapter/BaseHolder.java index 55b88b81..7e15dfe4 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/adapter/BaseHolder.java +++ b/app/src/main/java/com/gank/gankly/ui/base/adapter/BaseHolder.java @@ -1,6 +1,6 @@ package com.gank.gankly.ui.base.adapter; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; /** diff --git a/app/src/main/java/com/gank/gankly/ui/base/adapter/BaseViewModel.java b/app/src/main/java/com/gank/gankly/ui/base/adapter/BaseViewModel.java index 021f492a..daf752d4 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/adapter/BaseViewModel.java +++ b/app/src/main/java/com/gank/gankly/ui/base/adapter/BaseViewModel.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.base.adapter; import android.content.Context; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gank/gankly/ui/base/adapter/ViewModel.java b/app/src/main/java/com/gank/gankly/ui/base/adapter/ViewModel.java index 2008fda2..030d78de 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/adapter/ViewModel.java +++ b/app/src/main/java/com/gank/gankly/ui/base/adapter/ViewModel.java @@ -1,6 +1,6 @@ package com.gank.gankly.ui.base.adapter; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.ViewGroup; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java index a6eaab1a..8a7c0b4e 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/SupportFragment.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.base.fragment; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.text.TextUtils; import android.view.View; diff --git a/app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java b/app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java index af5223f5..66609bfc 100644 --- a/app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/base/fragment/ThemeFragment.java @@ -2,9 +2,6 @@ import android.content.res.TypedArray; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.widget.SwipeRefreshLayout; import android.view.View; import com.gank.gankly.R; @@ -14,7 +11,9 @@ import java.util.List; -import butterknife.ButterKnife; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; /** * Create by LingYan on 2016-10-21 @@ -46,24 +45,24 @@ public void setItemSelectBackground(@NonNull List list) { TypedArray typedArray = getActivity().obtainStyledAttributes(attrs); final int backgroundResource = typedArray.getResourceId(0, 0); - ButterKnife.apply(list, new ButterKnife.Action() { - @Override - public void apply(@NonNull View view, int index) { - view.setBackgroundResource(backgroundResource); - } - }); +// ButterKnife.apply(list, new ButterKnife.Action() { +// @Override +// public void apply(@NonNull View view, int index) { +// view.setBackgroundResource(backgroundResource); +// } +// }); } } public void setItemBackground(@NonNull List list) { if (!ListUtils.isEmpty(list)) { final int backgroundResource = R.attr.lyItemSelectBackground; - ButterKnife.apply(list, new ButterKnife.Action() { - @Override - public void apply(@NonNull LYRelativeLayoutRipple view, int index) { - view.setCustomBackgroundResource(backgroundResource); - } - }); +// ButterKnife.apply(list, new ButterKnife.Action() { +// @Override +// public void apply(@NonNull LYRelativeLayoutRipple view, int index) { +// view.setCustomBackgroundResource(backgroundResource); +// } +// }); } } } diff --git a/app/src/main/java/com/gank/gankly/ui/collect/CollectAdapter.java b/app/src/main/java/com/gank/gankly/ui/collect/CollectAdapter.java index 19354bc7..22b26e1e 100644 --- a/app/src/main/java/com/gank/gankly/ui/collect/CollectAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/collect/CollectAdapter.java @@ -1,7 +1,6 @@ package com.gank.gankly.ui.collect; import android.content.Context; -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -20,6 +19,7 @@ import java.util.Date; import java.util.List; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java b/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java index 7e591d2e..9969df73 100644 --- a/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/collect/CollectFragment.java @@ -2,16 +2,7 @@ import android.content.Context; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.CoordinatorLayout; -import android.support.design.widget.Snackbar; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.Toolbar; import android.view.View; -import android.view.animation.OvershootInterpolator; import com.gank.gankly.R; import com.gank.gankly.bean.RxCollect; @@ -24,12 +15,19 @@ import com.gank.gankly.widget.LyRecyclerView; import com.gank.gankly.widget.LySwipeRefreshLayout; import com.gank.gankly.widget.MultipleStatusView; +import com.google.android.material.snackbar.Snackbar; import java.util.List; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.Toolbar; +import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import io.reactivex.disposables.Disposable; -import jp.wasabeef.recyclerview.animators.FadeInUpAnimator; /** * 收藏 @@ -138,7 +136,7 @@ public void onClick(int position) { mRecyclerView = mSwipeRefreshLayout.getRecyclerView(); // mRecyclerView.addItemDecoration(new RecycleViewDivider(mActivity, R.drawable.shape_item_divider)); - mRecyclerView.setItemAnimator(new FadeInUpAnimator(new OvershootInterpolator(1f))); +// mRecyclerView.setItemAnimator(new FadeInUpAnimator(new OvershootInterpolator(1f))); mRecyclerView.getItemAnimator().setAddDuration(150); mRecyclerView.getItemAnimator().setRemoveDuration(150); } diff --git a/app/src/main/java/com/gank/gankly/ui/collect/CollectPresenter.java b/app/src/main/java/com/gank/gankly/ui/collect/CollectPresenter.java index 2e335e4b..d635954b 100644 --- a/app/src/main/java/com/gank/gankly/ui/collect/CollectPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/collect/CollectPresenter.java @@ -1,6 +1,6 @@ package com.gank.gankly.ui.collect; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.data.entity.UrlCollect; import com.gank.gankly.mvp.source.LocalDataSource; diff --git a/app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java b/app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java index c279685d..7911198b 100644 --- a/app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CureAdapter.java @@ -2,7 +2,7 @@ import android.lectcoding.ui.adapter.BaseAdapter; import android.ly.business.domain.Gift; -import android.support.annotation.IntDef; +import androidx.annotation.IntDef; import android.view.ViewGroup; import android.widget.TextView; diff --git a/app/src/main/java/com/gank/gankly/ui/cure/CureContract.java b/app/src/main/java/com/gank/gankly/ui/cure/CureContract.java index ec993a39..64a988a6 100644 --- a/app/src/main/java/com/gank/gankly/ui/cure/CureContract.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CureContract.java @@ -2,7 +2,7 @@ import android.content.Context; import android.ly.business.domain.Gift; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.PageView; diff --git a/app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java b/app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java index 8508058c..6b42b25b 100644 --- a/app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CureFragment.java @@ -4,9 +4,9 @@ import android.content.Intent; import android.ly.business.domain.Gift; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.widget.LinearLayoutManager; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.LinearLayoutManager; import android.text.TextUtils; import android.view.View; diff --git a/app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java b/app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java index 12258233..479ae9d7 100644 --- a/app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/cure/CurePresenter.java @@ -40,14 +40,13 @@ class CurePresenter extends CureContract.Presenter { @Override void refreshGirls() { - pageConfig.curPage = 1; - fetchData(getUrl(pageConfig.curPage)); + fetchData(getUrl(pageConfig.getCurPage())); } @Override void appendGirls() { - if (maxPageNumber >= pageConfig.curPage) { - fetchData(getUrl(pageConfig.curPage)); + if (maxPageNumber >= pageConfig.getCurPage()) { + fetchData(getUrl(pageConfig.getCurPage())); } } @@ -92,7 +91,6 @@ private void fetchData(String url) { } else { view.appendSuccess(gifts); } - pageConfig.curPage++; } } }, Logcat::e); diff --git a/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlContract.java b/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlContract.java index ca7bb384..83c89b42 100644 --- a/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlContract.java +++ b/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlContract.java @@ -2,7 +2,7 @@ import android.content.Context; import android.ly.business.domain.Gift; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.ly.business.domain.Girl; import com.gank.gankly.mvp.base.LoadMorePresenter; diff --git a/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlFragment.java b/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlFragment.java index f473bcac..95f58eb5 100644 --- a/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/daily/DailyGirlFragment.java @@ -5,9 +5,9 @@ import android.ly.business.domain.Gift; import android.ly.business.domain.Girl; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.widget.LinearLayoutManager; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.LinearLayoutManager; import android.view.View; import com.gank.gankly.R; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java index 5366df12..30ee08cb 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/DiscoveredFragment.java @@ -3,10 +3,10 @@ import android.content.Context; import android.content.res.Resources; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.TabLayout; -import android.support.v4.view.ViewPager; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import com.google.android.material.tabs.TabLayout; +import androidx.viewpager.widget.ViewPager; import android.util.TypedValue; import android.view.View; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanAdapter.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanAdapter.java index 5f7c1f4a..6f1c9c86 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanAdapter.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.discovered.jiandan; import android.content.Context; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java index 5de01fd0..279394a9 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanContract.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.discovered.jiandan; import android.content.Context; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.bean.JianDanBean; import com.gank.gankly.mvp.base.LoadMorePresenter; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java index b122b469..ccef7657 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/jiandan/JiandanFragment.java @@ -3,10 +3,10 @@ import android.content.Context; import android.content.res.Resources; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredAdapter.java b/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredAdapter.java index b117fc85..65471750 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/more/DiscoveredAdapter.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.discovered.more; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentStatePagerAdapter; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentStatePagerAdapter; import android.view.ViewGroup; import com.gank.gankly.ui.base.LazyFragment; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogAdapter.java b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogAdapter.java index aeb7015b..9f4f6a82 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogAdapter.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.discovered.teamBlog; import android.content.Context; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java index 4346a10b..48ff5001 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/teamBlog/TeamBlogFragment.java @@ -3,10 +3,10 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; import com.gank.gankly.R; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyAdapter.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyAdapter.java index 400eee87..2cc71d97 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyAdapter.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.discovered.technology; import android.content.Context; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyContract.java index 465db05d..76fc0823 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyContract.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.discovered.technology; import android.content.Context; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.bean.JianDanBean; import com.gank.gankly.mvp.base.LoadMorePresenter; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java index fa4aa66f..352846f7 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/technology/TechnologyFragment.java @@ -3,10 +3,10 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; import com.gank.gankly.R; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java index 4df16afa..913ab33f 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoAdapter.java @@ -2,7 +2,7 @@ import android.content.Context; import android.ly.business.domain.Gank; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java index bde45121..6f01a5a9 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoContract.java @@ -2,7 +2,7 @@ import android.content.Context; import android.ly.business.domain.Gank; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; diff --git a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java index 3894ee2b..c257a1c8 100644 --- a/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/discovered/video/VideoFragment.java @@ -4,12 +4,12 @@ import android.content.res.Resources; import android.ly.business.domain.Gank; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.Snackbar; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import com.google.android.material.snackbar.Snackbar; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java index 5eaf6ffe..f551dfcb 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryActivity.java @@ -9,11 +9,11 @@ import android.net.Uri; import android.os.Bundle; import android.os.Environment; -import android.support.annotation.Nullable; -import android.support.design.widget.Snackbar; -import android.support.v4.app.FragmentActivity; -import android.support.v4.view.ViewPager; -import android.support.v7.app.AlertDialog; +import androidx.annotation.Nullable; +import com.google.android.material.snackbar.Snackbar; +import androidx.fragment.app.FragmentActivity; +import androidx.viewpager.widget.ViewPager; +import androidx.appcompat.app.AlertDialog; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java index c94b00c4..3d1f4eee 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryContract.java @@ -2,7 +2,7 @@ import android.content.Context; import android.ly.business.domain.Gank; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java index 87a9a57d..a593bce4 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryFragment.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.gallery; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.view.View; import com.gank.gankly.R; diff --git a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPagerAdapter.java b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPagerAdapter.java index 71b9f2b3..248da97e 100644 --- a/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPagerAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/gallery/GalleryPagerAdapter.java @@ -1,9 +1,9 @@ package com.gank.gankly.ui.gallery; import android.ly.business.domain.Gift; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentStatePagerAdapter; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentStatePagerAdapter; import java.util.List; diff --git a/app/src/main/java/com/gank/gankly/ui/girls/GirlsAdapter.java b/app/src/main/java/com/gank/gankly/ui/girls/GirlsAdapter.java index 9bb52995..2e7a7f25 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/GirlsAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/GirlsAdapter.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.girls; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentStatePagerAdapter; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentStatePagerAdapter; import android.view.ViewGroup; import com.gank.gankly.ui.base.LazyFragment; diff --git a/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java b/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java index b543a76f..00b1430f 100644 --- a/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/girls/GirlsFragment.java @@ -1,10 +1,10 @@ package com.gank.gankly.ui.girls; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.TabLayout; -import android.support.v4.view.ViewPager; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import com.google.android.material.tabs.TabLayout; +import androidx.viewpager.widget.ViewPager; import android.view.View; import com.gank.gankly.R; diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryAdapter.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryAdapter.java index f862341e..0ebf8346 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryAdapter.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.history; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryContract.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryContract.java index 9bd3730c..ac04d0e3 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryContract.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryContract.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.history; import android.content.Context; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.data.entity.ReadHistory; import com.gank.gankly.mvp.base.LoadMorePresenter; diff --git a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java index 3d579dc2..9f60d49f 100644 --- a/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/history/BrowseHistoryFragment.java @@ -3,13 +3,13 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.CoordinatorLayout; -import android.support.design.widget.Snackbar; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.Toolbar; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.coordinatorlayout.widget.CoordinatorLayout; +import com.google.android.material.snackbar.Snackbar; +import androidx.appcompat.app.ActionBar; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.appcompat.widget.Toolbar; import android.view.View; import com.gank.gankly.R; diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java index 1ad85043..a6559230 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosAdapter.java @@ -2,7 +2,7 @@ import android.content.Context; import android.ly.business.domain.Gank; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.view.ViewGroup; import com.bumptech.glide.Glide; diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java b/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java index f15a21ca..22527f98 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosContract.java @@ -2,7 +2,7 @@ import android.content.Context; import android.ly.business.domain.Gank; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.PageView; diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java index 3bca1e06..47831190 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosFragment.java @@ -3,11 +3,11 @@ import android.content.Context; import android.ly.business.domain.Gank; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; import com.gank.gankly.R; diff --git a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java index 90d37855..5a2bda6e 100644 --- a/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/ios/IosPresenter.java @@ -2,14 +2,18 @@ import android.content.Context; import android.ly.business.api.GankServer; +import android.ly.business.domain.Gank; import android.ly.business.domain.PageConfig; -import android.support.annotation.NonNull; +import android.ly.business.domain.PageEntity; +import androidx.annotation.NonNull; -import com.gank.gankly.mvp.subseribe.PageSubscribe; import com.leftcoding.rxbus.RxApiManager; import java.util.concurrent.atomic.AtomicBoolean; +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; + /** * Create by LingYan on 2016-12-20 @@ -26,7 +30,6 @@ public IosPresenter(@NonNull Context context, IosContract.View view) { @Override void refreshIos() { - pageConfig.curPage = 1; fetchData(); } @@ -40,7 +43,7 @@ private void fetchData() { return; } GankServer.with(context) - .ios(pageConfig.curPage, pageConfig.limit) + .ios(pageConfig.getCurPage(), pageConfig.limit) .doOnSubscribe(disposable -> { if (isViewLife()) { view.showProgress(); @@ -51,7 +54,27 @@ private void fetchData() { view.hideProgress(); } }) - .subscribe(new PageSubscribe(requestTag, view, pageConfig)); + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(PageEntity gankPageEntity) { + + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); } @Override diff --git a/app/src/main/java/com/gank/gankly/ui/main/GankPagerAdapter.java b/app/src/main/java/com/gank/gankly/ui/main/GankPagerAdapter.java index a9bf8f40..fa15c298 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/GankPagerAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/main/GankPagerAdapter.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.main; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentStatePagerAdapter; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentStatePagerAdapter; import android.view.ViewGroup; import com.gank.gankly.ui.base.LazyFragment; diff --git a/app/src/main/java/com/gank/gankly/ui/main/IndexContract.java b/app/src/main/java/com/gank/gankly/ui/main/IndexContract.java index 982f9924..25bb1769 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/IndexContract.java +++ b/app/src/main/java/com/gank/gankly/ui/main/IndexContract.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.main; import android.content.Context; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.mvp.base.BasePresenter; import android.lectcoding.ui.base.BaseView; diff --git a/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java b/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java index 9f36de23..612846ef 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/main/IndexFragment.java @@ -4,11 +4,11 @@ import android.content.Context; import android.content.res.Resources; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.TabLayout; -import android.support.v4.view.ViewPager; -import android.support.v7.app.AlertDialog; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import com.google.android.material.tabs.TabLayout; +import androidx.viewpager.widget.ViewPager; +import androidx.appcompat.app.AlertDialog; import android.util.TypedValue; import android.view.View; diff --git a/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabContract.java b/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabContract.java index 2ee0cad0..fa0b5eef 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabContract.java +++ b/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabContract.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.main.tab; import android.content.Context; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.lectcoding.ui.base.BaseView; import com.gank.gankly.mvp.base.BasePresenter; diff --git a/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabFragment.java b/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabFragment.java index 2f56c961..c6e3bcde 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabFragment.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.main.tab; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.view.View; import com.gank.gankly.butterknife.ButterKnifeFragment; diff --git a/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabPresenter.java b/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabPresenter.java index 6fadd4dc..73271372 100644 --- a/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/main/tab/MainTabPresenter.java @@ -2,7 +2,7 @@ import android.content.Context; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; /** * Create by LingYan on 2017-09-28 diff --git a/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java b/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java index 7e3045f9..9db6a5fc 100644 --- a/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/mine/MineFragment.java @@ -5,11 +5,6 @@ import android.content.res.Resources; import android.os.Build; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.widget.NestedScrollView; -import android.support.v7.widget.LinearLayoutCompat; -import android.support.v7.widget.Toolbar; import android.util.TypedValue; import android.view.View; import android.widget.TextView; @@ -26,9 +21,13 @@ import java.util.List; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.LinearLayoutCompat; +import androidx.appcompat.widget.Toolbar; +import androidx.core.widget.NestedScrollView; import butterknife.BindView; import butterknife.BindViews; -import butterknife.ButterKnife; import butterknife.OnClick; import static com.gank.gankly.ui.more.SettingFragment.IS_NIGHT; @@ -101,26 +100,26 @@ private void selectTheme(boolean isChecked) { // setItemBackground(mViewList); - ButterKnife.apply(mSwitchList, new ButterKnife.Action() { - @Override - public void apply(@NonNull LSwitch view, int index) { - view.changeTheme(); - } - }); - - ButterKnife.apply(mTextViewList, new ButterKnife.Action() { - @Override - public void apply(@NonNull TextView view, int index) { - view.setTextColor(getContext().getResources().getColor(itemTextColor)); - } - }); - - ButterKnife.apply(mLinearLayoutCompatList, new ButterKnife.Action() { - @Override - public void apply(@NonNull LinearLayoutCompat view, int index) { - view.setBackgroundResource(itemBackground); - } - }); +// ButterKnife.apply(mSwitchList, new ButterKnife.Action() { +// @Override +// public void apply(@NonNull LSwitch view, int index) { +// view.changeTheme(); +// } +// }); +// +// ButterKnife.apply(mTextViewList, new ButterKnife.Action() { +// @Override +// public void apply(@NonNull TextView view, int index) { +// view.setTextColor(getContext().getResources().getColor(itemTextColor)); +// } +// }); +// +// ButterKnife.apply(mLinearLayoutCompatList, new ButterKnife.Action() { +// @Override +// public void apply(@NonNull LinearLayoutCompat view, int index) { +// view.setBackgroundResource(itemBackground); +// } +// }); } private void selectItemSwitch() { diff --git a/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java b/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java index 0d856a1b..685818d3 100644 --- a/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/more/AboutFragment.java @@ -5,11 +5,11 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.CollapsingToolbarLayout; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.Toolbar; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import com.google.android.material.appbar.CollapsingToolbarLayout; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.Toolbar; import android.view.View; import com.gank.gankly.R; diff --git a/app/src/main/java/com/gank/gankly/ui/more/MoreActivity.java b/app/src/main/java/com/gank/gankly/ui/more/MoreActivity.java index bb9319a8..12d04fc8 100644 --- a/app/src/main/java/com/gank/gankly/ui/more/MoreActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/more/MoreActivity.java @@ -1,8 +1,8 @@ package com.gank.gankly.ui.more; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; import com.gank.gankly.R; import com.gank.gankly.ui.base.activity.BaseActivity; diff --git a/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java b/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java index 5cc012e1..9b875048 100644 --- a/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/more/SettingFragment.java @@ -3,10 +3,10 @@ import android.app.ProgressDialog; import android.content.Context; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.Toolbar; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.Toolbar; import android.view.View; import android.widget.TextView; diff --git a/app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java b/app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java index 03afc6ca..1fe34d48 100644 --- a/app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java +++ b/app/src/main/java/com/gank/gankly/ui/pure/PureAdapter.java @@ -4,7 +4,7 @@ import android.lectcoding.ui.adapter.ObserverAdapter; import android.lectcoding.ui.logcat.Logcat; import android.ly.business.domain.Gift; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; diff --git a/app/src/main/java/com/gank/gankly/ui/pure/PureContract.java b/app/src/main/java/com/gank/gankly/ui/pure/PureContract.java index 2f7f6c45..d1b45a75 100644 --- a/app/src/main/java/com/gank/gankly/ui/pure/PureContract.java +++ b/app/src/main/java/com/gank/gankly/ui/pure/PureContract.java @@ -2,7 +2,7 @@ import android.content.Context; import android.ly.business.domain.Gift; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.mvp.base.LoadMorePresenter; import com.gank.gankly.mvp.base.SupportView; diff --git a/app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java b/app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java index 56933504..930d57d4 100644 --- a/app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/pure/PureFragment.java @@ -4,10 +4,10 @@ import android.content.Intent; import android.ly.business.domain.Gift; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.ActivityOptionsCompat; -import android.support.v7.widget.StaggeredGridLayoutManager; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.app.ActivityOptionsCompat; +import androidx.recyclerview.widget.StaggeredGridLayoutManager; import android.view.View; import com.gank.gankly.R; diff --git a/app/src/main/java/com/gank/gankly/ui/pure/PurePresenter.java b/app/src/main/java/com/gank/gankly/ui/pure/PurePresenter.java index 6d1822b4..fc351d8d 100644 --- a/app/src/main/java/com/gank/gankly/ui/pure/PurePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/pure/PurePresenter.java @@ -46,7 +46,7 @@ public void refreshPure() { @Override public void appendPure() { - int page = pageConfig.curPage; + int page = pageConfig.getNextPage(); if (page < maxPageNumber) { fetchData(page); } @@ -85,7 +85,6 @@ public void onError(Throwable e) { @Override public void onComplete() { - pageConfig.curPage++; } }); } diff --git a/app/src/main/java/com/gank/gankly/ui/splash/SplashActivity.java b/app/src/main/java/com/gank/gankly/ui/splash/SplashActivity.java index 46996205..06458374 100644 --- a/app/src/main/java/com/gank/gankly/ui/splash/SplashActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/splash/SplashActivity.java @@ -5,7 +5,7 @@ import android.animation.ObjectAnimator; import android.content.Intent; import android.os.Bundle; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.view.View; import android.view.Window; import android.view.WindowManager; diff --git a/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java b/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java index 3573c960..b1a6c0c1 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/web/JiandanWebActivity.java @@ -4,10 +4,10 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.design.widget.Snackbar; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.Toolbar; +import androidx.annotation.Nullable; +import com.google.android.material.snackbar.Snackbar; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.Toolbar; import android.text.TextUtils; import android.util.Log; import android.view.KeyEvent; diff --git a/app/src/main/java/com/gank/gankly/ui/web/WebVideoViewActivity.java b/app/src/main/java/com/gank/gankly/ui/web/WebVideoViewActivity.java index 25cf79ae..9340f26e 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/WebVideoViewActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/web/WebVideoViewActivity.java @@ -5,7 +5,7 @@ import android.graphics.PixelFormat; import android.net.Uri; import android.os.Bundle; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java b/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java index 791328a1..a4081d1e 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java +++ b/app/src/main/java/com/gank/gankly/ui/web/normal/WebActivity.java @@ -4,9 +4,9 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.Toolbar; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.Toolbar; import android.text.TextUtils; import android.util.Base64; import android.view.KeyEvent; diff --git a/app/src/main/java/com/gank/gankly/ui/web/normal/WebContract.java b/app/src/main/java/com/gank/gankly/ui/web/normal/WebContract.java index 4ae220ee..054caf56 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/normal/WebContract.java +++ b/app/src/main/java/com/gank/gankly/ui/web/normal/WebContract.java @@ -1,7 +1,7 @@ package com.gank.gankly.ui.web.normal; import android.lectcoding.ui.base.BaseView; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.data.entity.ReadHistory; import com.gank.gankly.data.entity.UrlCollect; diff --git a/app/src/main/java/com/gank/gankly/ui/web/normal/WebPresenter.java b/app/src/main/java/com/gank/gankly/ui/web/normal/WebPresenter.java index 5e4b5bbb..07769f14 100644 --- a/app/src/main/java/com/gank/gankly/ui/web/normal/WebPresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/web/normal/WebPresenter.java @@ -1,6 +1,6 @@ package com.gank.gankly.ui.web.normal; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.rxjava.RxBus_; import com.gank.gankly.bean.RxCollect; diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/ImageViewModel.java b/app/src/main/java/com/gank/gankly/ui/welfare/ImageViewModel.java index f6347a5d..38f37eaf 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/ImageViewModel.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/ImageViewModel.java @@ -3,7 +3,7 @@ import android.content.Context; import android.graphics.Bitmap; import android.ly.business.domain.Gank; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.util.ArrayMap; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java index 6cfd0f33..c03d156d 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareContract.java @@ -3,7 +3,7 @@ import android.content.Context; import android.lectcoding.ui.base.BaseView; import android.ly.business.domain.Gank; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.gank.gankly.mvp.base.LoadMorePresenter; diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java index c112694a..e2e71188 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfareFragment.java @@ -3,12 +3,12 @@ import android.content.Intent; import android.ly.business.domain.Gank; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.ActivityOptionsCompat; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.StaggeredGridLayoutManager; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.app.ActivityOptionsCompat; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.StaggeredGridLayoutManager; import android.view.View; import com.gank.gankly.R; diff --git a/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java b/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java index c2cab1b4..13f0d3fc 100644 --- a/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java +++ b/app/src/main/java/com/gank/gankly/ui/welfare/WelfarePresenter.java @@ -6,7 +6,8 @@ import android.ly.business.domain.Gank; import android.ly.business.domain.PageEntity; -import com.leftcoding.network.base.Server; +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; /** * Create by LingYan on 2016-12-23 @@ -23,28 +24,38 @@ public class WelfarePresenter extends WelfareContract.Presenter { public void loadWelfare(final int page) { showProgress(); GankServer.with(context) - .images(requestTag, page, DEFAULT_LIMIT, new Server.ConsumerCall>() { + .images(page, DEFAULT_LIMIT) + .subscribe(new Observer>() { @Override - public void onNext(PageEntity pageEntity) throws Exception { + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(PageEntity pageEntity) { hideProgress(); if (pageEntity != null) { view.loadWelfareSuccess(page, pageEntity.results); return; } - if (view != null) { view.loadWelfareFailure("获取数据失败"); } } @Override - public void accept(Throwable throwable) { + public void onError(Throwable e) { hideProgress(); - Logcat.e(throwable); + Logcat.e(e); if (view != null) { view.loadWelfareFailure("获取数据失败"); } } + + @Override + public void onComplete() { + + } }); } diff --git a/app/src/main/java/com/gank/gankly/utils/StyleUtils.java b/app/src/main/java/com/gank/gankly/utils/StyleUtils.java index d76497ce..bd28a4d9 100644 --- a/app/src/main/java/com/gank/gankly/utils/StyleUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/StyleUtils.java @@ -1,9 +1,8 @@ package com.gank.gankly.utils; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import androidx.recyclerview.widget.RecyclerView; -import com.gank.gankly.AppConfig; import com.gank.gankly.R; import com.socks.library.KLog; diff --git a/app/src/main/java/com/gank/gankly/utils/gilde/GlideImageLoaderStrategy.java b/app/src/main/java/com/gank/gankly/utils/gilde/GlideImageLoaderStrategy.java index 92f07524..2fcedfba 100644 --- a/app/src/main/java/com/gank/gankly/utils/gilde/GlideImageLoaderStrategy.java +++ b/app/src/main/java/com/gank/gankly/utils/gilde/GlideImageLoaderStrategy.java @@ -3,7 +3,7 @@ import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.widget.ImageView; import com.bumptech.glide.Glide; diff --git a/app/src/main/java/com/gank/gankly/utils/gilde/NetworkDisablingLoader.java b/app/src/main/java/com/gank/gankly/utils/gilde/NetworkDisablingLoader.java index 4e8aa5c9..d0509752 100644 --- a/app/src/main/java/com/gank/gankly/utils/gilde/NetworkDisablingLoader.java +++ b/app/src/main/java/com/gank/gankly/utils/gilde/NetworkDisablingLoader.java @@ -1,6 +1,6 @@ package com.gank.gankly.utils.gilde; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.bumptech.glide.load.Options; import com.bumptech.glide.load.model.GlideUrl; diff --git a/app/src/main/java/com/gank/gankly/utils/gilde/WifiOnlyLoader.java b/app/src/main/java/com/gank/gankly/utils/gilde/WifiOnlyLoader.java index acc614a7..147423f1 100644 --- a/app/src/main/java/com/gank/gankly/utils/gilde/WifiOnlyLoader.java +++ b/app/src/main/java/com/gank/gankly/utils/gilde/WifiOnlyLoader.java @@ -2,7 +2,7 @@ import android.content.Context; import android.content.SharedPreferences; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.bumptech.glide.load.Options; import com.bumptech.glide.load.model.GlideUrl; diff --git a/app/src/main/java/com/gank/gankly/utils/permission/PermissionUtils.java b/app/src/main/java/com/gank/gankly/utils/permission/PermissionUtils.java index d99b1551..ba8ba079 100644 --- a/app/src/main/java/com/gank/gankly/utils/permission/PermissionUtils.java +++ b/app/src/main/java/com/gank/gankly/utils/permission/PermissionUtils.java @@ -8,9 +8,9 @@ import android.content.pm.PackageManager; import android.net.Uri; import android.provider.Settings; -import android.support.annotation.NonNull; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; import com.socks.library.KLog; diff --git a/app/src/main/java/com/gank/gankly/utils/theme/RecyclerViewColor.java b/app/src/main/java/com/gank/gankly/utils/theme/RecyclerViewColor.java index f3cd1f91..9672c4c6 100644 --- a/app/src/main/java/com/gank/gankly/utils/theme/RecyclerViewColor.java +++ b/app/src/main/java/com/gank/gankly/utils/theme/RecyclerViewColor.java @@ -1,8 +1,8 @@ package com.gank.gankly.utils.theme; import android.content.res.Resources; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gank/gankly/utils/theme/ThemeColor.java b/app/src/main/java/com/gank/gankly/utils/theme/ThemeColor.java index 0fa83df5..f7f9226d 100644 --- a/app/src/main/java/com/gank/gankly/utils/theme/ThemeColor.java +++ b/app/src/main/java/com/gank/gankly/utils/theme/ThemeColor.java @@ -2,9 +2,9 @@ import android.app.Activity; import android.content.res.Resources; -import android.support.annotation.NonNull; -import android.support.v4.app.Fragment; -import android.support.v4.widget.SwipeRefreshLayout; +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import android.util.TypedValue; import android.view.View; import android.widget.TextView; diff --git a/app/src/main/java/com/gank/gankly/widget/ByeBurgerBehavior.java b/app/src/main/java/com/gank/gankly/widget/ByeBurgerBehavior.java index ea427fcd..2767deea 100644 --- a/app/src/main/java/com/gank/gankly/widget/ByeBurgerBehavior.java +++ b/app/src/main/java/com/gank/gankly/widget/ByeBurgerBehavior.java @@ -1,8 +1,8 @@ package com.gank.gankly.widget; import android.content.Context; -import android.support.design.widget.CoordinatorLayout; -import android.support.v4.view.ViewCompat; +import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.core.view.ViewCompat; import android.util.AttributeSet; import android.view.View; import android.view.ViewConfiguration; diff --git a/app/src/main/java/com/gank/gankly/widget/ByeBurgerBottomBehavior.java b/app/src/main/java/com/gank/gankly/widget/ByeBurgerBottomBehavior.java index b30489b8..7ac80150 100644 --- a/app/src/main/java/com/gank/gankly/widget/ByeBurgerBottomBehavior.java +++ b/app/src/main/java/com/gank/gankly/widget/ByeBurgerBottomBehavior.java @@ -1,7 +1,7 @@ package com.gank.gankly.widget; import android.content.Context; -import android.support.design.widget.CoordinatorLayout; +import androidx.coordinatorlayout.widget.CoordinatorLayout; import android.util.AttributeSet; import android.view.View; diff --git a/app/src/main/java/com/gank/gankly/widget/DeleteDialog.java b/app/src/main/java/com/gank/gankly/widget/DeleteDialog.java index 68642cf5..de6bebc7 100644 --- a/app/src/main/java/com/gank/gankly/widget/DeleteDialog.java +++ b/app/src/main/java/com/gank/gankly/widget/DeleteDialog.java @@ -3,10 +3,10 @@ import android.app.Dialog; import android.content.Context; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; -import android.support.v7.app.AlertDialog; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; +import androidx.appcompat.app.AlertDialog; import com.gank.gankly.R; diff --git a/app/src/main/java/com/gank/gankly/widget/DepthPageTransformer.java b/app/src/main/java/com/gank/gankly/widget/DepthPageTransformer.java index e61f1846..e51a6297 100644 --- a/app/src/main/java/com/gank/gankly/widget/DepthPageTransformer.java +++ b/app/src/main/java/com/gank/gankly/widget/DepthPageTransformer.java @@ -1,6 +1,6 @@ package com.gank.gankly.widget; -import android.support.v4.view.ViewPager; +import androidx.viewpager.widget.ViewPager; import android.view.View; /** diff --git a/app/src/main/java/com/gank/gankly/widget/HorizontalLoading.java b/app/src/main/java/com/gank/gankly/widget/HorizontalLoading.java index b2a2f28a..dacf3d79 100644 --- a/app/src/main/java/com/gank/gankly/widget/HorizontalLoading.java +++ b/app/src/main/java/com/gank/gankly/widget/HorizontalLoading.java @@ -6,7 +6,7 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.util.AttributeSet; import android.view.View; import android.view.animation.LinearInterpolator; diff --git a/app/src/main/java/com/gank/gankly/widget/ImageDefaultLoading.java b/app/src/main/java/com/gank/gankly/widget/ImageDefaultLoading.java index 7b3a24c8..bd0f15b7 100644 --- a/app/src/main/java/com/gank/gankly/widget/ImageDefaultLoading.java +++ b/app/src/main/java/com/gank/gankly/widget/ImageDefaultLoading.java @@ -1,7 +1,7 @@ package com.gank.gankly.widget; import android.content.Context; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; diff --git a/app/src/main/java/com/gank/gankly/widget/ImageDefaultView.java b/app/src/main/java/com/gank/gankly/widget/ImageDefaultView.java index 68c72bfa..690a7420 100644 --- a/app/src/main/java/com/gank/gankly/widget/ImageDefaultView.java +++ b/app/src/main/java/com/gank/gankly/widget/ImageDefaultView.java @@ -1,7 +1,7 @@ package com.gank.gankly.widget; import android.content.Context; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; diff --git a/app/src/main/java/com/gank/gankly/widget/LSwitch.java b/app/src/main/java/com/gank/gankly/widget/LSwitch.java index 2e10d513..aebbc64d 100644 --- a/app/src/main/java/com/gank/gankly/widget/LSwitch.java +++ b/app/src/main/java/com/gank/gankly/widget/LSwitch.java @@ -3,9 +3,9 @@ import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Color; -import android.support.v4.content.ContextCompat; -import android.support.v4.graphics.drawable.DrawableCompat; -import android.support.v7.widget.SwitchCompat; +import androidx.core.content.ContextCompat; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.appcompat.widget.SwitchCompat; import android.util.AttributeSet; import com.gank.gankly.R; diff --git a/app/src/main/java/com/gank/gankly/widget/LyRecyclerView.java b/app/src/main/java/com/gank/gankly/widget/LyRecyclerView.java index 47cc0d45..da873469 100644 --- a/app/src/main/java/com/gank/gankly/widget/LyRecyclerView.java +++ b/app/src/main/java/com/gank/gankly/widget/LyRecyclerView.java @@ -2,9 +2,9 @@ import android.content.Context; import android.graphics.Rect; -import android.support.annotation.Nullable; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; diff --git a/app/src/main/java/com/gank/gankly/widget/LySwipeRefreshLayout.java b/app/src/main/java/com/gank/gankly/widget/LySwipeRefreshLayout.java index 466569c5..b96f08b5 100644 --- a/app/src/main/java/com/gank/gankly/widget/LySwipeRefreshLayout.java +++ b/app/src/main/java/com/gank/gankly/widget/LySwipeRefreshLayout.java @@ -2,11 +2,11 @@ import android.content.Context; import android.content.res.TypedArray; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.StaggeredGridLayoutManager; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.StaggeredGridLayoutManager; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; diff --git a/app/src/main/java/com/gank/gankly/widget/MyDecoration.java b/app/src/main/java/com/gank/gankly/widget/MyDecoration.java index 9959f0b0..add188a3 100644 --- a/app/src/main/java/com/gank/gankly/widget/MyDecoration.java +++ b/app/src/main/java/com/gank/gankly/widget/MyDecoration.java @@ -7,8 +7,8 @@ import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.Drawable; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.util.Log; import android.view.View; diff --git a/app/src/main/java/com/gank/gankly/widget/ProgressImageView.java b/app/src/main/java/com/gank/gankly/widget/ProgressImageView.java index 89ec2c3b..a107cbd4 100644 --- a/app/src/main/java/com/gank/gankly/widget/ProgressImageView.java +++ b/app/src/main/java/com/gank/gankly/widget/ProgressImageView.java @@ -4,7 +4,6 @@ import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; -import android.support.v4.app.Fragment; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; @@ -22,6 +21,8 @@ import com.gank.gankly.R; import com.gank.gankly.config.glide.ProgressTarget; +import androidx.fragment.app.Fragment; + /** * Glide image with progress * Create by LingYan on 2016-5-19 @@ -107,7 +108,7 @@ public void load(String url, final Fragment fragment) { .addHeader("referer", "http://www.mzitu.com/mm/") .build()); - Glide.with(fragment) + Glide.with(fragment.getContext()) .asBitmap() .apply(new RequestOptions() .diskCacheStrategy(DiskCacheStrategy.RESOURCE) @@ -118,7 +119,7 @@ public void load(String url, final Fragment fragment) { .load(glideUrl) .into(target); } else { - Glide.with(fragment) + Glide.with(fragment.getContext()) .asBitmap() .apply(new RequestOptions() .diskCacheStrategy(DiskCacheStrategy.RESOURCE) diff --git a/app/src/main/java/com/gank/gankly/widget/RatioImageView.java b/app/src/main/java/com/gank/gankly/widget/RatioImageView.java index cfde0b6b..20650d5d 100644 --- a/app/src/main/java/com/gank/gankly/widget/RatioImageView.java +++ b/app/src/main/java/com/gank/gankly/widget/RatioImageView.java @@ -44,7 +44,7 @@ * pick from drakeet https://github.com/drakeet * Create by LingYan on 2016-4-19 */ -public class RatioImageView extends android.support.v7.widget.AppCompatImageView { +public class RatioImageView extends androidx.appcompat.widget.AppCompatImageView { private int originalWidth; private int originalHeight; diff --git a/app/src/main/java/com/gank/gankly/widget/RecycleViewDivider.java b/app/src/main/java/com/gank/gankly/widget/RecycleViewDivider.java index 0a086f76..89a77dba 100644 --- a/app/src/main/java/com/gank/gankly/widget/RecycleViewDivider.java +++ b/app/src/main/java/com/gank/gankly/widget/RecycleViewDivider.java @@ -4,8 +4,8 @@ import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.drawable.Drawable; -import android.support.v4.content.ContextCompat; -import android.support.v7.widget.RecyclerView; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; /** diff --git a/app/src/main/java/com/gank/gankly/widget/SpaceItemDecoration.java b/app/src/main/java/com/gank/gankly/widget/SpaceItemDecoration.java index 638308b4..12112e74 100644 --- a/app/src/main/java/com/gank/gankly/widget/SpaceItemDecoration.java +++ b/app/src/main/java/com/gank/gankly/widget/SpaceItemDecoration.java @@ -1,7 +1,7 @@ package com.gank.gankly.widget; import android.graphics.Rect; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; public class SpaceItemDecoration extends RecyclerView.ItemDecoration { diff --git a/app/src/main/java/com/gank/gankly/widget/TouchImageView.java b/app/src/main/java/com/gank/gankly/widget/TouchImageView.java index f4737aba..014b49af 100644 --- a/app/src/main/java/com/gank/gankly/widget/TouchImageView.java +++ b/app/src/main/java/com/gank/gankly/widget/TouchImageView.java @@ -15,7 +15,7 @@ import android.os.Build.VERSION_CODES; import android.os.Bundle; import android.os.Parcelable; -import android.support.v7.widget.AppCompatImageView; +import androidx.appcompat.widget.AppCompatImageView; import android.util.AttributeSet; import android.util.Log; import android.view.GestureDetector; diff --git a/app/src/main/java/com/gank/gankly/widget/UpdateVersionDialog.java b/app/src/main/java/com/gank/gankly/widget/UpdateVersionDialog.java index 324e6c17..2d93e9a2 100644 --- a/app/src/main/java/com/gank/gankly/widget/UpdateVersionDialog.java +++ b/app/src/main/java/com/gank/gankly/widget/UpdateVersionDialog.java @@ -4,8 +4,8 @@ import android.app.Dialog; import android.content.Context; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.DialogFragment; +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; diff --git a/app/src/main/java/com/gank/gankly/widget/recyclerview/OnFlexibleScrollListener.java b/app/src/main/java/com/gank/gankly/widget/recyclerview/OnFlexibleScrollListener.java index ae6ccce5..4a9da888 100644 --- a/app/src/main/java/com/gank/gankly/widget/recyclerview/OnFlexibleScrollListener.java +++ b/app/src/main/java/com/gank/gankly/widget/recyclerview/OnFlexibleScrollListener.java @@ -1,9 +1,9 @@ package com.gank.gankly.widget.recyclerview; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.StaggeredGridLayoutManager; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.StaggeredGridLayoutManager; public class OnFlexibleScrollListener extends RecyclerView.OnScrollListener { diff --git a/app/src/main/java/com/gank/gankly/widget/transforms/ABaseTransformer.java b/app/src/main/java/com/gank/gankly/widget/transforms/ABaseTransformer.java index fa1377e4..e6328ecf 100644 --- a/app/src/main/java/com/gank/gankly/widget/transforms/ABaseTransformer.java +++ b/app/src/main/java/com/gank/gankly/widget/transforms/ABaseTransformer.java @@ -16,7 +16,7 @@ package com.gank.gankly.widget.transforms; -import android.support.v4.view.ViewPager.PageTransformer; +import androidx.viewpager.widget.ViewPager.PageTransformer; import android.view.View; public abstract class ABaseTransformer implements PageTransformer { diff --git a/app/src/main/res/layout/activity_browse_picture.xml b/app/src/main/res/layout/activity_browse_picture.xml index 02f7aae9..82ed74e7 100644 --- a/app/src/main/res/layout/activity_browse_picture.xml +++ b/app/src/main/res/layout/activity_browse_picture.xml @@ -3,7 +3,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_jiandan.xml b/app/src/main/res/layout/activity_jiandan.xml index 02364505..2166e2d5 100644 --- a/app/src/main/res/layout/activity_jiandan.xml +++ b/app/src/main/res/layout/activity_jiandan.xml @@ -5,7 +5,7 @@ android:layout_height="match_parent" android:orientation="vertical"> - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index e00246d2..124955ea 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,5 @@ - - + diff --git a/app/src/main/res/layout/activity_web.xml b/app/src/main/res/layout/activity_web.xml index e88916ac..691524ab 100644 --- a/app/src/main/res/layout/activity_web.xml +++ b/app/src/main/res/layout/activity_web.xml @@ -1,17 +1,17 @@ - - - - + - + diff --git a/app/src/main/res/layout/adapter_gift.xml b/app/src/main/res/layout/adapter_gift.xml index f15e545d..1bc5c736 100644 --- a/app/src/main/res/layout/adapter_gift.xml +++ b/app/src/main/res/layout/adapter_gift.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/adapter_ios.xml b/app/src/main/res/layout/adapter_ios.xml index c208a42b..e0abd09e 100644 --- a/app/src/main/res/layout/adapter_ios.xml +++ b/app/src/main/res/layout/adapter_ios.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/adapter_technology.xml b/app/src/main/res/layout/adapter_technology.xml index a2692f28..e7bf43a1 100644 --- a/app/src/main/res/layout/adapter_technology.xml +++ b/app/src/main/res/layout/adapter_technology.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/adapter_video.xml b/app/src/main/res/layout/adapter_video.xml index 1f9a6b69..849f066c 100644 --- a/app/src/main/res/layout/adapter_video.xml +++ b/app/src/main/res/layout/adapter_video.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml index 0ad88624..a126699d 100644 --- a/app/src/main/res/layout/fragment_about.xml +++ b/app/src/main/res/layout/fragment_about.xml @@ -1,5 +1,5 @@ - - - - - - + + - @@ -109,5 +109,5 @@ app:textTitle="@string/about_contact"/> - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_baisi_preview_video.xml b/app/src/main/res/layout/fragment_baisi_preview_video.xml index a5e4b840..edbbe2af 100644 --- a/app/src/main/res/layout/fragment_baisi_preview_video.xml +++ b/app/src/main/res/layout/fragment_baisi_preview_video.xml @@ -6,12 +6,12 @@ android:background="@color/black" android:clickable="true"> - - + - - - - + - + diff --git a/app/src/main/res/layout/fragment_discovered.xml b/app/src/main/res/layout/fragment_discovered.xml index 42579bf4..a379812f 100644 --- a/app/src/main/res/layout/fragment_discovered.xml +++ b/app/src/main/res/layout/fragment_discovered.xml @@ -7,7 +7,7 @@ android:layout_height="match_parent" android:orientation="vertical"> - @@ -19,14 +19,14 @@ - - + - - @@ -19,14 +19,14 @@ - - + - - - - + - - - - - - + - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml index c2a62182..5e7161c3 100644 --- a/app/src/main/res/layout/fragment_mine.xml +++ b/app/src/main/res/layout/fragment_mine.xml @@ -1,26 +1,26 @@ - - - - + - - - - + - - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_setting.xml b/app/src/main/res/layout/fragment_setting.xml index bf723017..49e145c3 100644 --- a/app/src/main/res/layout/fragment_setting.xml +++ b/app/src/main/res/layout/fragment_setting.xml @@ -1,5 +1,5 @@ - @@ -11,7 +11,7 @@ android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> - - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_welfare.xml b/app/src/main/res/layout/fragment_welfare.xml index 21ead8f7..809944bc 100644 --- a/app/src/main/res/layout/fragment_welfare.xml +++ b/app/src/main/res/layout/fragment_welfare.xml @@ -1,5 +1,5 @@ - @@ -8,17 +8,17 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_bar.xml b/app/src/main/res/layout/layout_bar.xml index bca3a056..b7560c5f 100644 --- a/app/src/main/res/layout/layout_bar.xml +++ b/app/src/main/res/layout/layout_bar.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_default_refresh.xml b/app/src/main/res/layout/layout_default_refresh.xml index b0422731..9ce3451b 100644 --- a/app/src/main/res/layout/layout_default_refresh.xml +++ b/app/src/main/res/layout/layout_default_refresh.xml @@ -7,7 +7,7 @@ android:minWidth="300dip" android:orientation="vertical"> - apply(Response> pageEntityResponse) thr }); } - public Observable>> allGoods(int limit, int page) { - return api.allGoods(limit, page); - } - - public void images(String tag, final int page, final int limit, ConsumerCall> call) { - Observable> observable = api.images(page, limit) + public Observable> images(final int page, final int limit) { + return api.images(page, limit) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .map(new Function>, PageEntity>() { @@ -87,11 +91,5 @@ public PageEntity apply(Response> response) throws Except return response.body(); } }); - - addExec(tag, observable, call); - } - - public Observable>> videos(int limit, int page) { - return api.videos(limit, page); } } diff --git a/android-coding-business/src/main/java/android/ly/business/api/GankServerHelper.java b/support-coding-business/src/main/java/android/ly/business/api/GankServerHelper.java similarity index 100% rename from android-coding-business/src/main/java/android/ly/business/api/GankServerHelper.java rename to support-coding-business/src/main/java/android/ly/business/api/GankServerHelper.java diff --git a/android-coding-business/src/main/java/android/ly/business/domain/BaseEntity.java b/support-coding-business/src/main/java/android/ly/business/domain/BaseEntity.java similarity index 90% rename from android-coding-business/src/main/java/android/ly/business/domain/BaseEntity.java rename to support-coding-business/src/main/java/android/ly/business/domain/BaseEntity.java index 0d094df9..5fd82002 100644 --- a/android-coding-business/src/main/java/android/ly/business/domain/BaseEntity.java +++ b/support-coding-business/src/main/java/android/ly/business/domain/BaseEntity.java @@ -6,7 +6,7 @@ public class BaseEntity implements Serializable { /** * 错误码 */ - public boolean error; + public boolean code; /** * 提示语 diff --git a/android-coding-business/src/main/java/android/ly/business/domain/ContentEqual.java b/support-coding-business/src/main/java/android/ly/business/domain/ContentEqual.java similarity index 100% rename from android-coding-business/src/main/java/android/ly/business/domain/ContentEqual.java rename to support-coding-business/src/main/java/android/ly/business/domain/ContentEqual.java diff --git a/android-coding-business/src/main/java/android/ly/business/domain/Gank.java b/support-coding-business/src/main/java/android/ly/business/domain/Gank.java similarity index 100% rename from android-coding-business/src/main/java/android/ly/business/domain/Gank.java rename to support-coding-business/src/main/java/android/ly/business/domain/Gank.java diff --git a/android-coding-business/src/main/java/android/ly/business/domain/Gift.java b/support-coding-business/src/main/java/android/ly/business/domain/Gift.java similarity index 100% rename from android-coding-business/src/main/java/android/ly/business/domain/Gift.java rename to support-coding-business/src/main/java/android/ly/business/domain/Gift.java diff --git a/android-coding-business/src/main/java/android/ly/business/domain/Girl.java b/support-coding-business/src/main/java/android/ly/business/domain/Girl.java similarity index 100% rename from android-coding-business/src/main/java/android/ly/business/domain/Girl.java rename to support-coding-business/src/main/java/android/ly/business/domain/Girl.java diff --git a/android-coding-business/src/main/java/android/ly/business/domain/ListEntity.java b/support-coding-business/src/main/java/android/ly/business/domain/ListEntity.java similarity index 100% rename from android-coding-business/src/main/java/android/ly/business/domain/ListEntity.java rename to support-coding-business/src/main/java/android/ly/business/domain/ListEntity.java diff --git a/android-coding-business/src/main/java/android/ly/business/domain/PageConfig.java b/support-coding-business/src/main/java/android/ly/business/domain/PageConfig.java similarity index 67% rename from android-coding-business/src/main/java/android/ly/business/domain/PageConfig.java rename to support-coding-business/src/main/java/android/ly/business/domain/PageConfig.java index aebbab03..3af7b32a 100644 --- a/android-coding-business/src/main/java/android/ly/business/domain/PageConfig.java +++ b/support-coding-business/src/main/java/android/ly/business/domain/PageConfig.java @@ -18,7 +18,7 @@ public class PageConfig { /** * 当前请求页数 */ - public int curPage = 1; + private int curPage = 1; public PageConfig() { @@ -33,4 +33,20 @@ public PageConfig(int limit, int initPage, int curPage) { public boolean isFirst() { return initPage == curPage; } + + public int getNextPage() { + return curPage + 1; + } + + public int getCurPage() { + return curPage; + } + + public int getInitPage() { + return initPage; + } + + public static int starPage() { + return 1; + } } diff --git a/android-coding-business/src/main/java/android/ly/business/domain/PageEntity.java b/support-coding-business/src/main/java/android/ly/business/domain/PageEntity.java similarity index 100% rename from android-coding-business/src/main/java/android/ly/business/domain/PageEntity.java rename to support-coding-business/src/main/java/android/ly/business/domain/PageEntity.java diff --git a/android-coding-business/src/main/res/values/strings.xml b/support-coding-business/src/main/res/values/strings.xml similarity index 100% rename from android-coding-business/src/main/res/values/strings.xml rename to support-coding-business/src/main/res/values/strings.xml diff --git a/android-coding-jsoup/.gitignore b/support-coding-jsoup/.gitignore similarity index 100% rename from android-coding-jsoup/.gitignore rename to support-coding-jsoup/.gitignore diff --git a/android-coding-jsoup/build.gradle b/support-coding-jsoup/build.gradle similarity index 92% rename from android-coding-jsoup/build.gradle rename to support-coding-jsoup/build.gradle index 62259bcd..2b566aa5 100644 --- a/android-coding-jsoup/build.gradle +++ b/support-coding-jsoup/build.gradle @@ -23,5 +23,5 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') api "org.jsoup:jsoup:${jsoup}" - implementation project(':android-coding-rxbus') + implementation project(':support-coding-rxbus') } diff --git a/android-coding-jsoup/proguard-rules.pro b/support-coding-jsoup/proguard-rules.pro similarity index 100% rename from android-coding-jsoup/proguard-rules.pro rename to support-coding-jsoup/proguard-rules.pro diff --git a/android-coding-jsoup/src/main/AndroidManifest.xml b/support-coding-jsoup/src/main/AndroidManifest.xml similarity index 100% rename from android-coding-jsoup/src/main/AndroidManifest.xml rename to support-coding-jsoup/src/main/AndroidManifest.xml diff --git a/android-coding-jsoup/src/main/java/android/ly/jsoup/JsoupMate.java b/support-coding-jsoup/src/main/java/android/ly/jsoup/JsoupMate.java similarity index 100% rename from android-coding-jsoup/src/main/java/android/ly/jsoup/JsoupMate.java rename to support-coding-jsoup/src/main/java/android/ly/jsoup/JsoupMate.java diff --git a/android-coding-jsoup/src/main/java/android/ly/jsoup/JsoupServer.java b/support-coding-jsoup/src/main/java/android/ly/jsoup/JsoupServer.java similarity index 100% rename from android-coding-jsoup/src/main/java/android/ly/jsoup/JsoupServer.java rename to support-coding-jsoup/src/main/java/android/ly/jsoup/JsoupServer.java diff --git a/android-coding-jsoup/src/main/java/android/ly/jsoup/Mate.java b/support-coding-jsoup/src/main/java/android/ly/jsoup/Mate.java similarity index 100% rename from android-coding-jsoup/src/main/java/android/ly/jsoup/Mate.java rename to support-coding-jsoup/src/main/java/android/ly/jsoup/Mate.java diff --git a/android-coding-jsoup/src/main/java/android/ly/jsoup/RxJsoupMate.java b/support-coding-jsoup/src/main/java/android/ly/jsoup/RxJsoupMate.java similarity index 100% rename from android-coding-jsoup/src/main/java/android/ly/jsoup/RxJsoupMate.java rename to support-coding-jsoup/src/main/java/android/ly/jsoup/RxJsoupMate.java diff --git a/android-coding-jsoup/src/main/res/values/strings.xml b/support-coding-jsoup/src/main/res/values/strings.xml similarity index 100% rename from android-coding-jsoup/src/main/res/values/strings.xml rename to support-coding-jsoup/src/main/res/values/strings.xml diff --git a/android-coding-network/.gitignore b/support-coding-network/.gitignore similarity index 100% rename from android-coding-network/.gitignore rename to support-coding-network/.gitignore diff --git a/android-coding-network/build.gradle b/support-coding-network/build.gradle similarity index 96% rename from android-coding-network/build.gradle rename to support-coding-network/build.gradle index 541597ff..e9d04571 100644 --- a/android-coding-network/build.gradle +++ b/support-coding-network/build.gradle @@ -35,5 +35,5 @@ dependencies { api "com.squareup.retrofit2:converter-gson:${converterGson}" api "com.squareup.retrofit2:adapter-rxjava2:${adapterRxjava2}" // RxJava2 - api project(':android-coding-rxbus') + api project(':support-coding-rxbus') } diff --git a/android-coding-network/proguard-rules.pro b/support-coding-network/proguard-rules.pro similarity index 100% rename from android-coding-network/proguard-rules.pro rename to support-coding-network/proguard-rules.pro diff --git a/android-coding-network/src/main/AndroidManifest.xml b/support-coding-network/src/main/AndroidManifest.xml similarity index 100% rename from android-coding-network/src/main/AndroidManifest.xml rename to support-coding-network/src/main/AndroidManifest.xml diff --git a/android-coding-network/src/main/java/com/leftcoding/network/base/NetworkControl.java b/support-coding-network/src/main/java/com/leftcoding/network/base/NetworkControl.java similarity index 100% rename from android-coding-network/src/main/java/com/leftcoding/network/base/NetworkControl.java rename to support-coding-network/src/main/java/com/leftcoding/network/base/NetworkControl.java diff --git a/support-coding-network/src/main/java/com/leftcoding/network/base/Server.java b/support-coding-network/src/main/java/com/leftcoding/network/base/Server.java new file mode 100644 index 00000000..96b12a4d --- /dev/null +++ b/support-coding-network/src/main/java/com/leftcoding/network/base/Server.java @@ -0,0 +1,16 @@ +package com.leftcoding.network.base; + +import android.content.Context; + +/** + * Create by LingYan on 2018-09-21 + */ + +public abstract class Server extends ServerDisposable { + + protected Server(Context context) { + super(context); + } + + public abstract void init(Context context); +} diff --git a/android-coding-network/src/main/java/com/leftcoding/network/base/ServerDisposable.java b/support-coding-network/src/main/java/com/leftcoding/network/base/ServerDisposable.java similarity index 100% rename from android-coding-network/src/main/java/com/leftcoding/network/base/ServerDisposable.java rename to support-coding-network/src/main/java/com/leftcoding/network/base/ServerDisposable.java diff --git a/android-coding-network/src/main/java/com/leftcoding/network/base/ServerHelper.java b/support-coding-network/src/main/java/com/leftcoding/network/base/ServerHelper.java similarity index 100% rename from android-coding-network/src/main/java/com/leftcoding/network/base/ServerHelper.java rename to support-coding-network/src/main/java/com/leftcoding/network/base/ServerHelper.java diff --git a/android-coding-network/src/main/res/values/strings.xml b/support-coding-network/src/main/res/values/strings.xml similarity index 100% rename from android-coding-network/src/main/res/values/strings.xml rename to support-coding-network/src/main/res/values/strings.xml diff --git a/android-coding-rxbus/.gitignore b/support-coding-rxbus/.gitignore similarity index 100% rename from android-coding-rxbus/.gitignore rename to support-coding-rxbus/.gitignore diff --git a/android-coding-rxbus/build.gradle b/support-coding-rxbus/build.gradle similarity index 89% rename from android-coding-rxbus/build.gradle rename to support-coding-rxbus/build.gradle index 5f6a1741..6284fe49 100644 --- a/android-coding-rxbus/build.gradle +++ b/support-coding-rxbus/build.gradle @@ -9,7 +9,7 @@ android { versionCode rootProject.normalVersionCode versionName rootProject.normalVersionName - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { diff --git a/android-coding-rxbus/proguard-rules.pro b/support-coding-rxbus/proguard-rules.pro similarity index 100% rename from android-coding-rxbus/proguard-rules.pro rename to support-coding-rxbus/proguard-rules.pro diff --git a/android-coding-rxbus/src/main/AndroidManifest.xml b/support-coding-rxbus/src/main/AndroidManifest.xml similarity index 100% rename from android-coding-rxbus/src/main/AndroidManifest.xml rename to support-coding-rxbus/src/main/AndroidManifest.xml diff --git a/android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxActionManager.java b/support-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxActionManager.java similarity index 100% rename from android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxActionManager.java rename to support-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxActionManager.java diff --git a/android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxApiManager.java b/support-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxApiManager.java similarity index 100% rename from android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxApiManager.java rename to support-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxApiManager.java diff --git a/android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxBus.java b/support-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxBus.java similarity index 100% rename from android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxBus.java rename to support-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxBus.java diff --git a/android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxConsumer.java b/support-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxConsumer.java similarity index 100% rename from android-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxConsumer.java rename to support-coding-rxbus/src/main/java/com/leftcoding/rxbus/RxConsumer.java diff --git a/android-coding-rxbus/src/main/res/values/strings.xml b/support-coding-rxbus/src/main/res/values/strings.xml similarity index 100% rename from android-coding-rxbus/src/main/res/values/strings.xml rename to support-coding-rxbus/src/main/res/values/strings.xml diff --git a/android-coding-ui/.gitignore b/support-coding-ui/.gitignore similarity index 100% rename from android-coding-ui/.gitignore rename to support-coding-ui/.gitignore diff --git a/android-coding-ui/build.gradle b/support-coding-ui/build.gradle similarity index 78% rename from android-coding-ui/build.gradle rename to support-coding-ui/build.gradle index 0be0fa22..c74086c6 100644 --- a/android-coding-ui/build.gradle +++ b/support-coding-ui/build.gradle @@ -21,6 +21,6 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation "com.android.support:recyclerview-v7:${supportVersion}" - implementation "com.android.support:appcompat-v7:${supportVersion}" + implementation "androidx.recyclerview:recyclerview:${supportVersion}" + implementation "androidx.appcompat:appcompat:${supportVersion}" } diff --git a/android-coding-ui/proguard-rules.pro b/support-coding-ui/proguard-rules.pro similarity index 100% rename from android-coding-ui/proguard-rules.pro rename to support-coding-ui/proguard-rules.pro diff --git a/android-coding-ui/src/main/AndroidManifest.xml b/support-coding-ui/src/main/AndroidManifest.xml similarity index 100% rename from android-coding-ui/src/main/AndroidManifest.xml rename to support-coding-ui/src/main/AndroidManifest.xml diff --git a/android-coding-ui/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java b/support-coding-ui/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java similarity index 82% rename from android-coding-ui/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java rename to support-coding-ui/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java index be8cbaa0..2f29416a 100644 --- a/android-coding-ui/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java +++ b/support-coding-ui/src/main/java/android/lectcoding/ui/adapter/BaseAdapter.java @@ -1,6 +1,6 @@ package android.lectcoding.ui.adapter; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; /** * Create by LingYan on 2017-10-14 diff --git a/android-coding-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java b/support-coding-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java similarity index 86% rename from android-coding-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java rename to support-coding-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java index 32da7c37..e452b343 100644 --- a/android-coding-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java +++ b/support-coding-ui/src/main/java/android/lectcoding/ui/adapter/BasicHolder.java @@ -1,7 +1,7 @@ package android.lectcoding.ui.adapter; -import android.support.annotation.LayoutRes; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.LayoutRes; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/android-coding-ui/src/main/java/android/lectcoding/ui/adapter/BasicViewItem.java b/support-coding-ui/src/main/java/android/lectcoding/ui/adapter/BasicViewItem.java similarity index 100% rename from android-coding-ui/src/main/java/android/lectcoding/ui/adapter/BasicViewItem.java rename to support-coding-ui/src/main/java/android/lectcoding/ui/adapter/BasicViewItem.java diff --git a/android-coding-ui/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java b/support-coding-ui/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java similarity index 92% rename from android-coding-ui/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java rename to support-coding-ui/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java index 8bc0cd2b..53ee13f5 100644 --- a/android-coding-ui/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java +++ b/support-coding-ui/src/main/java/android/lectcoding/ui/adapter/ObserverAdapter.java @@ -1,6 +1,6 @@ package android.lectcoding.ui.adapter; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; /** * Create by LingYan on 2018-03-23 diff --git a/android-coding-ui/src/main/java/android/lectcoding/ui/adapter/ViewItem.java b/support-coding-ui/src/main/java/android/lectcoding/ui/adapter/ViewItem.java similarity index 77% rename from android-coding-ui/src/main/java/android/lectcoding/ui/adapter/ViewItem.java rename to support-coding-ui/src/main/java/android/lectcoding/ui/adapter/ViewItem.java index 353882b0..e3d26545 100644 --- a/android-coding-ui/src/main/java/android/lectcoding/ui/adapter/ViewItem.java +++ b/support-coding-ui/src/main/java/android/lectcoding/ui/adapter/ViewItem.java @@ -1,6 +1,6 @@ package android.lectcoding.ui.adapter; -import android.support.annotation.LayoutRes; +import androidx.annotation.LayoutRes; /** * Create by LingYan on 2017-11-27 diff --git a/android-coding-ui/src/main/java/android/lectcoding/ui/base/BaseContract.java b/support-coding-ui/src/main/java/android/lectcoding/ui/base/BaseContract.java similarity index 100% rename from android-coding-ui/src/main/java/android/lectcoding/ui/base/BaseContract.java rename to support-coding-ui/src/main/java/android/lectcoding/ui/base/BaseContract.java diff --git a/android-coding-ui/src/main/java/android/lectcoding/ui/base/BaseFragment.java b/support-coding-ui/src/main/java/android/lectcoding/ui/base/BaseFragment.java similarity index 91% rename from android-coding-ui/src/main/java/android/lectcoding/ui/base/BaseFragment.java rename to support-coding-ui/src/main/java/android/lectcoding/ui/base/BaseFragment.java index afaf9735..bc996704 100644 --- a/android-coding-ui/src/main/java/android/lectcoding/ui/base/BaseFragment.java +++ b/support-coding-ui/src/main/java/android/lectcoding/ui/base/BaseFragment.java @@ -2,9 +2,9 @@ import android.content.Context; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/android-coding-ui/src/main/java/android/lectcoding/ui/base/BaseView.java b/support-coding-ui/src/main/java/android/lectcoding/ui/base/BaseView.java similarity index 100% rename from android-coding-ui/src/main/java/android/lectcoding/ui/base/BaseView.java rename to support-coding-ui/src/main/java/android/lectcoding/ui/base/BaseView.java diff --git a/android-coding-ui/src/main/java/android/lectcoding/ui/logcat/Logcat.java b/support-coding-ui/src/main/java/android/lectcoding/ui/logcat/Logcat.java similarity index 99% rename from android-coding-ui/src/main/java/android/lectcoding/ui/logcat/Logcat.java rename to support-coding-ui/src/main/java/android/lectcoding/ui/logcat/Logcat.java index 8ac7df0e..0f7ebd4d 100644 --- a/android-coding-ui/src/main/java/android/lectcoding/ui/logcat/Logcat.java +++ b/support-coding-ui/src/main/java/android/lectcoding/ui/logcat/Logcat.java @@ -5,7 +5,7 @@ import android.lectcoding.ui.logcat.base.FileLog; import android.lectcoding.ui.logcat.base.JsonLog; import android.lectcoding.ui.logcat.base.XmlLog; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.text.TextUtils; import java.io.File; diff --git a/android-coding-ui/src/main/java/android/lectcoding/ui/logcat/LogcatUtil.java b/support-coding-ui/src/main/java/android/lectcoding/ui/logcat/LogcatUtil.java similarity index 100% rename from android-coding-ui/src/main/java/android/lectcoding/ui/logcat/LogcatUtil.java rename to support-coding-ui/src/main/java/android/lectcoding/ui/logcat/LogcatUtil.java diff --git a/android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/BaseLog.java b/support-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/BaseLog.java similarity index 100% rename from android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/BaseLog.java rename to support-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/BaseLog.java diff --git a/android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java b/support-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java similarity index 94% rename from android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java rename to support-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java index 017f7fd8..f6d840e5 100644 --- a/android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java +++ b/support-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/FileLog.java @@ -1,7 +1,7 @@ package android.lectcoding.ui.logcat.base; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.util.Log; import java.io.File; diff --git a/android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/JsonLog.java b/support-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/JsonLog.java similarity index 100% rename from android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/JsonLog.java rename to support-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/JsonLog.java diff --git a/android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/XmlLog.java b/support-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/XmlLog.java similarity index 100% rename from android-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/XmlLog.java rename to support-coding-ui/src/main/java/android/lectcoding/ui/logcat/base/XmlLog.java diff --git a/android-coding-ui/src/main/res/values/strings.xml b/support-coding-ui/src/main/res/values/strings.xml similarity index 100% rename from android-coding-ui/src/main/res/values/strings.xml rename to support-coding-ui/src/main/res/values/strings.xml