├── .gitignore
├── .idea
├── codeStyles
│ └── codeStyleConfig.xml
├── gradle.xml
├── misc.xml
└── runConfigurations.xml
├── MVP
├── .gitignore
├── build.gradle
├── gradle.properties
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── jess
│ │ └── arms
│ │ ├── base
│ │ ├── AdapterViewPager.java
│ │ ├── App.java
│ │ ├── BaseActivity.java
│ │ ├── BaseApplication.java
│ │ ├── BaseFragment.java
│ │ ├── BaseHolder.java
│ │ ├── BaseLazyLoadFragment.java
│ │ ├── BaseService.java
│ │ ├── DefaultAdapter.java
│ │ ├── Platform.java
│ │ └── delegate
│ │ │ ├── ActivityDelegate.java
│ │ │ ├── ActivityDelegateImpl.java
│ │ │ ├── AppDelegate.java
│ │ │ ├── AppLifecycles.java
│ │ │ ├── FragmentDelegate.java
│ │ │ ├── FragmentDelegateImpl.java
│ │ │ ├── IActivity.java
│ │ │ └── IFragment.java
│ │ ├── di
│ │ ├── component
│ │ │ └── AppComponent.java
│ │ ├── module
│ │ │ ├── AppModule.java
│ │ │ ├── ClientModule.java
│ │ │ └── GlobalConfigModule.java
│ │ └── scope
│ │ │ ├── ActivityScope.java
│ │ │ └── FragmentScope.java
│ │ ├── http
│ │ ├── BaseUrl.java
│ │ ├── GlobalHttpHandler.java
│ │ ├── OkHttpStreamFetcher.java
│ │ ├── OkHttpUrlLoader.java
│ │ ├── imageloader
│ │ │ ├── BaseImageLoaderStrategy.java
│ │ │ ├── ImageConfig.java
│ │ │ ├── ImageLoader.java
│ │ │ └── glide
│ │ │ │ ├── GlideAppliesOptions.java
│ │ │ │ └── GlideConfiguration.java
│ │ └── log
│ │ │ ├── DefaultFormatPrinter.java
│ │ │ ├── FormatPrinter.java
│ │ │ └── RequestInterceptor.java
│ │ ├── integration
│ │ ├── ActivityLifecycle.java
│ │ ├── AppManager.java
│ │ ├── ConfigModule.java
│ │ ├── EventBusManager.java
│ │ ├── FragmentLifecycle.java
│ │ ├── IRepositoryManager.java
│ │ ├── ManifestParser.java
│ │ ├── RepositoryManager.java
│ │ ├── cache
│ │ │ ├── Cache.java
│ │ │ ├── CacheType.java
│ │ │ ├── IntelligentCache.java
│ │ │ └── LruCache.java
│ │ └── lifecycle
│ │ │ ├── ActivityLifecycleForRxLifecycle.java
│ │ │ ├── ActivityLifecycleable.java
│ │ │ ├── FragmentLifecycleForRxLifecycle.java
│ │ │ ├── FragmentLifecycleable.java
│ │ │ └── Lifecycleable.java
│ │ ├── mvp
│ │ ├── BaseModel.java
│ │ ├── BasePresenter.java
│ │ ├── IModel.java
│ │ ├── IPresenter.java
│ │ └── IView.java
│ │ ├── utils
│ │ ├── ArmsUtils.java
│ │ ├── CharacterHandler.java
│ │ ├── DataHelper.java
│ │ ├── DeviceUtils.java
│ │ ├── DrawableProvider.java
│ │ ├── FastBlur.java
│ │ ├── LogUtils.java
│ │ ├── PermissionUtil.java
│ │ ├── Preconditions.java
│ │ ├── RxLifecycleUtils.java
│ │ ├── ThirdViewUtil.java
│ │ ├── UrlEncoderUtils.java
│ │ └── ZipHelper.java
│ │ └── widget
│ │ └── CustomPopupWindow.java
│ └── res
│ └── values
│ └── strings.xml
├── README.md
├── build.gradle
├── config.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── screenShot
├── 1.png
├── 2.png
├── 3.png
├── 4.png
├── 5.png
├── 6.png
├── 7.png
└── 8.png
├── settings.gradle
└── storybooks
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
├── androidTest
└── java
│ └── com
│ └── winwang
│ └── storybooks
│ └── ExampleInstrumentedTest.java
├── main
├── AndroidManifest.xml
├── assets
│ ├── fonts
│ │ └── heilizhi.ttf
│ └── storylist.json
├── java
│ └── com
│ │ └── winwang
│ │ └── storybooks
│ │ ├── AppConfig.java
│ │ ├── MainActivity.java
│ │ ├── adapter
│ │ ├── HomeStoryAdapter.java
│ │ ├── MusicHomeAdapter.java
│ │ ├── MusicListAdapter.java
│ │ ├── StoryCatAdapter.java
│ │ ├── StoryListAdapter.java
│ │ └── TalksAdapter.java
│ │ ├── app
│ │ ├── ActivityLifecycleCallbacksImpl.java
│ │ ├── AppLifecyclesImpl.java
│ │ ├── EventBusTags.java
│ │ ├── FragmentLifecycleCallbacksImpl.java
│ │ ├── GlobalConfiguration.java
│ │ ├── GlobalHttpHandlerImpl.java
│ │ ├── MyApp.java
│ │ └── ResponseErrorListenerImpl.java
│ │ ├── base
│ │ └── BasesActivity.java
│ │ ├── common
│ │ ├── Constant.java
│ │ └── RouterUrl.java
│ │ ├── di
│ │ ├── component
│ │ │ ├── HomeComponent.java
│ │ │ ├── MusicDetailComponent.java
│ │ │ ├── MusicHomeComponent.java
│ │ │ ├── MusicListComponent.java
│ │ │ ├── MyRankComponent.java
│ │ │ ├── MyTalkComponent.java
│ │ │ ├── SplashComponent.java
│ │ │ ├── StoryListComponent.java
│ │ │ ├── TalkComponent.java
│ │ │ ├── TalksComponent.java
│ │ │ └── VideoDetailComponent.java
│ │ └── module
│ │ │ ├── HomeModule.java
│ │ │ ├── MusicDetailModule.java
│ │ │ ├── MusicHomeModule.java
│ │ │ ├── MusicListModule.java
│ │ │ ├── MyRankModule.java
│ │ │ ├── MyTalkModule.java
│ │ │ ├── SplashModule.java
│ │ │ ├── StoryListModule.java
│ │ │ ├── TalkModule.java
│ │ │ ├── TalksModule.java
│ │ │ └── VideoDetailModule.java
│ │ ├── entity
│ │ ├── AudioDetailBean.java
│ │ ├── BaseBean.java
│ │ ├── HomeListBean.java
│ │ ├── HomeReqBean.java
│ │ ├── MusicHomeBean.java
│ │ ├── MusicListBean.java
│ │ ├── StoryInListBean.java
│ │ ├── StoryListBean.java
│ │ ├── TalkBean.java
│ │ ├── VideoBean.java
│ │ └── VideoDetailBean.java
│ │ ├── event
│ │ └── MusicEvent.java
│ │ ├── http
│ │ ├── ApiService.java
│ │ ├── CacheApi.java
│ │ ├── RequestParams.java
│ │ └── UrlConfig.java
│ │ ├── interfaces
│ │ └── PlayCompleteListener.java
│ │ ├── loadingcallback
│ │ ├── AnimateCallback.java
│ │ ├── CustomCallback.java
│ │ ├── EmptyCallback.java
│ │ ├── ErrorCallback.java
│ │ ├── LoadingCallback.java
│ │ ├── LottieEmptyCallback.java
│ │ ├── LottieLoadingCallback.java
│ │ ├── PlaceholderCallback.java
│ │ └── TimeoutCallback.java
│ │ ├── mvp
│ │ ├── contract
│ │ │ ├── HomeContract.java
│ │ │ ├── MusicDetailContract.java
│ │ │ ├── MusicHomeContract.java
│ │ │ ├── MusicListContract.java
│ │ │ ├── MyRankContract.java
│ │ │ ├── MyTalkContract.java
│ │ │ ├── SplashContract.java
│ │ │ ├── StoryListContract.java
│ │ │ ├── TalkContract.java
│ │ │ ├── TalksContract.java
│ │ │ └── VideoDetailContract.java
│ │ ├── model
│ │ │ ├── HomeModel.java
│ │ │ ├── MusicDetailModel.java
│ │ │ ├── MusicHomeModel.java
│ │ │ ├── MusicListModel.java
│ │ │ ├── MyRankModel.java
│ │ │ ├── MyTalkModel.java
│ │ │ ├── SplashModel.java
│ │ │ ├── StoryListModel.java
│ │ │ ├── TalkModel.java
│ │ │ ├── TalksModel.java
│ │ │ └── VideoDetailModel.java
│ │ └── presenter
│ │ │ ├── HomePresenter.java
│ │ │ ├── MusicDetailPresenter.java
│ │ │ ├── MusicHomePresenter.java
│ │ │ ├── MusicListPresenter.java
│ │ │ ├── MyRankPresenter.java
│ │ │ ├── MyTalkPresenter.java
│ │ │ ├── SplashPresenter.java
│ │ │ ├── StoryListPresenter.java
│ │ │ ├── TalkPresenter.java
│ │ │ ├── TalksPresenter.java
│ │ │ └── VideoDetailPresenter.java
│ │ ├── service
│ │ └── PlayService.java
│ │ ├── ui
│ │ ├── activity
│ │ │ ├── HomeActivity.java
│ │ │ ├── MusicDetailActivity.java
│ │ │ ├── MusicHomeActivity.java
│ │ │ ├── MusicListActivity.java
│ │ │ ├── SplashActivity.java
│ │ │ ├── StoryListActivity.java
│ │ │ ├── TalkActivity.java
│ │ │ └── VideoDetailActivity.java
│ │ └── fragment
│ │ │ ├── MyRankFragment.java
│ │ │ ├── MyTalkFragment.java
│ │ │ └── TalksFragment.java
│ │ ├── utils
│ │ ├── AspectJ
│ │ │ └── AspectClick.java
│ │ ├── ExoMediaPlayer.java
│ │ ├── FileUtils.java
│ │ ├── NoDoubleClickUtils.java
│ │ ├── RxUtils.java
│ │ └── customAnnotation
│ │ │ ├── DoubleClick.java
│ │ │ ├── RequestPermissions.java
│ │ │ └── SingleClick.java
│ │ └── widget
│ │ └── EmptyControlVideo.java
└── res
│ ├── anim
│ ├── civ_rotate_animate.xml
│ ├── translate_center_to_left.xml
│ ├── translate_center_to_right.xml
│ ├── translate_left_to_center.xml
│ ├── translate_right_to_center.xml
│ └── virbrate_animate.xml
│ ├── drawable-xhdpi
│ └── ic_arrow_back_white_24dp.png
│ ├── drawable-xxhdpi
│ └── ic_arrow_back_white_24dp.png
│ ├── drawable-xxxhdpi
│ ├── bird.png
│ ├── btn_a2_n.png
│ ├── btn_b2_n.png
│ ├── btn_details_progress_flower.png
│ ├── btn_girl_woyaojiang.png
│ ├── dianshi.png
│ ├── home_novoice.png
│ ├── home_voice1.png
│ ├── huyanmoshi_bg.png
│ ├── ic_arrow_back_white_24dp.png
│ ├── index_bg.png
│ ├── index_down.png
│ ├── index_hot.png
│ ├── index_kuang.png
│ ├── index_like.png
│ ├── index_music.png
│ ├── index_new.png
│ ├── index_story.png
│ ├── index_time.png
│ ├── index_xiankan.png
│ ├── list_bg.png
│ ├── list_kuang.png
│ ├── list_kuang_hot.png
│ ├── list_kuang_new.png
│ ├── list_qiangxian.png
│ ├── list_story_icon_down.png
│ ├── listen.png
│ ├── pic_tingting_moren.png
│ ├── play_bear.png
│ ├── play_bg.png
│ ├── play_like_nor.png
│ ├── play_like_press.png
│ ├── play_pinglun.png
│ ├── play_play.png
│ ├── play_return.png
│ ├── play_suspend.png
│ ├── play_voice.png
│ ├── play_voice_close.png
│ ├── radio.png
│ ├── radio2.png
│ ├── radio3.png
│ ├── radio_cd_fengmian.png
│ ├── radio_cd_shibai.png
│ ├── star.png
│ ├── yindao_bg.png
│ └── yingdao.png
│ ├── drawable
│ ├── awkward.png
│ ├── bird_qiehuan1.png
│ ├── bird_qiehuan2.png
│ ├── btn_home_girll1.png
│ ├── btn_home_girll2.png
│ ├── btn_home_girll3.png
│ ├── btn_resources_ranking_def.png
│ ├── btn_resources_ranking_sel.png
│ ├── btn_resources_woyaolu_def.png
│ ├── btn_resources_woyaolu_sel.png
│ ├── custom.png
│ ├── empty.png
│ ├── error.png
│ ├── fly_anim.xml
│ ├── girl_anim.xml
│ ├── home_tutu_1.png
│ ├── home_tutu_10.png
│ ├── home_tutu_2.png
│ ├── home_tutu_3.png
│ ├── home_tutu_4.png
│ ├── home_tutu_5.png
│ ├── home_tutu_6.png
│ ├── home_tutu_7.png
│ ├── home_tutu_8.png
│ ├── home_tutu_9.png
│ ├── home_tutu_erge_b1.png
│ ├── home_tutu_erge_b2.png
│ ├── home_tutu_gushi_b1.png
│ ├── home_tutu_gushi_b2.png
│ ├── img.jpg
│ ├── jiazai_1.png
│ ├── jiazai_2.png
│ ├── jiazai_3.png
│ ├── jiazai_4.png
│ ├── jiazai_5.png
│ ├── jiazai_6.png
│ ├── list_button.9.png
│ ├── listen_zhanweifu.9.png
│ ├── loading.gif
│ ├── music.png
│ ├── music_anim.xml
│ ├── rank_sel.xml
│ ├── seek_progress_back.xml
│ ├── seek_thumb.xml
│ ├── story_anim.xml
│ ├── talk_sel.xml
│ ├── timeout.png
│ └── white_back.xml
│ ├── layout
│ ├── activity_home.xml
│ ├── activity_main.xml
│ ├── activity_music_detail.xml
│ ├── activity_music_home.xml
│ ├── activity_music_list.xml
│ ├── activity_splash.xml
│ ├── activity_story_list.xml
│ ├── activity_talk.xml
│ ├── activity_video_detail.xml
│ ├── empty_control_video.xml
│ ├── fragment_my_rank.xml
│ ├── fragment_my_talk.xml
│ ├── fragment_talks.xml
│ ├── include_title.xml
│ ├── item_music_home_layout.xml
│ ├── item_music_list_layout.xml
│ ├── item_story_list_layout.xml
│ ├── item_story_music_home_layout.xml
│ ├── item_talk_rank_layout.xml
│ ├── layout_animate.xml
│ ├── layout_custom.xml
│ ├── layout_custom_error.xml
│ ├── layout_empty.xml
│ ├── layout_error.xml
│ ├── layout_head_top_bar.xml
│ ├── layout_loading.xml
│ ├── layout_lottie_empty.xml
│ ├── layout_lottie_loading.xml
│ ├── layout_placeholder.xml
│ ├── layout_timeout.xml
│ └── view_left_back.xml
│ ├── mipmap-hdpi
│ └── ic_launcher.png
│ ├── mipmap-xhdpi
│ └── ic_launcher.png
│ ├── mipmap-xxhdpi
│ └── ic_launcher.png
│ ├── mipmap-xxxhdpi
│ └── ic_launcher.png
│ ├── raw
│ ├── beijing.mp3
│ ├── click.WAV
│ ├── dianzan.mp3
│ ├── erge.mp3
│ ├── fanhui.wav
│ ├── gushi.mp3
│ ├── home1.mp3
│ ├── home2.mp3
│ ├── home3.mp3
│ ├── hua_kuai.WAV
│ └── hua_man.wav
│ ├── values
│ ├── colors.xml
│ ├── dimens.xml
│ ├── ids.xml
│ ├── strings.xml
│ └── styles.xml
│ └── xml
│ └── network_security_config.xml
└── test
└── java
└── com
└── winwang
└── storybooks
└── ExampleUnitTest.java
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .DS_Store
11 | /build
12 | /captures
13 | .externalNativeBuild
14 | /.idea/
15 |
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/MVP/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/MVP/gradle.properties:
--------------------------------------------------------------------------------
1 | POM_NAME=MVPArms
2 |
--------------------------------------------------------------------------------
/MVP/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/base/App.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.base;
17 |
18 | import android.support.annotation.NonNull;
19 |
20 | import com.jess.arms.di.component.AppComponent;
21 |
22 | /**
23 | * ================================================
24 | * 框架要求框架中的每个 {@link android.app.Application} 都需要实现此类, 以满足规范
25 | *
26 | * @see BaseApplication
27 | * @see 请配合官方 Wiki 文档学习本框架
28 | * @see 更新日志, 升级必看!
29 | * @see 常见 Issues, 踩坑必看!
30 | * @see MVPArms 官方组件化方案 ArmsComponent, 进阶指南!
31 | * Created by JessYan on 25/04/2017 14:54
32 | * Contact me
33 | * Follow me
34 | * ================================================
35 | */
36 | public interface App {
37 | @NonNull
38 | AppComponent getAppComponent();
39 | }
40 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/base/Platform.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2018 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.base;
17 |
18 | /**
19 | * ================================================
20 | * Created by JessYan on 2018/7/27 15:32
21 | * Contact me
22 | * Follow me
23 | * ================================================
24 | */
25 | public class Platform {
26 | public static final boolean DEPENDENCY_AUTO_LAYOUT;
27 | public static final boolean DEPENDENCY_SUPPORT_DESIGN;
28 | public static final boolean DEPENDENCY_GLIDE;
29 | public static final boolean DEPENDENCY_ANDROID_EVENTBUS;
30 | public static final boolean DEPENDENCY_EVENTBUS;
31 |
32 | static {
33 | DEPENDENCY_AUTO_LAYOUT = findClassByClassName("com.zhy.autolayout.AutoLayoutInfo");
34 | DEPENDENCY_SUPPORT_DESIGN = findClassByClassName("android.support.design.widget.Snackbar");
35 | DEPENDENCY_GLIDE = findClassByClassName("com.bumptech.glide.Glide");
36 | DEPENDENCY_ANDROID_EVENTBUS = findClassByClassName("org.simple.eventbus.EventBus");
37 | DEPENDENCY_EVENTBUS = findClassByClassName("org.greenrobot.eventbus.EventBus");
38 | }
39 |
40 | private static boolean findClassByClassName(String className) {
41 | boolean hasDependency;
42 | try {
43 | Class.forName(className);
44 | hasDependency = true;
45 | } catch (ClassNotFoundException e) {
46 | hasDependency = false;
47 | }
48 | return hasDependency;
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/base/delegate/ActivityDelegate.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.base.delegate;
17 |
18 | import android.app.Activity;
19 | import android.os.Bundle;
20 | import android.support.annotation.NonNull;
21 | import android.support.annotation.Nullable;
22 |
23 | /**
24 | * ================================================
25 | * {@link Activity} 代理类,用于框架内部在每个 {@link Activity} 的对应生命周期中插入需要的逻辑
26 | *
27 | * @see ActivityDelegateImpl
28 | * @see ActivityDelegate wiki 官方文档
29 | * Created by JessYan on 26/04/2017 20:23
30 | * Contact me
31 | * Follow me
32 | * ================================================
33 | */
34 | public interface ActivityDelegate {
35 | String LAYOUT_LINEARLAYOUT = "LinearLayout";
36 | String LAYOUT_FRAMELAYOUT = "FrameLayout";
37 | String LAYOUT_RELATIVELAYOUT = "RelativeLayout";
38 | String ACTIVITY_DELEGATE = "ACTIVITY_DELEGATE";
39 |
40 | void onCreate(@Nullable Bundle savedInstanceState);
41 |
42 | void onStart();
43 |
44 | void onResume();
45 |
46 | void onPause();
47 |
48 | void onStop();
49 |
50 | void onSaveInstanceState(@NonNull Bundle outState);
51 |
52 | void onDestroy();
53 | }
54 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/base/delegate/AppLifecycles.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.base.delegate;
17 |
18 | import android.app.Application;
19 | import android.content.Context;
20 | import android.support.annotation.NonNull;
21 |
22 | /**
23 | * ================================================
24 | * 用于代理 {@link Application} 的生命周期
25 | *
26 | * @see AppDelegate
27 | * Created by JessYan on 18/07/2017 17:43
28 | * Contact me
29 | * Follow me
30 | * ================================================
31 | */
32 | public interface AppLifecycles {
33 | void attachBaseContext(@NonNull Context base);
34 |
35 | void onCreate(@NonNull Application application);
36 |
37 | void onTerminate(@NonNull Application application);
38 | }
39 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/di/scope/ActivityScope.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.di.scope;
17 |
18 | import java.lang.annotation.Documented;
19 | import java.lang.annotation.Retention;
20 |
21 | import javax.inject.Scope;
22 |
23 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
24 |
25 | /**
26 | * A scoping annotation to permit objects whose lifetime should
27 | * conform to the life of the activity to be memorized in the
28 | * correct component.
29 | */
30 | @Scope
31 | @Documented
32 | @Retention(RUNTIME)
33 | public @interface ActivityScope {}
34 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/di/scope/FragmentScope.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.di.scope;
17 |
18 | import java.lang.annotation.Documented;
19 | import java.lang.annotation.Retention;
20 |
21 | import javax.inject.Scope;
22 |
23 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
24 |
25 | /**
26 | * A scoping annotation to permit objects whose lifetime should
27 | * conform to the life of the fragment to be memorized in the
28 | * correct component.
29 | */
30 | @Scope
31 | @Documented
32 | @Retention(RUNTIME)
33 | public @interface FragmentScope {}
34 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/http/BaseUrl.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.http;
17 |
18 | import android.support.annotation.NonNull;
19 |
20 | import okhttp3.HttpUrl;
21 |
22 | /**
23 | * ================================================
24 | * 针对于 BaseUrl 在 App 启动时不能确定,需要请求服务器接口动态获取的应用场景
25 | *
26 | * Created by JessYan on 11/07/2017 14:58
27 | * Contact me
28 | * Follow me
29 | * ================================================
30 | */
31 | public interface BaseUrl {
32 | /**
33 | * 在调用 Retrofit API 接口之前,使用 Okhttp 或其他方式,请求到正确的 BaseUrl 并通过此方法返回
34 | *
35 | * @return
36 | */
37 | @NonNull
38 | HttpUrl url();
39 | }
40 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/http/imageloader/BaseImageLoaderStrategy.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.http.imageloader;
17 |
18 | import android.content.Context;
19 | import android.support.annotation.Nullable;
20 |
21 | /**
22 | * ================================================
23 | * 图片加载策略,实现 {@link BaseImageLoaderStrategy}
24 | * 并通过 {@link ImageLoader#setLoadImgStrategy(BaseImageLoaderStrategy)} 配置后,才可进行图片请求
25 | *
26 | * Created by JessYan on 8/5/2016 15:50
27 | * Contact me
28 | * Follow me
29 | * ================================================
30 | */
31 | public interface BaseImageLoaderStrategy {
32 |
33 | /**
34 | * 加载图片
35 | *
36 | * @param ctx {@link Context}
37 | * @param config 图片加载配置信息
38 | */
39 | void loadImage(@Nullable Context ctx, @Nullable T config);
40 |
41 | /**
42 | * 停止加载
43 | *
44 | * @param ctx {@link Context}
45 | * @param config 图片加载配置信息
46 | */
47 | void clear(@Nullable Context ctx, @Nullable T config);
48 | }
49 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/http/imageloader/ImageConfig.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.http.imageloader;
17 |
18 | import android.widget.ImageView;
19 |
20 | /**
21 | * ================================================
22 | * 这里是图片加载配置信息的基类,定义一些所有图片加载框架都可以用的通用参数
23 | * 每个 {@link BaseImageLoaderStrategy} 应该对应一个 {@link ImageConfig} 实现类
24 | *
25 | * Created by JessYan on 8/5/16 15:19
26 | * Contact me
27 | * Follow me
28 | * ================================================
29 | */
30 | public class ImageConfig {
31 | protected String url;
32 | protected ImageView imageView;
33 | protected int placeholder;//占位符
34 | protected int errorPic;//错误占位符
35 |
36 | public String getUrl() {
37 | return url;
38 | }
39 |
40 | public ImageView getImageView() {
41 | return imageView;
42 | }
43 |
44 | public int getPlaceholder() {
45 | return placeholder;
46 | }
47 |
48 | public int getErrorPic() {
49 | return errorPic;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/http/imageloader/glide/GlideAppliesOptions.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.http.imageloader.glide;
17 |
18 | import android.content.Context;
19 | import android.support.annotation.NonNull;
20 |
21 | import com.bumptech.glide.Glide;
22 | import com.bumptech.glide.GlideBuilder;
23 | import com.jess.arms.http.imageloader.BaseImageLoaderStrategy;
24 |
25 | /**
26 | * ================================================
27 | * 如果你想具有配置 @{@link Glide} 的权利,则需要让 {@link BaseImageLoaderStrategy}
28 | * 的实现类也必须实现 {@link GlideAppliesOptions}
29 | *
30 | * Created by JessYan on 13/08/2017 22:02
31 | * Contact me
32 | * Follow me
33 | * ================================================
34 | */
35 | public interface GlideAppliesOptions {
36 |
37 | /**
38 | * 配置 @{@link Glide} 的自定义参数,此方法在 @{@link Glide} 初始化时执行(@{@link Glide} 在第一次被调用时初始化),只会执行一次
39 | *
40 | * @param context
41 | * @param builder {@link GlideBuilder} 此类被用来创建 Glide
42 | */
43 | void applyGlideOptions(@NonNull Context context, @NonNull GlideBuilder builder);
44 | }
45 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/integration/IRepositoryManager.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.integration;
17 |
18 | import android.content.Context;
19 | import android.support.annotation.NonNull;
20 |
21 | import com.jess.arms.mvp.IModel;
22 |
23 | /**
24 | * ================================================
25 | * 用来管理网络请求层,以及数据缓存层,以后可能添加数据库请求层
26 | * 提供给 {@link IModel} 必要的 Api 做数据处理
27 | *
28 | * @see RepositoryManager wiki 官方文档
29 | * Created by JessYan on 17/03/2017 11:15
30 | * Contact me
31 | * Follow me
32 | * ================================================
33 | */
34 | public interface IRepositoryManager {
35 |
36 | /**
37 | * 根据传入的 Class 获取对应的 Retrofit service
38 | *
39 | * @param service Retrofit service class
40 | * @param Retrofit service 类型
41 | * @return Retrofit service
42 | */
43 | @NonNull
44 | T obtainRetrofitService(@NonNull Class service);
45 |
46 |
47 | /**
48 | * 根据传入的 Class 获取对应的 RxCache service
49 | *
50 | * @param cache RxCache service class
51 | * @param RxCache service 类型
52 | * @return RxCache service
53 | */
54 | @NonNull
55 | T obtainCacheService(@NonNull Class cache);
56 |
57 | /**
58 | * 清理所有缓存
59 | */
60 | void clearAllCache();
61 |
62 | /**
63 | * 获取 {@link Context}
64 | *
65 | * @return {@link Context}
66 | */
67 | @NonNull
68 | Context getContext();
69 | }
70 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/integration/lifecycle/ActivityLifecycleable.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.integration.lifecycle;
17 |
18 | import android.app.Activity;
19 |
20 | import com.trello.rxlifecycle2.RxLifecycle;
21 | import com.trello.rxlifecycle2.android.ActivityEvent;
22 |
23 | /**
24 | * ================================================
25 | * 让 {@link Activity} 实现此接口,即可正常使用 {@link RxLifecycle}
26 | *
27 | * Created by JessYan on 26/08/2017 17:14
28 | * Contact me
29 | * Follow me
30 | * ================================================
31 | */
32 | public interface ActivityLifecycleable extends Lifecycleable {
33 | }
34 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/integration/lifecycle/FragmentLifecycleable.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.integration.lifecycle;
17 |
18 | import android.support.v4.app.Fragment;
19 |
20 | import com.trello.rxlifecycle2.RxLifecycle;
21 | import com.trello.rxlifecycle2.android.FragmentEvent;
22 |
23 | /**
24 | * ================================================
25 | * 让 {@link Fragment} 实现此接口,即可正常使用 {@link RxLifecycle}
26 | *
27 | * Created by JessYan on 26/08/2017 17:14
28 | * Contact me
29 | * Follow me
30 | * ================================================
31 | */
32 | public interface FragmentLifecycleable extends Lifecycleable {
33 | }
34 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/integration/lifecycle/Lifecycleable.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.integration.lifecycle;
17 |
18 | import android.app.Activity;
19 | import android.support.annotation.NonNull;
20 | import android.support.v4.app.Fragment;
21 |
22 | import com.jess.arms.utils.RxLifecycleUtils;
23 | import com.trello.rxlifecycle2.RxLifecycle;
24 |
25 | import io.reactivex.subjects.Subject;
26 |
27 | /**
28 | * ================================================
29 | * 让 {@link Activity}/{@link Fragment} 实现此接口,即可正常使用 {@link RxLifecycle}
30 | * 无需再继承 {@link RxLifecycle} 提供的 Activity/Fragment ,扩展性极强
31 | *
32 | * @see RxLifecycleUtils 详细用法请查看此类
33 | * Created by JessYan on 25/08/2017 18:39
34 | * Contact me
35 | * Follow me
36 | * ================================================
37 | */
38 | public interface Lifecycleable {
39 | @NonNull
40 | Subject provideLifecycleSubject();
41 | }
42 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/mvp/BaseModel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.mvp;
17 |
18 | import android.arch.lifecycle.Lifecycle;
19 | import android.arch.lifecycle.LifecycleObserver;
20 | import android.arch.lifecycle.LifecycleOwner;
21 | import android.arch.lifecycle.OnLifecycleEvent;
22 |
23 | import com.jess.arms.integration.IRepositoryManager;
24 |
25 | /**
26 | * ================================================
27 | * 基类 Model
28 | *
29 | * @see Model wiki 官方文档
30 | * Created by JessYan on 08/05/2016 12:55
31 | * Contact me
32 | * Follow me
33 | * ================================================
34 | */
35 | public class BaseModel implements IModel, LifecycleObserver {
36 | protected IRepositoryManager mRepositoryManager;//用于管理网络请求层, 以及数据缓存层
37 |
38 | public BaseModel(IRepositoryManager repositoryManager) {
39 | this.mRepositoryManager = repositoryManager;
40 | }
41 |
42 | /**
43 | * 在框架中 {@link BasePresenter#onDestroy()} 时会默认调用 {@link IModel#onDestroy()}
44 | */
45 | @Override
46 | public void onDestroy() {
47 | mRepositoryManager = null;
48 | }
49 |
50 | @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
51 | void onDestroy(LifecycleOwner owner) {
52 | owner.getLifecycle().removeObserver(this);
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/mvp/IModel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.mvp;
17 |
18 | /**
19 | * ================================================
20 | * 框架要求框架中的每个 Model 都需要实现此类,以满足规范
21 | *
22 | * @see BaseModel
23 | * @see Model wiki 官方文档
24 | * Created by JessYan on 15/12/2016 10:45
25 | * Contact me
26 | * Follow me
27 | * ================================================
28 | */
29 | public interface IModel {
30 |
31 | /**
32 | * 在框架中 {@link BasePresenter#onDestroy()} 时会默认调用 {@link IModel#onDestroy()}
33 | */
34 | void onDestroy();
35 | }
36 |
--------------------------------------------------------------------------------
/MVP/src/main/java/com/jess/arms/mvp/IPresenter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017 JessYan
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.jess.arms.mvp;
17 |
18 | import android.app.Activity;
19 |
20 | /**
21 | * ================================================
22 | * 框架要求框架中的每个 Presenter 都需要实现此类,以满足规范
23 | *
24 | * @see BasePresenter
25 | * @see Presenter wiki 官方文档
26 | * Created by JessYan on 4/28/2016
27 | * Contact me
28 | * Follow me
29 | * ================================================
30 | */
31 | public interface IPresenter {
32 |
33 | /**
34 | * 做一些初始化操作
35 | */
36 | void onStart();
37 |
38 | /**
39 | * 在框架中 {@link Activity#onDestroy()} 时会默认调用 {@link IPresenter#onDestroy()}
40 | */
41 | void onDestroy();
42 | }
43 |
--------------------------------------------------------------------------------
/MVP/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | arms
3 |
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # StoryBook
2 | 儿童故事阅读(仿写阿布儿童故事App--Api通过Fiddler抓包获取,该app仅用作学习用途,侵权删除)
3 | 该App基础架构基于JessYan开源MVPArms开发(MVP+RXjava+RxCache+Retrofit+Dagger2),做了部分修改,项目中通过AOP方式实现连续点击过滤,防止多次跳转界面,配合Rxpermission+AOP实现了通过注解动态申请权限,非常便捷
4 | 开发该app的主要目的是尝试Dagger2在项目中开发的使用,同时在开发的时候,也尝试了通过创建模板实现快速开发的目的,该项目集成了视频播放和音频播放
5 |
6 | 
7 | 
8 | 
9 | 
10 | 
11 | 
12 | 
13 | 
14 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | apply from: "config.gradle"
3 | buildscript {
4 | repositories {
5 | google()
6 | // jcenter()
7 | maven{ url'http://maven.aliyun.com/nexus/content/groups/public/' }
8 | maven{ url'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
9 | mavenCentral()
10 |
11 | }
12 | dependencies {
13 | classpath 'com.android.tools.build:gradle:3.3.2'
14 | classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
15 | //Gradle Bintray Plugin
16 | classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.0'
17 | //AspectJ
18 | classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'
19 | // NOTE: Do not place your application dependencies here; they belong
20 | // in the individual module build.gradle files
21 | }
22 | }
23 |
24 | allprojects {
25 | repositories {
26 | google()
27 | // jcenter()
28 | maven{ url'http://maven.aliyun.com/nexus/content/groups/public/' }
29 | maven{ url'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
30 | maven { url "https://jitpack.io" }
31 | mavenCentral()
32 |
33 | }
34 | }
35 |
36 | task clean(type: Delete) {
37 | delete rootProject.buildDir
38 | }
39 |
40 |
41 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 |
15 |
16 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Jun 04 11:10:29 CST 2019
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
7 |
--------------------------------------------------------------------------------
/screenShot/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/screenShot/1.png
--------------------------------------------------------------------------------
/screenShot/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/screenShot/2.png
--------------------------------------------------------------------------------
/screenShot/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/screenShot/3.png
--------------------------------------------------------------------------------
/screenShot/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/screenShot/4.png
--------------------------------------------------------------------------------
/screenShot/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/screenShot/5.png
--------------------------------------------------------------------------------
/screenShot/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/screenShot/6.png
--------------------------------------------------------------------------------
/screenShot/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/screenShot/7.png
--------------------------------------------------------------------------------
/screenShot/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/screenShot/8.png
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':storybooks', ':MVP'
2 |
--------------------------------------------------------------------------------
/storybooks/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/storybooks/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/storybooks/src/androidTest/java/com/winwang/storybooks/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks;
2 |
3 | /**
4 | * Instrumented test, which will execute on an Android device.
5 | *
6 | * @see Testing documentation
7 | */
8 | public class ExampleInstrumentedTest {
9 |
10 | public void useAppContext() {
11 |
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/storybooks/src/main/assets/fonts/heilizhi.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/assets/fonts/heilizhi.ttf
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/AppConfig.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks;
2 |
3 | /**
4 | * Created by WinWang on 2019/6/14
5 | * Description->
6 | */
7 | public class AppConfig {
8 | public static final boolean Debug = true;
9 |
10 | public static final String MD5_KEY = "0102030405060708"; //请求的MD5加密串
11 | }
12 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks;
2 |
3 | import android.app.Activity;
4 | import android.os.Bundle;
5 |
6 | /**
7 | * Skeleton of an Android Things activity.
8 | *
9 | * Android Things peripheral APIs are accessible through the class
10 | * PeripheralManagerService. For example, the snippet below will open a GPIO pin and
11 | * set it to HIGH:
12 | *
13 | *
{@code
14 | * PeripheralManagerService service = new PeripheralManagerService();
15 | * mLedGpio = service.openGpio("BCM6");
16 | * mLedGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);
17 | * mLedGpio.setValue(true);
18 | * }
19 | *
20 | * For more complex peripherals, look for an existing user-space driver, or implement one if none
21 | * is available.
22 | *
23 | * @see https://github.com/androidthings/contrib-drivers#readme
24 | */
25 | public class MainActivity extends Activity {
26 |
27 | @Override
28 | protected void onCreate(Bundle savedInstanceState) {
29 | super.onCreate(savedInstanceState);
30 | setContentView(R.layout.activity_main);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/adapter/HomeStoryAdapter.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.adapter;
2 |
3 | import android.support.annotation.Nullable;
4 | import android.widget.ImageView;
5 |
6 | import com.bumptech.glide.Glide;
7 | import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
8 | import com.bumptech.glide.request.RequestOptions;
9 | import com.chad.library.adapter.base.BaseQuickAdapter;
10 | import com.chad.library.adapter.base.BaseViewHolder;
11 | import com.jess.arms.utils.ArmsUtils;
12 | import com.winwang.storybooks.R;
13 | import com.winwang.storybooks.entity.StoryListBean;
14 |
15 | import java.util.List;
16 |
17 | /**
18 | * Created by WinWang on 2019/6/6
19 | * Description->
20 | */
21 | public class HomeStoryAdapter extends BaseQuickAdapter {
22 |
23 |
24 | private final RequestOptions mRequestOptions;
25 |
26 | public HomeStoryAdapter(int layoutResId, @Nullable List data) {
27 | super(layoutResId, data);
28 | mRequestOptions = new RequestOptions();
29 | mRequestOptions.placeholder(R.drawable.listen_zhanweifu);
30 | mRequestOptions.error(R.drawable.listen_zhanweifu);
31 | }
32 |
33 | @Override
34 | protected void convert(BaseViewHolder helper, StoryListBean.S1005Bean.Classlist1Bean item) {
35 | ImageView cover = (ImageView) helper.getView(R.id.iv_home_cover);
36 | helper.setText(R.id.tv_home_title, item.getName());
37 | Glide.with(mContext).load(item.getPrintscreen()).apply(mRequestOptions).apply(RequestOptions.bitmapTransform(new RoundedCorners(ArmsUtils.dip2px(mContext, 32)))).into(cover);
38 | // ImageConfigImpl.builder().url(item.getVideoImage()).imageRadius(20).imageView(cover).build();
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/adapter/MusicHomeAdapter.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.adapter;
2 |
3 | import android.content.res.AssetManager;
4 | import android.graphics.Typeface;
5 | import android.support.annotation.Nullable;
6 | import android.widget.ImageView;
7 | import android.widget.TextView;
8 |
9 | import com.bumptech.glide.Glide;
10 | import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
11 | import com.bumptech.glide.request.RequestOptions;
12 | import com.chad.library.adapter.base.BaseQuickAdapter;
13 | import com.chad.library.adapter.base.BaseViewHolder;
14 | import com.winwang.storybooks.R;
15 | import com.winwang.storybooks.entity.MusicHomeBean;
16 |
17 | import java.util.List;
18 |
19 | /**
20 | * Created by WinWang on 2019/6/28
21 | * Description->
22 | */
23 | public class MusicHomeAdapter extends BaseQuickAdapter {
24 |
25 | public MusicHomeAdapter(int layoutResId, @Nullable List data) {
26 | super(layoutResId, data);
27 | }
28 |
29 | @Override
30 | protected void convert(BaseViewHolder helper, MusicHomeBean.ListBean item) {
31 | ImageView cover = (ImageView) helper.getView(R.id.iv_music_home_box);
32 | Glide.with(mContext).load(item.getTitleimage()).apply(RequestOptions.bitmapTransform(new RoundedCorners(40))).into(cover);
33 | helper.setText(R.id.tv_music_home_title, item.getName());
34 | AssetManager mgr = mContext.getAssets();
35 | Typeface tf = Typeface.createFromAsset(mgr, "fonts/heilizhi.ttf");
36 | TextView title = (TextView) helper.getView(R.id.tv_music_home_title);
37 | title.setTypeface(tf);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/adapter/MusicListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.adapter;
2 |
3 | import android.content.res.AssetManager;
4 | import android.graphics.Typeface;
5 | import android.support.annotation.Nullable;
6 | import android.widget.ImageView;
7 | import android.widget.TextView;
8 |
9 | import com.bumptech.glide.Glide;
10 | import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
11 | import com.bumptech.glide.request.RequestOptions;
12 | import com.chad.library.adapter.base.BaseQuickAdapter;
13 | import com.chad.library.adapter.base.BaseViewHolder;
14 | import com.winwang.storybooks.R;
15 | import com.winwang.storybooks.entity.MusicListBean;
16 |
17 | import java.util.List;
18 |
19 | /**
20 | * Created by WinWang on 2019/6/28
21 | * Description->
22 | */
23 | public class MusicListAdapter extends BaseQuickAdapter {
24 |
25 | public MusicListAdapter(int layoutResId, @Nullable List data) {
26 | super(layoutResId, data);
27 | }
28 |
29 | @Override
30 | protected void convert(BaseViewHolder helper, MusicListBean.ClasslistBean item) {
31 | ImageView cover = (ImageView) helper.getView(R.id.iv_music_home_box);
32 | Glide.with(mContext).load(R.drawable.pic_tingting_moren).apply(RequestOptions.bitmapTransform(new RoundedCorners(40))).into(cover);
33 | helper.setText(R.id.tv_music_home_title, item.getName());
34 | AssetManager mgr = mContext.getAssets();
35 | Typeface tf = Typeface.createFromAsset(mgr, "fonts/heilizhi.ttf");
36 | TextView title = (TextView) helper.getView(R.id.tv_music_home_title);
37 | title.setTypeface(tf);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/adapter/StoryCatAdapter.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.adapter;
2 |
3 | import android.support.annotation.Nullable;
4 |
5 | import com.chad.library.adapter.base.BaseQuickAdapter;
6 | import com.chad.library.adapter.base.BaseViewHolder;
7 | import com.winwang.storybooks.entity.StoryInListBean;
8 |
9 | import java.util.List;
10 |
11 | /**
12 | * Created by WinWang on 2019/7/3
13 | * Description->
14 | */
15 | public class StoryCatAdapter extends BaseQuickAdapter {
16 |
17 | public StoryCatAdapter(int layoutResId, @Nullable List data) {
18 | super(layoutResId, data);
19 |
20 | }
21 |
22 | @Override
23 | protected void convert(BaseViewHolder helper, StoryInListBean.CategoryListBean item) {
24 |
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/adapter/StoryListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.adapter;
2 |
3 | import android.content.res.AssetManager;
4 | import android.graphics.Typeface;
5 | import android.support.annotation.Nullable;
6 | import android.widget.ImageView;
7 | import android.widget.TextView;
8 |
9 | import com.bumptech.glide.Glide;
10 | import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
11 | import com.bumptech.glide.request.RequestOptions;
12 | import com.chad.library.adapter.base.BaseQuickAdapter;
13 | import com.chad.library.adapter.base.BaseViewHolder;
14 | import com.winwang.storybooks.R;
15 | import com.winwang.storybooks.entity.StoryInListBean;
16 |
17 | import java.util.List;
18 |
19 | /**
20 | * Created by WinWang on 2019/7/1
21 | * Description->
22 | */
23 | public class StoryListAdapter extends BaseQuickAdapter {
24 |
25 | public StoryListAdapter(int layoutResId, @Nullable List data) {
26 | super(layoutResId, data);
27 | }
28 |
29 | @Override
30 | protected void convert(BaseViewHolder helper, StoryInListBean.ClasslistBean item) {
31 | ImageView cover = (ImageView) helper.getView(R.id.iv_music_home_box);
32 | Glide.with(mContext).load(item.getLllustration()).apply(RequestOptions.bitmapTransform(new RoundedCorners(40))).into(cover);
33 | helper.setText(R.id.tv_music_home_title, item.getName());
34 | AssetManager mgr = mContext.getAssets();
35 | Typeface tf = Typeface.createFromAsset(mgr, "fonts/heilizhi.ttf");
36 | TextView title = (TextView) helper.getView(R.id.tv_music_home_title);
37 | title.setTypeface(tf);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/adapter/TalksAdapter.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.adapter;
2 |
3 | import android.support.annotation.Nullable;
4 | import android.widget.ImageView;
5 |
6 | import com.bumptech.glide.Glide;
7 | import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
8 | import com.bumptech.glide.request.RequestOptions;
9 | import com.chad.library.adapter.base.BaseQuickAdapter;
10 | import com.chad.library.adapter.base.BaseViewHolder;
11 | import com.winwang.storybooks.R;
12 | import com.winwang.storybooks.entity.TalkBean;
13 |
14 | import java.util.List;
15 |
16 | /**
17 | * Created by WinWang on 2019/7/3
18 | * Description->
19 | */
20 | public class TalksAdapter extends BaseQuickAdapter {
21 |
22 | public TalksAdapter(int layoutResId, @Nullable List data) {
23 | super(layoutResId, data);
24 | }
25 |
26 | @Override
27 | protected void convert(BaseViewHolder helper, TalkBean.ListBean item) {
28 | String name = item.getName();
29 | helper.setText(R.id.tv_talk_title,name);
30 | ImageView cover = (ImageView) helper.getView(R.id.iv_talk_cover);
31 | Glide.with(mContext).load(item.getImage()).apply(RequestOptions.bitmapTransform(new RoundedCorners(40))).into(cover);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/app/EventBusTags.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.app;
2 |
3 | /**
4 | * ================================================
5 | * 放置 AndroidEventBus 的 Tag, 便于检索
6 | * Arms 核心库现在并不会依赖某个 EventBus, 要想使用 EventBus, 还请在项目中自行依赖对应的 EventBus
7 | * 现在支持两种 EventBus, greenrobot 的 EventBus 和畅销书 《Android源码设计模式解析与实战》的作者 何红辉 所作的 AndroidEventBus
8 | *
9 | * @see EventBusTags wiki 官方文档
10 | * Created by MVPArmsTemplate on 06/04/2019 13:45
11 | * Contact me
12 | * Follow me
13 | * ================================================
14 | */
15 | public interface EventBusTags {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/common/Constant.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.common;
2 |
3 | /**
4 | * Created by WinWang on 2019/6/18
5 | * Description->
6 | */
7 | public class Constant {
8 | }
9 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/common/RouterUrl.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.common;
2 |
3 | /**
4 | * Created by WinWang on 2019/6/18
5 | * Description->
6 | */
7 | public class RouterUrl {
8 | public static final String HOME_URL = "/app/homeAc"; //首页
9 | public static final String VIDEO_DETAIL_URL = "/app/videoDetail"; //视频详情页
10 | public static final String AUDIO_DETAIL_URL = "/app/audioDetail"; //音频详情页
11 | public static final String MUSIC_HOME = "/app/musicHomeAc";//音乐首页
12 | public static final String MUSIC_LIST = "/app/musicListAc";//音乐列表
13 | public static final String STORY_LIST = "/app/storyListAc";//故事列表列表
14 | public static final String TALK_LIST = "/app/talk_list";//演讲页面
15 | }
16 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/component/HomeComponent.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.component;
2 |
3 | import dagger.BindsInstance;
4 | import dagger.Component;
5 |
6 | import com.jess.arms.di.component.AppComponent;
7 |
8 | import com.winwang.storybooks.di.module.HomeModule;
9 | import com.winwang.storybooks.mvp.contract.HomeContract;
10 |
11 | import com.jess.arms.di.scope.ActivityScope;
12 | import com.winwang.storybooks.ui.activity.HomeActivity;
13 |
14 |
15 | /**
16 | * ================================================
17 | * Description:
18 | *
19 | * Created by MVPArmsTemplate on 06/04/2019 18:35
20 | * Contact me
21 | * Follow me
22 | * Star me
23 | * See me
24 | * 模版请保持更新
25 | * ================================================
26 | */
27 | @ActivityScope
28 | @Component(modules = HomeModule.class, dependencies = AppComponent.class)
29 | public interface HomeComponent {
30 | void inject(HomeActivity activity);
31 |
32 | @Component.Builder
33 | interface Builder {
34 | @BindsInstance
35 | HomeComponent.Builder view(HomeContract.View view);
36 |
37 | HomeComponent.Builder appComponent(AppComponent appComponent);
38 |
39 | HomeComponent build();
40 | }
41 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/component/MusicDetailComponent.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.component;
2 |
3 | import dagger.BindsInstance;
4 | import dagger.Component;
5 |
6 | import com.jess.arms.di.component.AppComponent;
7 |
8 | import com.winwang.storybooks.di.module.MusicDetailModule;
9 | import com.winwang.storybooks.mvp.contract.MusicDetailContract;
10 |
11 | import com.jess.arms.di.scope.ActivityScope;
12 | import com.winwang.storybooks.ui.activity.MusicDetailActivity;
13 |
14 |
15 | /**
16 | * ================================================
17 | * Description:
18 | *
19 | * Created by MVPArmsTemplate on 06/28/2019 17:22
20 | * Contact me
21 | * Follow me
22 | * Star me
23 | * See me
24 | * 模版请保持更新
25 | * ================================================
26 | */
27 | @ActivityScope
28 | @Component(modules = MusicDetailModule.class, dependencies = AppComponent.class)
29 | public interface MusicDetailComponent {
30 | void inject(MusicDetailActivity activity);
31 |
32 | @Component.Builder
33 | interface Builder {
34 | @BindsInstance
35 | MusicDetailComponent.Builder view(MusicDetailContract.View view);
36 |
37 | MusicDetailComponent.Builder appComponent(AppComponent appComponent);
38 |
39 | MusicDetailComponent build();
40 | }
41 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/component/MusicHomeComponent.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.component;
2 |
3 | import dagger.BindsInstance;
4 | import dagger.Component;
5 |
6 | import com.jess.arms.di.component.AppComponent;
7 |
8 | import com.winwang.storybooks.di.module.MusicHomeModule;
9 | import com.winwang.storybooks.mvp.contract.MusicHomeContract;
10 |
11 | import com.jess.arms.di.scope.ActivityScope;
12 | import com.winwang.storybooks.ui.activity.MusicHomeActivity;
13 |
14 |
15 | /**
16 | * ================================================
17 | * Description:
18 | *
19 | * Created by MVPArmsTemplate on 06/27/2019 16:27
20 | * Contact me
21 | * Follow me
22 | * Star me
23 | * See me
24 | * 模版请保持更新
25 | * ================================================
26 | */
27 | @ActivityScope
28 | @Component(modules = MusicHomeModule.class, dependencies = AppComponent.class)
29 | public interface MusicHomeComponent {
30 | void inject(MusicHomeActivity activity);
31 |
32 | @Component.Builder
33 | interface Builder {
34 | @BindsInstance
35 | MusicHomeComponent.Builder view(MusicHomeContract.View view);
36 |
37 | MusicHomeComponent.Builder appComponent(AppComponent appComponent);
38 |
39 | MusicHomeComponent build();
40 | }
41 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/component/MusicListComponent.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.component;
2 |
3 | import dagger.BindsInstance;
4 | import dagger.Component;
5 |
6 | import com.jess.arms.di.component.AppComponent;
7 |
8 | import com.winwang.storybooks.di.module.MusicListModule;
9 | import com.winwang.storybooks.mvp.contract.MusicListContract;
10 |
11 | import com.jess.arms.di.scope.ActivityScope;
12 | import com.winwang.storybooks.ui.activity.MusicListActivity;
13 |
14 |
15 | /**
16 | * ================================================
17 | * Description:
18 | *
19 | * Created by MVPArmsTemplate on 06/27/2019 17:02
20 | * Contact me
21 | * Follow me
22 | * Star me
23 | * See me
24 | * 模版请保持更新
25 | * ================================================
26 | */
27 | @ActivityScope
28 | @Component(modules = MusicListModule.class, dependencies = AppComponent.class)
29 | public interface MusicListComponent {
30 | void inject(MusicListActivity activity);
31 |
32 | @Component.Builder
33 | interface Builder {
34 | @BindsInstance
35 | MusicListComponent.Builder view(MusicListContract.View view);
36 |
37 | MusicListComponent.Builder appComponent(AppComponent appComponent);
38 |
39 | MusicListComponent build();
40 | }
41 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/component/MyRankComponent.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.component;
2 |
3 | import dagger.BindsInstance;
4 | import dagger.Component;
5 |
6 | import com.jess.arms.di.component.AppComponent;
7 |
8 | import com.winwang.storybooks.di.module.MyRankModule;
9 | import com.winwang.storybooks.mvp.contract.MyRankContract;
10 |
11 | import com.jess.arms.di.scope.FragmentScope;
12 | import com.winwang.storybooks.ui.fragment.MyRankFragment;
13 |
14 |
15 | /**
16 | * ================================================
17 | * Description:
18 | *
19 | * Created by MVPArmsTemplate on 07/03/2019 14:32
20 | * Contact me
21 | * Follow me
22 | * Star me
23 | * See me
24 | * 模版请保持更新
25 | * ================================================
26 | */
27 | @FragmentScope
28 | @Component(modules = MyRankModule.class, dependencies = AppComponent.class)
29 | public interface MyRankComponent {
30 | void inject(MyRankFragment fragment);
31 |
32 | @Component.Builder
33 | interface Builder {
34 | @BindsInstance
35 | MyRankComponent.Builder view(MyRankContract.View view);
36 |
37 | MyRankComponent.Builder appComponent(AppComponent appComponent);
38 |
39 | MyRankComponent build();
40 | }
41 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/component/MyTalkComponent.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.component;
2 |
3 | import dagger.BindsInstance;
4 | import dagger.Component;
5 |
6 | import com.jess.arms.di.component.AppComponent;
7 |
8 | import com.winwang.storybooks.di.module.MyTalkModule;
9 | import com.winwang.storybooks.mvp.contract.MyTalkContract;
10 |
11 | import com.jess.arms.di.scope.FragmentScope;
12 | import com.winwang.storybooks.ui.fragment.MyTalkFragment;
13 |
14 |
15 | /**
16 | * ================================================
17 | * Description:
18 | *
19 | * Created by MVPArmsTemplate on 07/03/2019 14:31
20 | * Contact me
21 | * Follow me
22 | * Star me
23 | * See me
24 | * 模版请保持更新
25 | * ================================================
26 | */
27 | @FragmentScope
28 | @Component(modules = MyTalkModule.class, dependencies = AppComponent.class)
29 | public interface MyTalkComponent {
30 | void inject(MyTalkFragment fragment);
31 |
32 | @Component.Builder
33 | interface Builder {
34 | @BindsInstance
35 | MyTalkComponent.Builder view(MyTalkContract.View view);
36 |
37 | MyTalkComponent.Builder appComponent(AppComponent appComponent);
38 |
39 | MyTalkComponent build();
40 | }
41 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/component/SplashComponent.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.component;
2 |
3 | import dagger.BindsInstance;
4 | import dagger.Component;
5 |
6 | import com.jess.arms.di.component.AppComponent;
7 |
8 | import com.winwang.storybooks.di.module.SplashModule;
9 | import com.winwang.storybooks.mvp.contract.SplashContract;
10 |
11 | import com.jess.arms.di.scope.ActivityScope;
12 | import com.winwang.storybooks.ui.activity.SplashActivity;
13 |
14 |
15 | /**
16 | * ================================================
17 | * Description:
18 | *
19 | * Created by MVPArmsTemplate on 06/04/2019 18:39
20 | * Contact me
21 | * Follow me
22 | * Star me
23 | * See me
24 | * 模版请保持更新
25 | * ================================================
26 | */
27 | @ActivityScope
28 | @Component(modules = SplashModule.class, dependencies = AppComponent.class)
29 | public interface SplashComponent {
30 | void inject(SplashActivity activity);
31 |
32 | @Component.Builder
33 | interface Builder {
34 | @BindsInstance
35 | SplashComponent.Builder view(SplashContract.View view);
36 |
37 | SplashComponent.Builder appComponent(AppComponent appComponent);
38 |
39 | SplashComponent build();
40 | }
41 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/component/StoryListComponent.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.component;
2 |
3 | import dagger.BindsInstance;
4 | import dagger.Component;
5 |
6 | import com.jess.arms.di.component.AppComponent;
7 |
8 | import com.winwang.storybooks.di.module.StoryListModule;
9 | import com.winwang.storybooks.mvp.contract.StoryListContract;
10 |
11 | import com.jess.arms.di.scope.ActivityScope;
12 | import com.winwang.storybooks.ui.activity.StoryListActivity;
13 |
14 |
15 | /**
16 | * ================================================
17 | * Description:
18 | *
19 | * Created by MVPArmsTemplate on 07/01/2019 18:21
20 | * Contact me
21 | * Follow me
22 | * Star me
23 | * See me
24 | * 模版请保持更新
25 | * ================================================
26 | */
27 | @ActivityScope
28 | @Component(modules = StoryListModule.class, dependencies = AppComponent.class)
29 | public interface StoryListComponent {
30 | void inject(StoryListActivity activity);
31 |
32 | @Component.Builder
33 | interface Builder {
34 | @BindsInstance
35 | StoryListComponent.Builder view(StoryListContract.View view);
36 |
37 | StoryListComponent.Builder appComponent(AppComponent appComponent);
38 |
39 | StoryListComponent build();
40 | }
41 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/component/TalkComponent.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.component;
2 |
3 | import dagger.BindsInstance;
4 | import dagger.Component;
5 |
6 | import com.jess.arms.di.component.AppComponent;
7 |
8 | import com.winwang.storybooks.di.module.TalkModule;
9 | import com.winwang.storybooks.mvp.contract.TalkContract;
10 |
11 | import com.jess.arms.di.scope.ActivityScope;
12 | import com.winwang.storybooks.ui.activity.TalkActivity;
13 |
14 |
15 | /**
16 | * ================================================
17 | * Description:
18 | *
19 | * Created by MVPArmsTemplate on 07/02/2019 19:52
20 | * Contact me
21 | * Follow me
22 | * Star me
23 | * See me
24 | * 模版请保持更新
25 | * ================================================
26 | */
27 | @ActivityScope
28 | @Component(modules = TalkModule.class, dependencies = AppComponent.class)
29 | public interface TalkComponent {
30 | void inject(TalkActivity activity);
31 |
32 | @Component.Builder
33 | interface Builder {
34 | @BindsInstance
35 | TalkComponent.Builder view(TalkContract.View view);
36 |
37 | TalkComponent.Builder appComponent(AppComponent appComponent);
38 |
39 | TalkComponent build();
40 | }
41 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/component/TalksComponent.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.component;
2 |
3 | import dagger.BindsInstance;
4 | import dagger.Component;
5 |
6 | import com.jess.arms.di.component.AppComponent;
7 |
8 | import com.winwang.storybooks.di.module.TalksModule;
9 | import com.winwang.storybooks.mvp.contract.TalksContract;
10 |
11 | import com.jess.arms.di.scope.FragmentScope;
12 | import com.winwang.storybooks.ui.fragment.TalksFragment;
13 |
14 |
15 | /**
16 | * ================================================
17 | * Description:
18 | *
19 | * Created by MVPArmsTemplate on 07/03/2019 16:50
20 | * Contact me
21 | * Follow me
22 | * Star me
23 | * See me
24 | * 模版请保持更新
25 | * ================================================
26 | */
27 | @FragmentScope
28 | @Component(modules = TalksModule.class, dependencies = AppComponent.class)
29 | public interface TalksComponent {
30 | void inject(TalksFragment fragment);
31 |
32 | @Component.Builder
33 | interface Builder {
34 | @BindsInstance
35 | TalksComponent.Builder view(TalksContract.View view);
36 |
37 | TalksComponent.Builder appComponent(AppComponent appComponent);
38 |
39 | TalksComponent build();
40 | }
41 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/component/VideoDetailComponent.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.component;
2 |
3 | import dagger.BindsInstance;
4 | import dagger.Component;
5 |
6 | import com.jess.arms.di.component.AppComponent;
7 |
8 | import com.winwang.storybooks.di.module.VideoDetailModule;
9 | import com.winwang.storybooks.mvp.contract.VideoDetailContract;
10 |
11 | import com.jess.arms.di.scope.ActivityScope;
12 | import com.winwang.storybooks.ui.activity.VideoDetailActivity;
13 |
14 |
15 | /**
16 | * ================================================
17 | * Description:
18 | *
19 | * Created by MVPArmsTemplate on 06/13/2019 19:33
20 | * Contact me
21 | * Follow me
22 | * Star me
23 | * See me
24 | * 模版请保持更新
25 | * ================================================
26 | */
27 | @ActivityScope
28 | @Component(modules = VideoDetailModule.class, dependencies = AppComponent.class)
29 | public interface VideoDetailComponent {
30 | void inject(VideoDetailActivity activity);
31 |
32 | @Component.Builder
33 | interface Builder {
34 | @BindsInstance
35 | VideoDetailComponent.Builder view(VideoDetailContract.View view);
36 |
37 | VideoDetailComponent.Builder appComponent(AppComponent appComponent);
38 |
39 | VideoDetailComponent build();
40 | }
41 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/module/HomeModule.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.module;
2 |
3 | import android.support.annotation.NonNull;
4 | import android.support.v7.widget.RecyclerView;
5 |
6 | import com.chad.library.adapter.base.BaseQuickAdapter;
7 | import com.chad.library.adapter.base.BaseViewHolder;
8 | import com.jess.arms.di.scope.ActivityScope;
9 |
10 | import dagger.Binds;
11 | import dagger.Module;
12 | import dagger.Provides;
13 |
14 | import com.leochuan.CircleLayoutManager;
15 | import com.leochuan.CircleScaleLayoutManager;
16 | import com.winwang.storybooks.R;
17 | import com.winwang.storybooks.adapter.HomeStoryAdapter;
18 | import com.winwang.storybooks.entity.StoryListBean;
19 | import com.winwang.storybooks.mvp.contract.HomeContract;
20 | import com.winwang.storybooks.mvp.model.HomeModel;
21 |
22 | import java.util.ArrayList;
23 | import java.util.List;
24 |
25 | import javax.inject.Named;
26 |
27 |
28 | /**
29 | * ================================================
30 | * Description:
31 | *
32 | * Created by MVPArmsTemplate on 06/04/2019 18:35
33 | * Contact me
34 | * Follow me
35 | * Star me
36 | * See me
37 | * 模版请保持更新
38 | * ================================================
39 | */
40 | @Module
41 | public abstract class HomeModule {
42 |
43 | @Binds
44 | abstract HomeContract.Model bindHomeModel(HomeModel model);
45 |
46 | @ActivityScope
47 | @Provides
48 | static CircleScaleLayoutManager provideLayoutManager(HomeContract.View view) {
49 | return new CircleScaleLayoutManager(view.getActivity());
50 | }
51 |
52 | @ActivityScope
53 | @Provides
54 | static List storyList() {
55 | return new ArrayList<>();
56 | }
57 |
58 |
59 | @ActivityScope
60 | @Provides
61 | static HomeStoryAdapter provideStoryAdapter(List storyList) {
62 | return new HomeStoryAdapter(R.layout.item_story_music_home_layout, storyList);
63 | }
64 |
65 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/module/MusicDetailModule.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.module;
2 |
3 | import com.jess.arms.di.scope.ActivityScope;
4 |
5 | import dagger.Binds;
6 | import dagger.Module;
7 | import dagger.Provides;
8 |
9 | import com.winwang.storybooks.mvp.contract.MusicDetailContract;
10 | import com.winwang.storybooks.mvp.model.MusicDetailModel;
11 |
12 |
13 | /**
14 | * ================================================
15 | * Description:
16 | *
17 | * Created by MVPArmsTemplate on 06/28/2019 17:22
18 | * Contact me
19 | * Follow me
20 | * Star me
21 | * See me
22 | * 模版请保持更新
23 | * ================================================
24 | */
25 | @Module
26 | public abstract class MusicDetailModule {
27 |
28 | @Binds
29 | abstract MusicDetailContract.Model bindMusicDetailModel(MusicDetailModel model);
30 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/module/MusicHomeModule.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.module;
2 |
3 | import android.support.v7.widget.LinearLayoutManager;
4 |
5 | import com.jess.arms.di.scope.ActivityScope;
6 |
7 | import dagger.Binds;
8 | import dagger.Module;
9 | import dagger.Provides;
10 |
11 | import com.winwang.storybooks.R;
12 | import com.winwang.storybooks.adapter.MusicHomeAdapter;
13 | import com.winwang.storybooks.entity.MusicHomeBean;
14 | import com.winwang.storybooks.mvp.contract.MusicHomeContract;
15 | import com.winwang.storybooks.mvp.model.MusicHomeModel;
16 |
17 | import java.util.ArrayList;
18 | import java.util.List;
19 |
20 |
21 | /**
22 | * ================================================
23 | * Description:
24 | *
25 | * Created by MVPArmsTemplate on 06/27/2019 16:27
26 | * Contact me
27 | * Follow me
28 | * Star me
29 | * See me
30 | * 模版请保持更新
31 | * ================================================
32 | */
33 | @Module
34 | public abstract class MusicHomeModule {
35 |
36 | @Binds
37 | abstract MusicHomeContract.Model bindMusicHomeModel(MusicHomeModel model);
38 |
39 |
40 | @ActivityScope
41 | @Provides
42 | static LinearLayoutManager provideLayoutManager(MusicHomeContract.View mView) {
43 | return new LinearLayoutManager(mView.getActivity(),LinearLayoutManager.HORIZONTAL,false);
44 | }
45 |
46 |
47 | @ActivityScope
48 | @Provides
49 | static List provideList() {
50 | return new ArrayList<>();
51 | }
52 |
53 | @ActivityScope
54 | @Provides
55 | static MusicHomeAdapter provideAdatper(List dataList) {
56 | return new MusicHomeAdapter(R.layout.item_music_home_layout, dataList);
57 | }
58 |
59 |
60 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/module/MusicListModule.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.module;
2 |
3 | import android.support.v7.widget.LinearLayoutManager;
4 |
5 | import com.jess.arms.di.scope.ActivityScope;
6 |
7 | import dagger.Binds;
8 | import dagger.Module;
9 | import dagger.Provides;
10 |
11 | import com.winwang.storybooks.R;
12 | import com.winwang.storybooks.adapter.MusicListAdapter;
13 | import com.winwang.storybooks.entity.MusicListBean;
14 | import com.winwang.storybooks.mvp.contract.MusicListContract;
15 | import com.winwang.storybooks.mvp.model.MusicListModel;
16 |
17 | import java.util.ArrayList;
18 | import java.util.List;
19 |
20 |
21 | /**
22 | * ================================================
23 | * Description:
24 | *
25 | * Created by MVPArmsTemplate on 06/27/2019 17:02
26 | * Contact me
27 | * Follow me
28 | * Star me
29 | * See me
30 | * 模版请保持更新
31 | * ================================================
32 | */
33 | @Module
34 | public abstract class MusicListModule {
35 |
36 | @Binds
37 | abstract MusicListContract.Model bindMusicListModel(MusicListModel model);
38 |
39 | @ActivityScope
40 | @Provides
41 | static LinearLayoutManager provideLayoutManager(MusicListContract.View mView) {
42 | return new LinearLayoutManager(mView.getActivity(), LinearLayoutManager.HORIZONTAL, false);
43 | }
44 |
45 |
46 | @ActivityScope
47 | @Provides
48 | static List provideDataList() {
49 | return new ArrayList<>();
50 | }
51 |
52 |
53 | @ActivityScope
54 | @Provides
55 | static MusicListAdapter provideAdapter(List dataList) {
56 | return new MusicListAdapter(R.layout.item_music_list_layout, dataList);
57 | }
58 |
59 |
60 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/module/MyRankModule.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.module;
2 |
3 | import com.jess.arms.di.scope.FragmentScope;
4 |
5 | import dagger.Binds;
6 | import dagger.Module;
7 | import dagger.Provides;
8 |
9 | import com.winwang.storybooks.mvp.contract.MyRankContract;
10 | import com.winwang.storybooks.mvp.model.MyRankModel;
11 |
12 |
13 | /**
14 | * ================================================
15 | * Description:
16 | *
17 | * Created by MVPArmsTemplate on 07/03/2019 14:32
18 | * Contact me
19 | * Follow me
20 | * Star me
21 | * See me
22 | * 模版请保持更新
23 | * ================================================
24 | */
25 | @Module
26 | public abstract class MyRankModule {
27 |
28 | @Binds
29 | abstract MyRankContract.Model bindMyRankModel(MyRankModel model);
30 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/module/MyTalkModule.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.module;
2 |
3 | import android.support.v4.app.Fragment;
4 |
5 | import com.jess.arms.base.AdapterViewPager;
6 | import com.jess.arms.di.scope.FragmentScope;
7 |
8 | import dagger.Binds;
9 | import dagger.Module;
10 | import dagger.Provides;
11 |
12 | import com.winwang.storybooks.mvp.contract.MyTalkContract;
13 | import com.winwang.storybooks.mvp.model.MyTalkModel;
14 | import com.winwang.storybooks.ui.fragment.TalksFragment;
15 |
16 | import java.util.ArrayList;
17 |
18 |
19 | /**
20 | * ================================================
21 | * Description:
22 | *
23 | * Created by MVPArmsTemplate on 07/03/2019 14:31
24 | * Contact me
25 | * Follow me
26 | * Star me
27 | * See me
28 | * 模版请保持更新
29 | * ================================================
30 | */
31 | @Module
32 | public abstract class MyTalkModule {
33 |
34 | static String[] titles = {"故事", "儿歌", "唐诗", "国学"};
35 |
36 | @Binds
37 | abstract MyTalkContract.Model bindMyTalkModel(MyTalkModel model);
38 |
39 |
40 | @FragmentScope
41 | @Provides
42 | static AdapterViewPager provideVpAdapter(MyTalkContract.View view) {
43 | ArrayList fragments = new ArrayList<>();
44 | for (String title : titles) {
45 | fragments.add(TalksFragment.newInstance());
46 | }
47 | return new AdapterViewPager(view.getFragment().getChildFragmentManager(), fragments, titles);
48 | }
49 |
50 |
51 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/module/SplashModule.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.module;
2 |
3 | import com.jess.arms.di.scope.ActivityScope;
4 |
5 | import dagger.Binds;
6 | import dagger.Module;
7 | import dagger.Provides;
8 |
9 | import com.winwang.storybooks.mvp.contract.SplashContract;
10 | import com.winwang.storybooks.mvp.model.SplashModel;
11 |
12 |
13 | /**
14 | * ================================================
15 | * Description:
16 | *
17 | * Created by MVPArmsTemplate on 06/04/2019 18:39
18 | * Contact me
19 | * Follow me
20 | * Star me
21 | * See me
22 | * 模版请保持更新
23 | * ================================================
24 | */
25 | @Module
26 | public abstract class SplashModule {
27 |
28 | @Binds
29 | abstract SplashContract.Model bindSplashModel(SplashModel model);
30 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/module/TalkModule.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.module;
2 |
3 | import android.support.v4.app.Fragment;
4 |
5 | import com.jess.arms.base.AdapterViewPager;
6 | import com.jess.arms.di.scope.ActivityScope;
7 |
8 | import dagger.Binds;
9 | import dagger.Module;
10 | import dagger.Provides;
11 |
12 | import com.winwang.storybooks.mvp.contract.TalkContract;
13 | import com.winwang.storybooks.mvp.model.TalkModel;
14 | import com.winwang.storybooks.ui.fragment.MyRankFragment;
15 | import com.winwang.storybooks.ui.fragment.MyTalkFragment;
16 |
17 | import java.util.ArrayList;
18 | import java.util.List;
19 |
20 |
21 | /**
22 | * ================================================
23 | * Description:
24 | *
25 | * Created by MVPArmsTemplate on 07/02/2019 19:52
26 | * Contact me
27 | * Follow me
28 | * Star me
29 | * See me
30 | * 模版请保持更新
31 | * ================================================
32 | */
33 | @Module
34 | public abstract class TalkModule {
35 |
36 | @Binds
37 | abstract TalkContract.Model bindTalkModel(TalkModel model);
38 |
39 |
40 | @ActivityScope
41 | @Provides
42 | static List provideFragmentList() {
43 | return new ArrayList<>();
44 | }
45 |
46 |
47 | @ActivityScope
48 | @Provides
49 | static AdapterViewPager provideVpAdapter(TalkContract.View view, List fragmentList) {
50 | return new AdapterViewPager(view.getActivity().getSupportFragmentManager(), fragmentList);
51 | }
52 |
53 |
54 | @ActivityScope
55 | @Provides
56 | static MyTalkFragment provideTalkFragment() {
57 | return MyTalkFragment.newInstance();
58 | }
59 |
60 |
61 | @ActivityScope
62 | @Provides
63 |
64 | static MyRankFragment provideRankFragment() {
65 | return MyRankFragment.newInstance();
66 | }
67 |
68 |
69 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/module/TalksModule.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.module;
2 |
3 | import android.support.v7.widget.GridLayoutManager;
4 |
5 | import com.jess.arms.di.scope.FragmentScope;
6 |
7 | import dagger.Binds;
8 | import dagger.Module;
9 | import dagger.Provides;
10 |
11 | import com.winwang.storybooks.R;
12 | import com.winwang.storybooks.adapter.TalksAdapter;
13 | import com.winwang.storybooks.entity.TalkBean;
14 | import com.winwang.storybooks.mvp.contract.TalksContract;
15 | import com.winwang.storybooks.mvp.model.TalksModel;
16 |
17 | import java.util.ArrayList;
18 | import java.util.List;
19 |
20 |
21 | /**
22 | * ================================================
23 | * Description:
24 | *
25 | * Created by MVPArmsTemplate on 07/03/2019 16:50
26 | * Contact me
27 | * Follow me
28 | * Star me
29 | * See me
30 | * 模版请保持更新
31 | * ================================================
32 | */
33 | @Module
34 | public abstract class TalksModule {
35 |
36 | @Binds
37 | abstract TalksContract.Model bindTalksModel(TalksModel model);
38 |
39 |
40 | @FragmentScope
41 | @Provides
42 | static List provideDataList() {
43 | return new ArrayList<>();
44 | }
45 |
46 | @FragmentScope
47 | @Provides
48 | static TalksAdapter provideAdapter(List dataList) {
49 | return new TalksAdapter(R.layout.item_talk_rank_layout, dataList);
50 | }
51 |
52 | @FragmentScope
53 | @Provides
54 | static GridLayoutManager provideManager(TalksContract.View view) {
55 | return new GridLayoutManager(view.getContexts(), 3);
56 | }
57 |
58 |
59 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/di/module/VideoDetailModule.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.di.module;
2 |
3 | import com.jess.arms.di.scope.ActivityScope;
4 |
5 | import dagger.Binds;
6 | import dagger.Module;
7 | import dagger.Provides;
8 |
9 | import com.winwang.storybooks.mvp.contract.VideoDetailContract;
10 | import com.winwang.storybooks.mvp.model.VideoDetailModel;
11 |
12 |
13 | /**
14 | * ================================================
15 | * Description:
16 | *
17 | * Created by MVPArmsTemplate on 06/13/2019 19:33
18 | * Contact me
19 | * Follow me
20 | * Star me
21 | * See me
22 | * 模版请保持更新
23 | * ================================================
24 | */
25 | @Module
26 | public abstract class VideoDetailModule {
27 |
28 | @Binds
29 | abstract VideoDetailContract.Model bindVideoDetailModel(VideoDetailModel model);
30 |
31 |
32 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/entity/BaseBean.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.entity;
2 |
3 | /**
4 | * Created by WinWang on 2019/6/16
5 | * Description->
6 | */
7 | public class BaseBean {
8 | public String resultcode;
9 | public String message;
10 |
11 | public String getResultcode() {
12 | return resultcode;
13 | }
14 |
15 | public void setResultcode(String resultcode) {
16 | this.resultcode = resultcode;
17 | }
18 |
19 | public String getMessage() {
20 | return message;
21 | }
22 |
23 | public void setMessage(String message) {
24 | this.message = message;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/entity/VideoBean.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.entity;
2 |
3 | /**
4 | * Created by WinWang on 2019/6/14
5 | * Description->
6 | */
7 | public class VideoBean {
8 | /**
9 | * abs_speed : 2770
10 | * e : 0
11 | * h : 0
12 | * l : http://baiducdnct.inter.iqiyi.com/videos/v0/20190518/0f/50/5f6a08da41a8b7318fc27212302310fa.f4v?key=07801d22ca44cbb814bce9ea557288cb8&dis_k=e492c1fcffe3c2b6bedcc68936868cc5&dis_t=1560509052&dis_dz=CT-ShangHai&dis_st=103&src=iqiyi.com&uuid=b49d01eb-5d037a7c-af&qd_ip=2f5feb97&qd_uid=0&qd_vipdyn=0&qd_k=b21bfcbdfa9de3e040f2b0ad1abc14be&qd_aid=229185901&qd_stert=0&qd_tvid=1314426800&qd_p=2f5feb97&qd_tm=1560508916511&qd_index=1&qd_src=2_22_222&qyid=94ea74350f3edc3ddc7c4c4576e60e3f&qd_vip=0&qd_vipres=0
13 | * mrc : 3
14 | * t : CT|ShangHai-180.157.1.235
15 | * z : baiducdn_ct
16 | */
17 |
18 | private int abs_speed;
19 | private String e;
20 | private String h;
21 | private String l;
22 | private String mrc;
23 | private String t;
24 | private String z;
25 |
26 | public int getAbs_speed() {
27 | return abs_speed;
28 | }
29 |
30 | public void setAbs_speed(int abs_speed) {
31 | this.abs_speed = abs_speed;
32 | }
33 |
34 | public String getE() {
35 | return e;
36 | }
37 |
38 | public void setE(String e) {
39 | this.e = e;
40 | }
41 |
42 | public String getH() {
43 | return h;
44 | }
45 |
46 | public void setH(String h) {
47 | this.h = h;
48 | }
49 |
50 | public String getL() {
51 | return l;
52 | }
53 |
54 | public void setL(String l) {
55 | this.l = l;
56 | }
57 |
58 | public String getMrc() {
59 | return mrc;
60 | }
61 |
62 | public void setMrc(String mrc) {
63 | this.mrc = mrc;
64 | }
65 |
66 | public String getT() {
67 | return t;
68 | }
69 |
70 | public void setT(String t) {
71 | this.t = t;
72 | }
73 |
74 | public String getZ() {
75 | return z;
76 | }
77 |
78 | public void setZ(String z) {
79 | this.z = z;
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/event/MusicEvent.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.event;
2 |
3 | /**
4 | * Created by WinWang on 2019/6/18
5 | * Description->
6 | */
7 | public class MusicEvent {
8 | public String eventName;
9 |
10 | public MusicEvent(String eventName) {
11 | this.eventName = eventName;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/http/CacheApi.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.http;
2 |
3 |
4 | import com.winwang.storybooks.entity.StoryListBean;
5 | import com.winwang.storybooks.entity.VideoBean;
6 | import com.winwang.storybooks.entity.VideoDetailBean;
7 |
8 | import java.util.concurrent.TimeUnit;
9 |
10 | import io.reactivex.Observable;
11 | import io.rx_cache2.DynamicKey;
12 | import io.rx_cache2.EvictDynamicKey;
13 | import io.rx_cache2.LifeCache;
14 |
15 | /**
16 | * Created by WinWang on 2019/6/14
17 | * Description->
18 | */
19 | public interface CacheApi {
20 | /**
21 | * 首页获取故事列表
22 | *
23 | * @param story
24 | * @param key
25 | * @param key
26 | * @return
27 | */
28 | @LifeCache(duration = 7, timeUnit = TimeUnit.DAYS)
29 | Observable getStoryList(Observable story, DynamicKey key, EvictDynamicKey keyE);
30 |
31 |
32 | /**
33 | * 获取视频详情
34 | *
35 | * @param story
36 | * @param key
37 | * @param key
38 | * @return
39 | */
40 | @LifeCache(duration = 7, timeUnit = TimeUnit.DAYS)
41 | Observable getVideoDetail(Observable story, DynamicKey key, EvictDynamicKey keyE);
42 |
43 |
44 | /**
45 | * 获取视频播放链接
46 | *
47 | * @param story
48 | * @param key
49 | * @param key
50 | * @return
51 | */
52 | @LifeCache(duration = 7, timeUnit = TimeUnit.DAYS)
53 | Observable getVideoDetailUrl(Observable story, DynamicKey key, EvictDynamicKey keyE);
54 |
55 |
56 | }
57 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/http/RequestParams.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.http;
2 |
3 | import com.alibaba.fastjson.JSONObject;
4 | import com.blankj.utilcode.util.EncryptUtils;
5 | import com.winwang.storybooks.AppConfig;
6 |
7 | import java.util.LinkedHashMap;
8 |
9 | /**
10 | * Created by WinWang on 2019/6/14
11 | * Description->请求公共参数封装
12 | */
13 | public class RequestParams {
14 |
15 | private String version = "1.2.3.0";
16 | private String merchantid = "10000";
17 | private String clienttype = "3";
18 | private String clientversion = "1.2.3.0";
19 | private String IMEI = "864329033907351";
20 | private String UserID = "225903";
21 | private String advsource = "Oppo";
22 |
23 |
24 | /**
25 | * 经测试废弃,md5加密对顺序有要求
26 | *
27 | * @param hashMap
28 | * @return
29 | */
30 | @Deprecated
31 | public String getParams(LinkedHashMap hashMap) {
32 | StringBuilder builder = new StringBuilder();
33 | JSONObject jsonObject = new JSONObject();
34 | for (String s : hashMap.keySet()) {
35 | String value = hashMap.get(s);
36 | jsonObject.put(s, value);
37 | builder.append(value);
38 | }
39 | jsonObject.put("version", version);
40 | builder.append(version);
41 | jsonObject.put("merchantid", merchantid);
42 | builder.append(merchantid);
43 | jsonObject.put("clienttype", clienttype);
44 | builder.append(clienttype);
45 | jsonObject.put("clientversion", clientversion);
46 | builder.append(clientversion);
47 | jsonObject.put("IMEI", IMEI);
48 | builder.append(IMEI);
49 | jsonObject.put("UserID", UserID);
50 | builder.append(UserID);
51 | jsonObject.put("advsource", advsource);
52 | builder.append(advsource);
53 | String md5 = EncryptUtils.encryptMD5ToString(builder.toString() + AppConfig.MD5_KEY);
54 | jsonObject.put("md", md5);
55 | return jsonObject.toJSONString();
56 | }
57 |
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/http/UrlConfig.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.http;
2 |
3 | /**
4 | * Created by WinWang on 2019/6/5
5 | * Description->
6 | */
7 | public class UrlConfig {
8 | public static final String BASEURL = "http://tutugushiapi.tutuerge.com";
9 | }
10 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/interfaces/PlayCompleteListener.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.interfaces;
2 |
3 | /**
4 | * Created by WinWang on 2019/6/17
5 | * Description->
6 | */
7 | public interface PlayCompleteListener {
8 | void onComplete();
9 |
10 | void onPlayerPause();
11 |
12 | void onPlayerPlay();
13 |
14 | default void onUIClick() {
15 |
16 | }
17 |
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/loadingcallback/AnimateCallback.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.loadingcallback;
2 |
3 | import android.content.Context;
4 | import android.view.View;
5 | import android.view.animation.Animation;
6 | import android.view.animation.LinearInterpolator;
7 | import android.view.animation.RotateAnimation;
8 | import android.widget.Toast;
9 |
10 | import com.kingja.loadsir.callback.Callback;
11 | import com.winwang.storybooks.R;
12 |
13 |
14 |
15 | public class AnimateCallback extends Callback {
16 |
17 | private Context context;
18 | private View animateView;
19 |
20 | @Override
21 | protected int onCreateView() {
22 | return R.layout.layout_animate;
23 | }
24 |
25 | @Override
26 | protected void onViewCreate(Context context, View view) {
27 | super.onViewCreate(context, view);
28 | }
29 |
30 | @Override
31 | public void onAttach(Context context, View view) {
32 | this.context = context;
33 | animateView = view.findViewById(R.id.view_animate);
34 | Animation animation = new RotateAnimation(0, 359, Animation.RELATIVE_TO_SELF,
35 | 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
36 | animation.setDuration(1000);
37 | animation.setRepeatCount(Integer.MAX_VALUE);
38 | animation.setFillAfter(true);
39 | animation.setInterpolator(new LinearInterpolator());
40 | animateView.startAnimation(animation);
41 | Toast.makeText(context.getApplicationContext(), "start animation", Toast.LENGTH_SHORT).show();
42 | }
43 |
44 | @Override
45 | public void onDetach() {
46 | super.onDetach();
47 | if (animateView != null) {
48 | animateView.clearAnimation();
49 | }
50 | Toast.makeText(context.getApplicationContext(), "stop animation", Toast.LENGTH_SHORT).show();
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/loadingcallback/CustomCallback.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.loadingcallback;
2 |
3 | import android.content.Context;
4 | import android.view.View;
5 | import android.widget.Toast;
6 |
7 | import com.kingja.loadsir.callback.Callback;
8 | import com.winwang.storybooks.R;
9 |
10 |
11 | public class CustomCallback extends Callback {
12 |
13 | @Override
14 | protected int onCreateView() {
15 | return R.layout.layout_custom;
16 | }
17 |
18 | @Override
19 | protected boolean onReloadEvent(final Context context, View view) {
20 | Toast.makeText(context.getApplicationContext(), "Hello buddy, how r u! :p", Toast.LENGTH_SHORT).show();
21 | (view.findViewById(R.id.iv_gift)).setOnClickListener(new View.OnClickListener() {
22 | @Override
23 | public void onClick(View v) {
24 | Toast.makeText(context.getApplicationContext(), "It's your gift! :p", Toast.LENGTH_SHORT).show();
25 | }
26 | });
27 | return true;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/loadingcallback/EmptyCallback.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.loadingcallback;
2 |
3 | import com.kingja.loadsir.callback.Callback;
4 | import com.winwang.storybooks.R;
5 |
6 |
7 |
8 | public class EmptyCallback extends Callback {
9 |
10 | @Override
11 | protected int onCreateView() {
12 | return R.layout.layout_empty;
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/loadingcallback/ErrorCallback.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.loadingcallback;
2 |
3 |
4 | import com.kingja.loadsir.callback.Callback;
5 | import com.winwang.storybooks.R;
6 |
7 |
8 | public class ErrorCallback extends Callback {
9 | @Override
10 | protected int onCreateView() {
11 | return R.layout.layout_error;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/loadingcallback/LoadingCallback.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.loadingcallback;
2 |
3 | import android.content.Context;
4 | import android.view.View;
5 |
6 | import com.kingja.loadsir.callback.Callback;
7 | import com.winwang.storybooks.R;
8 |
9 |
10 |
11 |
12 | public class LoadingCallback extends Callback {
13 |
14 | @Override
15 | protected int onCreateView() {
16 | return R.layout.layout_loading;
17 | }
18 |
19 | @Override
20 | public boolean getSuccessVisible() {
21 | return super.getSuccessVisible();
22 | }
23 |
24 | @Override
25 | protected boolean onReloadEvent(Context context, View view) {
26 | return true;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/loadingcallback/LottieEmptyCallback.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.loadingcallback;
2 |
3 | import com.kingja.loadsir.callback.Callback;
4 | import com.winwang.storybooks.R;
5 |
6 |
7 | public class LottieEmptyCallback extends Callback {
8 |
9 | @Override
10 | protected int onCreateView() {
11 | return R.layout.layout_lottie_empty;
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/loadingcallback/LottieLoadingCallback.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.loadingcallback;
2 |
3 | import android.content.Context;
4 | import android.view.View;
5 |
6 | import com.kingja.loadsir.callback.Callback;
7 | import com.winwang.storybooks.R;
8 |
9 |
10 |
11 | public class LottieLoadingCallback extends Callback {
12 |
13 | @Override
14 | protected int onCreateView() {
15 | return R.layout.layout_lottie_loading;
16 | }
17 |
18 | @Override
19 | protected boolean onReloadEvent(Context context, View view) {
20 | return true;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/loadingcallback/PlaceholderCallback.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.loadingcallback;
2 |
3 | import android.content.Context;
4 | import android.view.View;
5 |
6 | import com.kingja.loadsir.callback.Callback;
7 | import com.winwang.storybooks.R;
8 |
9 |
10 | public class PlaceholderCallback extends Callback {
11 |
12 | @Override
13 | protected int onCreateView() {
14 | return R.layout.layout_placeholder;
15 | }
16 |
17 | @Override
18 | protected boolean onReloadEvent(Context context, View view) {
19 | return true;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/loadingcallback/TimeoutCallback.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.loadingcallback;
2 |
3 | import android.content.Context;
4 | import android.view.View;
5 | import android.widget.Toast;
6 |
7 | import com.kingja.loadsir.callback.Callback;
8 | import com.winwang.storybooks.R;
9 |
10 | public class TimeoutCallback extends Callback {
11 |
12 | @Override
13 | protected int onCreateView() {
14 | return R.layout.layout_timeout;
15 | }
16 |
17 | @Override
18 | protected boolean onReloadEvent(Context context, View view) {
19 | Toast.makeText(context.getApplicationContext(), "Connecting to the network again!", Toast.LENGTH_SHORT).show();
20 | return false;
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/contract/HomeContract.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.contract;
2 |
3 |
4 | import android.app.Activity;
5 |
6 | import com.jess.arms.mvp.IModel;
7 | import com.jess.arms.mvp.IView;
8 | import com.winwang.storybooks.entity.StoryListBean;
9 |
10 | import io.reactivex.Observable;
11 | import okhttp3.RequestBody;
12 |
13 |
14 | /**
15 | * ================================================
16 | * Description:
17 | *
18 | * Created by MVPArmsTemplate on 06/04/2019 18:35
19 | * Contact me
20 | * Follow me
21 | * Star me
22 | * See me
23 | * 模版请保持更新
24 | * ================================================
25 | */
26 | public interface HomeContract {
27 | //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
28 | interface View extends IView {
29 | Activity getActivity();
30 | }
31 |
32 | //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
33 | interface Model extends IModel {
34 |
35 | Observable getStoryList1(RequestBody body);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/contract/MusicDetailContract.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.contract;
2 |
3 | import com.jess.arms.mvp.IView;
4 | import com.jess.arms.mvp.IModel;
5 | import com.winwang.storybooks.entity.AudioDetailBean;
6 |
7 | import io.reactivex.Observable;
8 | import okhttp3.RequestBody;
9 |
10 |
11 | /**
12 | * ================================================
13 | * Description:
14 | *
15 | * Created by MVPArmsTemplate on 06/28/2019 17:22
16 | * Contact me
17 | * Follow me
18 | * Star me
19 | * See me
20 | * 模版请保持更新
21 | * ================================================
22 | */
23 | public interface MusicDetailContract {
24 | //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
25 | interface View extends IView {
26 | void setMediaUrl(String url);
27 |
28 | void updateTime();
29 | }
30 |
31 | //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
32 | interface Model extends IModel {
33 | Observable getAudioDetail(RequestBody body);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/contract/MusicHomeContract.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.contract;
2 |
3 |
4 | import android.app.Activity;
5 |
6 | import com.jess.arms.mvp.IView;
7 | import com.jess.arms.mvp.IModel;
8 | import com.winwang.storybooks.entity.MusicHomeBean;
9 |
10 | import io.reactivex.Observable;
11 | import okhttp3.RequestBody;
12 |
13 |
14 | /**
15 | * ================================================
16 | * Description:
17 | *
18 | * Created by MVPArmsTemplate on 06/27/2019 16:27
19 | * Contact me
20 | * Follow me
21 | * Star me
22 | * See me
23 | * 模版请保持更新
24 | * ================================================
25 | */
26 | public interface MusicHomeContract {
27 | //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
28 | interface View extends IView {
29 | Activity getActivity();
30 | }
31 |
32 | //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
33 | interface Model extends IModel {
34 | Observable getMusicHome(RequestBody body);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/contract/MusicListContract.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.contract;
2 |
3 |
4 | import android.app.Activity;
5 |
6 | import com.jess.arms.mvp.IModel;
7 | import com.jess.arms.mvp.IView;
8 | import com.winwang.storybooks.entity.MusicListBean;
9 |
10 | import io.reactivex.Observable;
11 | import okhttp3.RequestBody;
12 |
13 |
14 | /**
15 | * ================================================
16 | * Description:
17 | *
18 | * Created by MVPArmsTemplate on 06/27/2019 17:02
19 | * Contact me
20 | * Follow me
21 | * Star me
22 | * See me
23 | * 模版请保持更新
24 | * ================================================
25 | */
26 | public interface MusicListContract {
27 | //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
28 | interface View extends IView {
29 | Activity getActivity();
30 | }
31 |
32 | //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
33 | interface Model extends IModel {
34 | Observable getMusicHome(RequestBody body);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/contract/MyRankContract.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.contract;
2 |
3 | import com.jess.arms.mvp.IView;
4 | import com.jess.arms.mvp.IModel;
5 |
6 |
7 | /**
8 | * ================================================
9 | * Description:
10 | *
11 | * Created by MVPArmsTemplate on 07/03/2019 14:32
12 | * Contact me
13 | * Follow me
14 | * Star me
15 | * See me
16 | * 模版请保持更新
17 | * ================================================
18 | */
19 | public interface MyRankContract {
20 | //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
21 | interface View extends IView {
22 |
23 | }
24 |
25 | //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
26 | interface Model extends IModel {
27 |
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/contract/MyTalkContract.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.contract;
2 |
3 | import com.jess.arms.mvp.IModel;
4 | import com.jess.arms.mvp.IView;
5 | import com.winwang.storybooks.entity.TalkBean;
6 | import com.winwang.storybooks.ui.fragment.MyTalkFragment;
7 |
8 | import io.reactivex.Observable;
9 | import okhttp3.RequestBody;
10 |
11 |
12 | /**
13 | * ================================================
14 | * Description:
15 | *
16 | * Created by MVPArmsTemplate on 07/03/2019 14:31
17 | * Contact me
18 | * Follow me
19 | * Star me
20 | * See me
21 | * 模版请保持更新
22 | * ================================================
23 | */
24 | public interface MyTalkContract {
25 | //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
26 | interface View extends IView {
27 | MyTalkFragment getFragment();
28 | }
29 |
30 | //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
31 | interface Model extends IModel {
32 |
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/contract/SplashContract.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.contract;
2 |
3 | import com.jess.arms.mvp.IView;
4 | import com.jess.arms.mvp.IModel;
5 | import com.tbruyelle.rxpermissions2.RxPermissions;
6 |
7 |
8 | /**
9 | * ================================================
10 | * Description:
11 | *
12 | * Created by MVPArmsTemplate on 06/04/2019 18:39
13 | * Contact me
14 | * Follow me
15 | * Star me
16 | * See me
17 | * 模版请保持更新
18 | * ================================================
19 | */
20 | public interface SplashContract {
21 | //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
22 | interface View extends IView {
23 | void jumpCallBack();
24 |
25 | void setSeconds(long second);
26 |
27 | //申请权限
28 | RxPermissions getRxPermissions();
29 |
30 | }
31 |
32 | //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
33 | interface Model extends IModel {
34 | void startJump();
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/contract/StoryListContract.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.contract;
2 |
3 | import android.app.Activity;
4 |
5 | import com.jess.arms.mvp.IView;
6 | import com.jess.arms.mvp.IModel;
7 | import com.winwang.storybooks.entity.MusicListBean;
8 | import com.winwang.storybooks.entity.StoryInListBean;
9 | import com.winwang.storybooks.entity.StoryListBean;
10 |
11 | import io.reactivex.Observable;
12 | import okhttp3.RequestBody;
13 |
14 |
15 | /**
16 | * ================================================
17 | * Description:
18 | *
19 | * Created by MVPArmsTemplate on 07/01/2019 18:21
20 | * Contact me
21 | * Follow me
22 | * Star me
23 | * See me
24 | * 模版请保持更新
25 | * ================================================
26 | */
27 | public interface StoryListContract {
28 | //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
29 | interface View extends IView {
30 | Activity getActivity();
31 | }
32 |
33 | //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
34 | interface Model extends IModel {
35 | Observable getStoryListIn(RequestBody body);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/contract/TalkContract.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.contract;
2 |
3 | import android.app.Activity;
4 | import android.support.v4.app.FragmentActivity;
5 |
6 | import com.jess.arms.mvp.IView;
7 | import com.jess.arms.mvp.IModel;
8 |
9 |
10 | /**
11 | * ================================================
12 | * Description:
13 | *
14 | * Created by MVPArmsTemplate on 07/02/2019 19:52
15 | * Contact me
16 | * Follow me
17 | * Star me
18 | * See me
19 | * 模版请保持更新
20 | * ================================================
21 | */
22 | public interface TalkContract {
23 | //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
24 | interface View extends IView {
25 | FragmentActivity getActivity();
26 | }
27 |
28 | //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
29 | interface Model extends IModel {
30 |
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/contract/TalksContract.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.contract;
2 |
3 | import android.content.Context;
4 | import android.support.v4.app.FragmentActivity;
5 |
6 | import com.jess.arms.mvp.IView;
7 | import com.jess.arms.mvp.IModel;
8 | import com.winwang.storybooks.entity.TalkBean;
9 |
10 | import io.reactivex.Observable;
11 | import okhttp3.RequestBody;
12 |
13 |
14 | /**
15 | * ================================================
16 | * Description:
17 | *
18 | * Created by MVPArmsTemplate on 07/03/2019 16:50
19 | * Contact me
20 | * Follow me
21 | * Star me
22 | * See me
23 | * 模版请保持更新
24 | * ================================================
25 | */
26 | public interface TalksContract {
27 | //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
28 | interface View extends IView {
29 | Context getContexts();
30 | }
31 |
32 | //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
33 | interface Model extends IModel {
34 | Observable getTalkList(RequestBody body);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/contract/VideoDetailContract.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.contract;
2 |
3 | import com.jess.arms.mvp.IView;
4 | import com.jess.arms.mvp.IModel;
5 | import com.winwang.storybooks.entity.VideoBean;
6 | import com.winwang.storybooks.entity.VideoDetailBean;
7 |
8 | import io.reactivex.Observable;
9 | import okhttp3.RequestBody;
10 |
11 |
12 | /**
13 | * ================================================
14 | * Description:
15 | *
16 | * Created by MVPArmsTemplate on 06/13/2019 19:33
17 | * Contact me
18 | * Follow me
19 | * Star me
20 | * See me
21 | * 模版请保持更新
22 | * ================================================
23 | */
24 | public interface VideoDetailContract {
25 | //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
26 | interface View extends IView {
27 | String getVideoId();
28 |
29 | void setVideoData(String url);
30 |
31 | void setVideoCover(String cover);
32 | }
33 |
34 | //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
35 | interface Model extends IModel {
36 | Observable getVideoDetail(RequestBody body, String url);
37 |
38 | Observable getVideoUrl(String url);
39 |
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/model/MusicDetailModel.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.model;
2 |
3 | import android.app.Application;
4 |
5 | import com.google.gson.Gson;
6 | import com.jess.arms.integration.IRepositoryManager;
7 | import com.jess.arms.mvp.BaseModel;
8 |
9 | import com.jess.arms.di.scope.ActivityScope;
10 |
11 | import javax.inject.Inject;
12 |
13 | import com.winwang.storybooks.entity.AudioDetailBean;
14 | import com.winwang.storybooks.http.ApiService;
15 | import com.winwang.storybooks.mvp.contract.MusicDetailContract;
16 |
17 | import io.reactivex.Observable;
18 | import okhttp3.RequestBody;
19 |
20 |
21 | /**
22 | * ================================================
23 | * Description:
24 | *
25 | * Created by MVPArmsTemplate on 06/28/2019 17:22
26 | * Contact me
27 | * Follow me
28 | * Star me
29 | * See me
30 | * 模版请保持更新
31 | * ================================================
32 | */
33 | @ActivityScope
34 | public class MusicDetailModel extends BaseModel implements MusicDetailContract.Model {
35 | @Inject
36 | Gson mGson;
37 | @Inject
38 | Application mApplication;
39 |
40 | @Inject
41 | public MusicDetailModel(IRepositoryManager repositoryManager) {
42 | super(repositoryManager);
43 | }
44 |
45 | @Override
46 | public void onDestroy() {
47 | super.onDestroy();
48 | this.mGson = null;
49 | this.mApplication = null;
50 | }
51 |
52 | @Override
53 | public Observable getAudioDetail(RequestBody body) {
54 | Observable audioDetail = mRepositoryManager.obtainRetrofitService(ApiService.class)
55 | .getAudioDetail(body);
56 | return audioDetail;
57 | }
58 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/model/MusicHomeModel.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.model;
2 |
3 | import android.app.Application;
4 |
5 | import com.google.gson.Gson;
6 | import com.jess.arms.integration.IRepositoryManager;
7 | import com.jess.arms.mvp.BaseModel;
8 |
9 | import com.jess.arms.di.scope.ActivityScope;
10 |
11 | import javax.inject.Inject;
12 |
13 | import com.winwang.storybooks.entity.MusicHomeBean;
14 | import com.winwang.storybooks.http.ApiService;
15 | import com.winwang.storybooks.mvp.contract.MusicHomeContract;
16 |
17 | import io.reactivex.Observable;
18 | import okhttp3.RequestBody;
19 |
20 |
21 | /**
22 | * ================================================
23 | * Description:
24 | *
25 | * Created by MVPArmsTemplate on 06/27/2019 16:27
26 | * Contact me
27 | * Follow me
28 | * Star me
29 | * See me
30 | * 模版请保持更新
31 | * ================================================
32 | */
33 | @ActivityScope
34 | public class MusicHomeModel extends BaseModel implements MusicHomeContract.Model {
35 | @Inject
36 | Gson mGson;
37 | @Inject
38 | Application mApplication;
39 |
40 | @Inject
41 | public MusicHomeModel(IRepositoryManager repositoryManager) {
42 | super(repositoryManager);
43 | }
44 |
45 | @Override
46 | public void onDestroy() {
47 | super.onDestroy();
48 | this.mGson = null;
49 | this.mApplication = null;
50 | }
51 |
52 | @Override
53 | public Observable getMusicHome(RequestBody body) {
54 | Observable homeBeanObservable = mRepositoryManager.obtainRetrofitService(ApiService.class)
55 | .getMusicHome(body);
56 | return homeBeanObservable;
57 | }
58 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/model/MusicListModel.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.model;
2 |
3 | import android.app.Application;
4 |
5 | import com.google.gson.Gson;
6 | import com.jess.arms.integration.IRepositoryManager;
7 | import com.jess.arms.mvp.BaseModel;
8 |
9 | import com.jess.arms.di.scope.ActivityScope;
10 |
11 | import javax.inject.Inject;
12 |
13 | import com.winwang.storybooks.entity.MusicHomeBean;
14 | import com.winwang.storybooks.entity.MusicListBean;
15 | import com.winwang.storybooks.http.ApiService;
16 | import com.winwang.storybooks.mvp.contract.MusicListContract;
17 |
18 | import io.reactivex.Observable;
19 | import okhttp3.RequestBody;
20 |
21 |
22 | /**
23 | * ================================================
24 | * Description:
25 | *
26 | * Created by MVPArmsTemplate on 06/27/2019 17:02
27 | * Contact me
28 | * Follow me
29 | * Star me
30 | * See me
31 | * 模版请保持更新
32 | * ================================================
33 | */
34 | @ActivityScope
35 | public class MusicListModel extends BaseModel implements MusicListContract.Model {
36 | @Inject
37 | Gson mGson;
38 | @Inject
39 | Application mApplication;
40 |
41 | @Inject
42 | public MusicListModel(IRepositoryManager repositoryManager) {
43 | super(repositoryManager);
44 | }
45 |
46 | @Override
47 | public void onDestroy() {
48 | super.onDestroy();
49 | this.mGson = null;
50 | this.mApplication = null;
51 | }
52 |
53 | @Override
54 | public Observable getMusicHome(RequestBody body) {
55 | Observable listBeanObservable = mRepositoryManager.obtainRetrofitService(ApiService.class)
56 | .getMusicList(body);
57 | return listBeanObservable;
58 | }
59 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/model/MyRankModel.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.model;
2 |
3 | import android.app.Application;
4 |
5 | import com.google.gson.Gson;
6 | import com.jess.arms.integration.IRepositoryManager;
7 | import com.jess.arms.mvp.BaseModel;
8 |
9 | import com.jess.arms.di.scope.FragmentScope;
10 |
11 | import javax.inject.Inject;
12 |
13 | import com.winwang.storybooks.mvp.contract.MyRankContract;
14 |
15 |
16 | /**
17 | * ================================================
18 | * Description:
19 | *
20 | * Created by MVPArmsTemplate on 07/03/2019 14:32
21 | * Contact me
22 | * Follow me
23 | * Star me
24 | * See me
25 | * 模版请保持更新
26 | * ================================================
27 | */
28 | @FragmentScope
29 | public class MyRankModel extends BaseModel implements MyRankContract.Model {
30 | @Inject
31 | Gson mGson;
32 | @Inject
33 | Application mApplication;
34 |
35 | @Inject
36 | public MyRankModel(IRepositoryManager repositoryManager) {
37 | super(repositoryManager);
38 | }
39 |
40 | @Override
41 | public void onDestroy() {
42 | super.onDestroy();
43 | this.mGson = null;
44 | this.mApplication = null;
45 | }
46 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/model/MyTalkModel.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.model;
2 |
3 | import android.app.Application;
4 |
5 | import com.google.gson.Gson;
6 | import com.jess.arms.integration.IRepositoryManager;
7 | import com.jess.arms.mvp.BaseModel;
8 |
9 | import com.jess.arms.di.scope.FragmentScope;
10 |
11 | import javax.inject.Inject;
12 |
13 | import com.winwang.storybooks.entity.TalkBean;
14 | import com.winwang.storybooks.http.ApiService;
15 | import com.winwang.storybooks.mvp.contract.MyTalkContract;
16 |
17 | import io.reactivex.Observable;
18 | import okhttp3.RequestBody;
19 |
20 |
21 | /**
22 | * ================================================
23 | * Description:
24 | *
25 | * Created by MVPArmsTemplate on 07/03/2019 14:31
26 | * Contact me
27 | * Follow me
28 | * Star me
29 | * See me
30 | * 模版请保持更新
31 | * ================================================
32 | */
33 | @FragmentScope
34 | public class MyTalkModel extends BaseModel implements MyTalkContract.Model {
35 | @Inject
36 | Gson mGson;
37 | @Inject
38 | Application mApplication;
39 |
40 | @Inject
41 | public MyTalkModel(IRepositoryManager repositoryManager) {
42 | super(repositoryManager);
43 | }
44 |
45 | @Override
46 | public void onDestroy() {
47 | super.onDestroy();
48 | this.mGson = null;
49 | this.mApplication = null;
50 | }
51 |
52 |
53 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/model/SplashModel.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.model;
2 |
3 | import android.app.Application;
4 |
5 | import com.google.gson.Gson;
6 | import com.jess.arms.integration.IRepositoryManager;
7 | import com.jess.arms.mvp.BaseModel;
8 |
9 | import com.jess.arms.di.scope.ActivityScope;
10 |
11 | import javax.inject.Inject;
12 |
13 | import com.winwang.storybooks.mvp.contract.SplashContract;
14 |
15 |
16 | /**
17 | * ================================================
18 | * Description:
19 | *
20 | * Created by MVPArmsTemplate on 06/04/2019 18:39
21 | * Contact me
22 | * Follow me
23 | * Star me
24 | * See me
25 | * 模版请保持更新
26 | * ================================================
27 | */
28 | @ActivityScope
29 | public class SplashModel extends BaseModel implements SplashContract.Model {
30 | @Inject
31 | Gson mGson;
32 | @Inject
33 | Application mApplication;
34 |
35 | @Inject
36 | public SplashModel(IRepositoryManager repositoryManager) {
37 | super(repositoryManager);
38 | }
39 |
40 | @Override
41 | public void onDestroy() {
42 | super.onDestroy();
43 | this.mGson = null;
44 | this.mApplication = null;
45 | }
46 |
47 | @Override
48 | public void startJump() {
49 |
50 | }
51 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/model/StoryListModel.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.model;
2 |
3 | import android.app.Application;
4 |
5 | import com.google.gson.Gson;
6 | import com.jess.arms.integration.IRepositoryManager;
7 | import com.jess.arms.mvp.BaseModel;
8 |
9 | import com.jess.arms.di.scope.ActivityScope;
10 |
11 | import javax.inject.Inject;
12 |
13 | import com.winwang.storybooks.entity.MusicListBean;
14 | import com.winwang.storybooks.entity.StoryInListBean;
15 | import com.winwang.storybooks.http.ApiService;
16 | import com.winwang.storybooks.mvp.contract.StoryListContract;
17 |
18 | import io.reactivex.Observable;
19 | import okhttp3.RequestBody;
20 |
21 |
22 | /**
23 | * ================================================
24 | * Description:
25 | *
26 | * Created by MVPArmsTemplate on 07/01/2019 18:21
27 | * Contact me
28 | * Follow me
29 | * Star me
30 | * See me
31 | * 模版请保持更新
32 | * ================================================
33 | */
34 | @ActivityScope
35 | public class StoryListModel extends BaseModel implements StoryListContract.Model {
36 | @Inject
37 | Gson mGson;
38 | @Inject
39 | Application mApplication;
40 |
41 | @Inject
42 | public StoryListModel(IRepositoryManager repositoryManager) {
43 | super(repositoryManager);
44 | }
45 |
46 | @Override
47 | public void onDestroy() {
48 | super.onDestroy();
49 | this.mGson = null;
50 | this.mApplication = null;
51 | }
52 |
53 |
54 | @Override
55 | public Observable getStoryListIn(RequestBody body) {
56 | Observable inStoryList = mRepositoryManager.obtainRetrofitService(ApiService.class)
57 | .getInStoryList(body);
58 | return inStoryList;
59 | }
60 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/model/TalkModel.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.model;
2 |
3 | import android.app.Application;
4 |
5 | import com.google.gson.Gson;
6 | import com.jess.arms.integration.IRepositoryManager;
7 | import com.jess.arms.mvp.BaseModel;
8 |
9 | import com.jess.arms.di.scope.ActivityScope;
10 |
11 | import javax.inject.Inject;
12 |
13 | import com.winwang.storybooks.mvp.contract.TalkContract;
14 |
15 |
16 | /**
17 | * ================================================
18 | * Description:
19 | *
20 | * Created by MVPArmsTemplate on 07/02/2019 19:52
21 | * Contact me
22 | * Follow me
23 | * Star me
24 | * See me
25 | * 模版请保持更新
26 | * ================================================
27 | */
28 | @ActivityScope
29 | public class TalkModel extends BaseModel implements TalkContract.Model {
30 | @Inject
31 | Gson mGson;
32 | @Inject
33 | Application mApplication;
34 |
35 | @Inject
36 | public TalkModel(IRepositoryManager repositoryManager) {
37 | super(repositoryManager);
38 | }
39 |
40 | @Override
41 | public void onDestroy() {
42 | super.onDestroy();
43 | this.mGson = null;
44 | this.mApplication = null;
45 | }
46 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/model/TalksModel.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.model;
2 |
3 | import android.app.Application;
4 |
5 | import com.google.gson.Gson;
6 | import com.jess.arms.integration.IRepositoryManager;
7 | import com.jess.arms.mvp.BaseModel;
8 |
9 | import com.jess.arms.di.scope.FragmentScope;
10 |
11 | import javax.inject.Inject;
12 |
13 | import com.winwang.storybooks.entity.TalkBean;
14 | import com.winwang.storybooks.http.ApiService;
15 | import com.winwang.storybooks.mvp.contract.TalksContract;
16 |
17 | import io.reactivex.Observable;
18 | import okhttp3.RequestBody;
19 |
20 |
21 | /**
22 | * ================================================
23 | * Description:
24 | *
25 | * Created by MVPArmsTemplate on 07/03/2019 16:50
26 | * Contact me
27 | * Follow me
28 | * Star me
29 | * See me
30 | * 模版请保持更新
31 | * ================================================
32 | */
33 | @FragmentScope
34 | public class TalksModel extends BaseModel implements TalksContract.Model {
35 | @Inject
36 | Gson mGson;
37 | @Inject
38 | Application mApplication;
39 |
40 | @Inject
41 | public TalksModel(IRepositoryManager repositoryManager) {
42 | super(repositoryManager);
43 | }
44 |
45 | @Override
46 | public void onDestroy() {
47 | super.onDestroy();
48 | this.mGson = null;
49 | this.mApplication = null;
50 | }
51 |
52 | @Override
53 | public Observable getTalkList(RequestBody body) {
54 | Observable talkOb = mRepositoryManager.obtainRetrofitService(ApiService.class)
55 | .getTalkList(body);
56 | return talkOb;
57 | }
58 | }
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/mvp/presenter/MyRankPresenter.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.mvp.presenter;
2 |
3 | import android.app.Application;
4 |
5 | import com.jess.arms.integration.AppManager;
6 | import com.jess.arms.di.scope.FragmentScope;
7 | import com.jess.arms.mvp.BasePresenter;
8 | import com.jess.arms.http.imageloader.ImageLoader;
9 |
10 | import me.jessyan.rxerrorhandler.core.RxErrorHandler;
11 |
12 | import javax.inject.Inject;
13 |
14 | import com.winwang.storybooks.mvp.contract.MyRankContract;
15 |
16 |
17 | /**
18 | * ================================================
19 | * Description:
20 | *
21 | * Created by MVPArmsTemplate on 07/03/2019 14:32
22 | * Contact me
23 | * Follow me
24 | * Star me
25 | * See me
26 | * 模版请保持更新
27 | * ================================================
28 | */
29 | @FragmentScope
30 | public class MyRankPresenter extends BasePresenter {
31 | @Inject
32 | RxErrorHandler mErrorHandler;
33 | @Inject
34 | Application mApplication;
35 | @Inject
36 | ImageLoader mImageLoader;
37 | @Inject
38 | AppManager mAppManager;
39 |
40 | @Inject
41 | public MyRankPresenter(MyRankContract.Model model, MyRankContract.View rootView) {
42 | super(model, rootView);
43 | }
44 |
45 | @Override
46 | public void onDestroy() {
47 | super.onDestroy();
48 | this.mErrorHandler = null;
49 | this.mAppManager = null;
50 | this.mImageLoader = null;
51 | this.mApplication = null;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/service/PlayService.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.service;
2 |
3 | import android.text.TextUtils;
4 |
5 | import com.jess.arms.base.BaseService;
6 | import com.winwang.storybooks.R;
7 | import com.winwang.storybooks.event.MusicEvent;
8 | import com.winwang.storybooks.utils.ExoMediaPlayer;
9 |
10 | import org.greenrobot.eventbus.Subscribe;
11 | import org.greenrobot.eventbus.ThreadMode;
12 |
13 | /**
14 | * Created by WinWang on 2019/6/18
15 | * Description->
16 | */
17 | public class PlayService extends BaseService {
18 |
19 | private ExoMediaPlayer mExoMediaPlayer;
20 |
21 | @Override
22 | public void init() {
23 | mExoMediaPlayer = new ExoMediaPlayer(this);
24 | mExoMediaPlayer.playSoundLocal(R.raw.beijing, new ExoMediaPlayer.ExoOnCompleterLister() {
25 | @Override
26 | public void onComplete() {
27 |
28 | }
29 | }, true);
30 | }
31 |
32 |
33 | @Override
34 | public boolean useEventBus() {
35 | return true;
36 | }
37 |
38 |
39 | @Override
40 | public void onDestroy() {
41 | mExoMediaPlayer.release();//释放资源
42 | super.onDestroy();
43 | }
44 |
45 | @Subscribe(threadMode = ThreadMode.POSTING)
46 | public void pauseMusic(MusicEvent event) {
47 | if (event != null && TextUtils.equals("homePause", event.eventName)) {
48 | mExoMediaPlayer.pause();
49 | } else if (event != null && TextUtils.equals("homePlay", event.eventName)) {
50 | mExoMediaPlayer.play();
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/utils/FileUtils.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.utils;
2 |
3 | import android.content.Context;
4 | import android.content.res.AssetManager;
5 |
6 | import java.io.BufferedInputStream;
7 | import java.io.ByteArrayOutputStream;
8 | import java.io.IOException;
9 | import java.io.InputStream;
10 |
11 | /**
12 | * Created by WinWang on 2019/6/6
13 | * Description->常用工具类
14 | */
15 | public class FileUtils {
16 |
17 | public static String getJson(Context context, String fileName) {
18 | ByteArrayOutputStream baos = new ByteArrayOutputStream();
19 | try {
20 | AssetManager assetManager = context.getAssets();
21 | InputStream inputStream = assetManager.open(fileName);
22 | BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
23 | byte[] buffer = new byte[1024];
24 | int len;
25 | while ((len = bufferedInputStream.read(buffer)) != -1) {
26 | baos.write(buffer, 0, len);
27 | }
28 | } catch (IOException e) {
29 | e.printStackTrace();
30 | } finally {
31 | try {
32 | baos.close();
33 |
34 | } catch (IOException e) {
35 | e.printStackTrace();
36 | }
37 | }
38 | return baos.toString();
39 | }
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/utils/NoDoubleClickUtils.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.utils;
2 |
3 | public class NoDoubleClickUtils {
4 | private final static int SPACE_TIME = 500;//2次点击的间隔时间,单位ms
5 | private static long lastClickTime;
6 |
7 | public synchronized static boolean isDoubleClick() {
8 | long currentTime = System.currentTimeMillis();
9 | boolean isClick;
10 | if (currentTime - lastClickTime > SPACE_TIME) {
11 | isClick = false;
12 | } else {
13 | isClick = true;
14 | }
15 | lastClickTime = currentTime;
16 | return isClick;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/utils/RxUtils.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.utils;
2 |
3 | import com.jess.arms.mvp.IView;
4 | import com.jess.arms.utils.RxLifecycleUtils;
5 |
6 | import io.reactivex.Observable;
7 | import io.reactivex.ObservableTransformer;
8 | import io.reactivex.android.schedulers.AndroidSchedulers;
9 | import io.reactivex.annotations.NonNull;
10 | import io.reactivex.disposables.Disposable;
11 | import io.reactivex.functions.Action;
12 | import io.reactivex.functions.Consumer;
13 | import io.reactivex.schedulers.Schedulers;
14 |
15 | /**
16 | * ================================================
17 | * 放置便于使用 RxJava 的一些工具方法
18 | *
19 | * Created by MVPArmsTemplate on 06/04/2019 13:45
20 | * Contact me
21 | * Follow me
22 | * ================================================
23 | */
24 | public class RxUtils {
25 |
26 | private RxUtils() {
27 | }
28 |
29 | public static ObservableTransformer applySchedulers(final IView view) {
30 | return new ObservableTransformer() {
31 | @Override
32 | public Observable apply(Observable observable) {
33 | return observable.subscribeOn(Schedulers.io())
34 | .doOnSubscribe(new Consumer() {
35 | @Override
36 | public void accept(@NonNull Disposable disposable) throws Exception {
37 | view.showLoading();//显示进度条
38 | }
39 | })
40 | .subscribeOn(AndroidSchedulers.mainThread())
41 | .observeOn(AndroidSchedulers.mainThread())
42 | .doFinally(new Action() {
43 | @Override
44 | public void run() {
45 | view.hideLoading();//隐藏进度条
46 | }
47 | }).compose(RxLifecycleUtils.bindToLifecycle(view));
48 | }
49 | };
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/utils/customAnnotation/DoubleClick.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.utils.customAnnotation;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | /**
9 | * 双击自定义注解
10 | */
11 | @Retention(RetentionPolicy.CLASS)
12 | @Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
13 | public @interface DoubleClick {
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/utils/customAnnotation/RequestPermissions.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.utils.customAnnotation;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | /**
9 | * Created by WinWang on 2019/5/15
10 | * Description->
11 | */
12 | @Target(ElementType.METHOD)
13 | @Retention(RetentionPolicy.RUNTIME)
14 | public @interface RequestPermissions {
15 | String[] value();
16 | }
17 |
--------------------------------------------------------------------------------
/storybooks/src/main/java/com/winwang/storybooks/utils/customAnnotation/SingleClick.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks.utils.customAnnotation;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | /**
9 | * @ClassName: SingleClick
10 | * @Description: java类作用描述
11 | * @Author: xxy
12 | * @CreateDate: 2019/5/16 10:20
13 | * @Version: 1.0
14 | */
15 | @Retention(RetentionPolicy.RUNTIME)
16 | @Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
17 | public @interface SingleClick {
18 | }
19 |
20 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/anim/civ_rotate_animate.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/anim/translate_center_to_left.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/anim/translate_center_to_right.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/anim/translate_left_to_center.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/anim/translate_right_to_center.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/anim/virbrate_animate.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xhdpi/ic_arrow_back_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xhdpi/ic_arrow_back_white_24dp.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxhdpi/ic_arrow_back_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxhdpi/ic_arrow_back_white_24dp.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/bird.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/bird.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/btn_a2_n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/btn_a2_n.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/btn_b2_n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/btn_b2_n.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/btn_details_progress_flower.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/btn_details_progress_flower.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/btn_girl_woyaojiang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/btn_girl_woyaojiang.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/dianshi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/dianshi.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/home_novoice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/home_novoice.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/home_voice1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/home_voice1.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/huyanmoshi_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/huyanmoshi_bg.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/ic_arrow_back_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/ic_arrow_back_white_24dp.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/index_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/index_bg.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/index_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/index_down.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/index_hot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/index_hot.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/index_kuang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/index_kuang.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/index_like.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/index_like.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/index_music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/index_music.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/index_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/index_new.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/index_story.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/index_story.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/index_time.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/index_time.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/index_xiankan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/index_xiankan.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/list_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/list_bg.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/list_kuang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/list_kuang.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/list_kuang_hot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/list_kuang_hot.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/list_kuang_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/list_kuang_new.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/list_qiangxian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/list_qiangxian.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/list_story_icon_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/list_story_icon_down.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/listen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/listen.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/pic_tingting_moren.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/pic_tingting_moren.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/play_bear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/play_bear.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/play_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/play_bg.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/play_like_nor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/play_like_nor.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/play_like_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/play_like_press.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/play_pinglun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/play_pinglun.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/play_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/play_play.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/play_return.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/play_return.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/play_suspend.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/play_suspend.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/play_voice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/play_voice.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/play_voice_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/play_voice_close.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/radio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/radio.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/radio2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/radio2.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/radio3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/radio3.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/radio_cd_fengmian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/radio_cd_fengmian.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/radio_cd_shibai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/radio_cd_shibai.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/star.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/yindao_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/yindao_bg.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable-xxxhdpi/yingdao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable-xxxhdpi/yingdao.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/awkward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/awkward.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/bird_qiehuan1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/bird_qiehuan1.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/bird_qiehuan2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/bird_qiehuan2.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/btn_home_girll1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/btn_home_girll1.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/btn_home_girll2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/btn_home_girll2.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/btn_home_girll3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/btn_home_girll3.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/btn_resources_ranking_def.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/btn_resources_ranking_def.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/btn_resources_ranking_sel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/btn_resources_ranking_sel.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/btn_resources_woyaolu_def.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/btn_resources_woyaolu_def.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/btn_resources_woyaolu_sel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/btn_resources_woyaolu_sel.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/custom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/custom.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/empty.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/error.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/fly_anim.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/girl_anim.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
12 |
13 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/home_tutu_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/home_tutu_1.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/home_tutu_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/home_tutu_10.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/home_tutu_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/home_tutu_2.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/home_tutu_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/home_tutu_3.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/home_tutu_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/home_tutu_4.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/home_tutu_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/home_tutu_5.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/home_tutu_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/home_tutu_6.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/home_tutu_7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/home_tutu_7.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/home_tutu_8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/home_tutu_8.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/home_tutu_9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/home_tutu_9.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/home_tutu_erge_b1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/home_tutu_erge_b1.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/home_tutu_erge_b2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/home_tutu_erge_b2.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/home_tutu_gushi_b1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/home_tutu_gushi_b1.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/home_tutu_gushi_b2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/home_tutu_gushi_b2.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/img.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/img.jpg
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/jiazai_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/jiazai_1.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/jiazai_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/jiazai_2.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/jiazai_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/jiazai_3.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/jiazai_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/jiazai_4.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/jiazai_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/jiazai_5.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/jiazai_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/jiazai_6.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/list_button.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/list_button.9.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/listen_zhanweifu.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/listen_zhanweifu.9.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/loading.gif
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/music.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/music_anim.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
9 |
10 |
13 |
14 |
17 |
18 |
21 |
22 |
23 |
26 |
27 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/rank_sel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/seek_progress_back.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
8 |
9 |
10 |
11 |
12 | -
13 |
14 |
15 |
16 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | -
25 |
26 |
27 |
28 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/seek_thumb.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/story_anim.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
10 |
13 |
14 |
17 |
18 |
21 |
22 |
23 |
26 |
27 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/talk_sel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/timeout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/drawable/timeout.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/drawable/white_back.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
10 |
15 |
20 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
17 |
18 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/activity_music_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/activity_music_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/activity_splash.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
16 |
17 |
18 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/activity_story_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
16 |
17 |
20 |
21 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/empty_control_video.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
11 |
17 |
18 |
19 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/fragment_my_rank.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/fragment_my_talk.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
17 |
22 |
23 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/fragment_talks.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/include_title.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
16 |
17 |
24 |
25 |
26 |
34 |
35 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/item_music_home_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
12 |
13 |
14 |
19 |
20 |
26 |
27 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/item_music_list_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
12 |
13 |
14 |
19 |
20 |
26 |
27 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/item_story_list_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
12 |
13 |
14 |
19 |
20 |
26 |
27 |
32 |
33 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/item_story_music_home_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
12 |
13 |
18 |
19 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/item_talk_rank_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
12 |
13 |
16 |
17 |
22 |
23 |
24 |
34 |
35 |
36 |
37 |
38 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/layout_animate.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/layout_custom.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
15 |
16 |
22 |
23 |
27 |
28 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/layout_custom_error.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
18 |
19 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/layout_empty.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
13 |
14 |
21 |
22 |
26 |
27 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/layout_error.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
14 |
15 |
21 |
22 |
29 |
30 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/layout_head_top_bar.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/layout_loading.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/layout_lottie_empty.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
17 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/layout_lottie_loading.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
17 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/layout_timeout.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
14 |
15 |
21 |
22 |
26 |
27 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/layout/view_left_back.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
19 |
20 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/storybooks/src/main/res/raw/beijing.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/raw/beijing.mp3
--------------------------------------------------------------------------------
/storybooks/src/main/res/raw/click.WAV:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/raw/click.WAV
--------------------------------------------------------------------------------
/storybooks/src/main/res/raw/dianzan.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/raw/dianzan.mp3
--------------------------------------------------------------------------------
/storybooks/src/main/res/raw/erge.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/raw/erge.mp3
--------------------------------------------------------------------------------
/storybooks/src/main/res/raw/fanhui.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/raw/fanhui.wav
--------------------------------------------------------------------------------
/storybooks/src/main/res/raw/gushi.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/raw/gushi.mp3
--------------------------------------------------------------------------------
/storybooks/src/main/res/raw/home1.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/raw/home1.mp3
--------------------------------------------------------------------------------
/storybooks/src/main/res/raw/home2.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/raw/home2.mp3
--------------------------------------------------------------------------------
/storybooks/src/main/res/raw/home3.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/raw/home3.mp3
--------------------------------------------------------------------------------
/storybooks/src/main/res/raw/hua_kuai.WAV:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/raw/hua_kuai.WAV
--------------------------------------------------------------------------------
/storybooks/src/main/res/raw/hua_man.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WinWang/StoryBook/4bb96e19bc47aaee3ca7d2aa24f547fdb2ea2490/storybooks/src/main/res/raw/hua_man.wav
--------------------------------------------------------------------------------
/storybooks/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #03ccfc
4 | #03ccfc
5 | #03ccfc
6 | #FFFFFF
7 |
8 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | -60pt
3 |
4 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/values/ids.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | StoryBooks
3 |
4 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
13 |
19 |
20 |
--------------------------------------------------------------------------------
/storybooks/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/storybooks/src/test/java/com/winwang/storybooks/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.winwang.storybooks;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------