From 9da1e4234d75755bb32140fe167af49ba10b5d89 Mon Sep 17 00:00:00 2001 From: liunianyong Date: Fri, 11 Jan 2019 16:15:53 +0800 Subject: [PATCH 1/2] Initial commit --- LICENSE | 201 ++++++++++++++++++ README.md | 69 +++--- app/.gitignore | 1 + app/build.gradle | 31 +++ app/proguard-rules.pro | 21 ++ .../sample/ExampleInstrumentedTest.java | 26 +++ app/src/main/AndroidManifest.xml | 26 +++ .../tech/scorpio/sample/MainActivity.java | 83 ++++++++ .../tech/scorpio/sample/OneFragment.java | 87 ++++++++ .../tech/scorpio/sample/TestActivity.java | 18 ++ .../tech/scorpio/sample/TestFragment.java | 120 +++++++++++ .../drawable-v24/ic_launcher_foreground.xml | 34 +++ .../res/drawable/ic_launcher_background.xml | 170 +++++++++++++++ app/src/main/res/layout/activity_main.xml | 19 ++ app/src/main/res/layout/activity_test.xml | 9 + app/src/main/res/layout/custom.xml | 30 +++ app/src/main/res/layout/fragment_one.xml | 58 +++++ app/src/main/res/layout/fragment_test.xml | 13 ++ app/src/main/res/menu/state.xml | 25 +++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3056 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5024 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2096 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2858 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4569 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7098 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6464 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10676 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9250 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15523 bytes app/src/main/res/values/colors.xml | 6 + app/src/main/res/values/strings.xml | 5 + app/src/main/res/values/styles.xml | 11 + .../tech/scorpio/sample/ExampleUnitTest.java | 17 ++ build.gradle | 25 +++ config.gradle | 47 ++++ gradle.properties | 17 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 160 ++++++++++++++ gradlew.bat | 90 ++++++++ scorpio/.gitignore | 1 + scorpio/build.gradle | 23 ++ scorpio/proguard-rules.pro | 21 ++ .../tech/scorpio/ExampleInstrumentedTest.java | 26 +++ scorpio/src/main/AndroidManifest.xml | 2 + .../java/com/lnysky/tech/scorpio/Bar.java | 14 ++ .../java/com/lnysky/tech/scorpio/Content.java | 23 ++ .../java/com/lnysky/tech/scorpio/Empty.java | 39 ++++ .../java/com/lnysky/tech/scorpio/Error.java | 62 ++++++ .../java/com/lnysky/tech/scorpio/Loading.java | 28 +++ .../com/lnysky/tech/scorpio/Provider.java | 36 ++++ .../lnysky/tech/scorpio/ProviderStore.java | 22 ++ .../java/com/lnysky/tech/scorpio/Scorpio.java | 68 ++++++ .../com/lnysky/tech/scorpio/StateLayout.java | 160 ++++++++++++++ .../res/drawable-hdpi/scorpio_state_empty.png | Bin 0 -> 7967 bytes .../res/drawable-hdpi/scorpio_state_error.png | Bin 0 -> 17205 bytes .../drawable-xhdpi/scorpio_state_empty.png | Bin 0 -> 6162 bytes .../drawable-xhdpi/scorpio_state_error.png | Bin 0 -> 10211 bytes .../drawable-xxhdpi/scorpio_state_empty.png | Bin 0 -> 17052 bytes .../drawable-xxhdpi/scorpio_state_error.png | Bin 0 -> 36705 bytes .../drawable-xxxhdpi/scorpio_state_empty.png | Bin 0 -> 27794 bytes .../drawable-xxxhdpi/scorpio_state_error.png | Bin 0 -> 63963 bytes .../main/res/drawable/scorpio_state_retry.xml | 7 + .../main/res/layout/scorpio_state_empty.xml | 24 +++ .../main/res/layout/scorpio_state_error.xml | 37 ++++ .../main/res/layout/scorpio_state_loading.xml | 24 +++ scorpio/src/main/res/values-zh/strings.xml | 6 + scorpio/src/main/res/values/strings.xml | 6 + .../lnysky/tech/scorpio/ExampleUnitTest.java | 17 ++ settings.gradle | 1 + 72 files changed, 2052 insertions(+), 30 deletions(-) create mode 100644 LICENSE create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/com/lnysky/tech/scorpio/sample/ExampleInstrumentedTest.java create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/com/lnysky/tech/scorpio/sample/MainActivity.java create mode 100644 app/src/main/java/com/lnysky/tech/scorpio/sample/OneFragment.java create mode 100644 app/src/main/java/com/lnysky/tech/scorpio/sample/TestActivity.java create mode 100644 app/src/main/java/com/lnysky/tech/scorpio/sample/TestFragment.java create mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/activity_test.xml create mode 100644 app/src/main/res/layout/custom.xml create mode 100644 app/src/main/res/layout/fragment_one.xml create mode 100644 app/src/main/res/layout/fragment_test.xml create mode 100644 app/src/main/res/menu/state.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/test/java/com/lnysky/tech/scorpio/sample/ExampleUnitTest.java create mode 100644 build.gradle create mode 100644 config.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 scorpio/.gitignore create mode 100644 scorpio/build.gradle create mode 100644 scorpio/proguard-rules.pro create mode 100644 scorpio/src/androidTest/java/com/lnysky/tech/scorpio/ExampleInstrumentedTest.java create mode 100644 scorpio/src/main/AndroidManifest.xml create mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/Bar.java create mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/Content.java create mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/Empty.java create mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/Error.java create mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/Loading.java create mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/Provider.java create mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/ProviderStore.java create mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/Scorpio.java create mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/StateLayout.java create mode 100644 scorpio/src/main/res/drawable-hdpi/scorpio_state_empty.png create mode 100644 scorpio/src/main/res/drawable-hdpi/scorpio_state_error.png create mode 100644 scorpio/src/main/res/drawable-xhdpi/scorpio_state_empty.png create mode 100644 scorpio/src/main/res/drawable-xhdpi/scorpio_state_error.png create mode 100644 scorpio/src/main/res/drawable-xxhdpi/scorpio_state_empty.png create mode 100644 scorpio/src/main/res/drawable-xxhdpi/scorpio_state_error.png create mode 100644 scorpio/src/main/res/drawable-xxxhdpi/scorpio_state_empty.png create mode 100644 scorpio/src/main/res/drawable-xxxhdpi/scorpio_state_error.png create mode 100644 scorpio/src/main/res/drawable/scorpio_state_retry.xml create mode 100644 scorpio/src/main/res/layout/scorpio_state_empty.xml create mode 100644 scorpio/src/main/res/layout/scorpio_state_error.xml create mode 100644 scorpio/src/main/res/layout/scorpio_state_loading.xml create mode 100644 scorpio/src/main/res/values-zh/strings.xml create mode 100644 scorpio/src/main/res/values/strings.xml create mode 100644 scorpio/src/test/java/com/lnysky/tech/scorpio/ExampleUnitTest.java create mode 100644 settings.gradle diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index 9bfabcc..3c1eea5 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,48 @@ -# loading +# scorpio #### 项目介绍 -{**以下是码云平台说明,您可以替换为您的项目简介** -码云是开源中国推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} - -#### 软件架构 -软件架构说明 +状态切换框架,内置数据为空,错误,加载中三种默认布局。 #### 安装教程 -1. xxxx -2. xxxx -3. xxxx +```groovy +implementation 'com.lnysky.tech:scorpio:0.0.1' +``` #### 使用说明 -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本项目 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 码云特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 -5. 码云官方提供的使用手册 [http://git.mydoc.io/](http://git.mydoc.io/) -6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) \ No newline at end of file +```java +private static final int CUSTOM = 4; +private Bar scorpio; + +@Override +protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + scorpio = Scorpio.with(this); + scorpio.register(new Provider(CUSTOM) { + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup parent) { + return inflater.inflate(R.layout.custom, parent, false); + } + }); +} +``` + +```java +scorpio.content(); + +scorpio.builtIn().loading(); + +scorpio.builtIn().empty().setTips("主页面空空的~~"); + +scorpio.builtIn().error() + .setRetryText("重新加载") + .setOnRetryListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + scorpio.builtIn().loading(); + } + }); +``` \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..5e44dae --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,31 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion rootProject.ext.android.compileSdkVersion + buildToolsVersion rootProject.ext.android.buildToolsVersion + + defaultConfig { + applicationId rootProject.ext.android.applicationId + minSdkVersion rootProject.ext.android.minSdkVersion + targetSdkVersion rootProject.ext.android.targetSdkVersion + versionCode rootProject.ext.android.versionCode + versionName rootProject.ext.android.versionName + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation rootProject.ext.dependencies.appCompat + implementation rootProject.ext.dependencies.constraint + testImplementation 'junit:junit:4.12' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + implementation project(':scorpio') +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/app/src/androidTest/java/com/lnysky/tech/scorpio/sample/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/lnysky/tech/scorpio/sample/ExampleInstrumentedTest.java new file mode 100644 index 0000000..7b2c2ec --- /dev/null +++ b/app/src/androidTest/java/com/lnysky/tech/scorpio/sample/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.lnysky.tech.scorpio.sample; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.huiyu.tech.state.sample", appContext.getPackageName()); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..351a5cd --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/lnysky/tech/scorpio/sample/MainActivity.java b/app/src/main/java/com/lnysky/tech/scorpio/sample/MainActivity.java new file mode 100644 index 0000000..804cc15 --- /dev/null +++ b/app/src/main/java/com/lnysky/tech/scorpio/sample/MainActivity.java @@ -0,0 +1,83 @@ +package com.lnysky.tech.scorpio.sample; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.animation.AlphaAnimation; + +import com.lnysky.tech.scorpio.Provider; +import com.lnysky.tech.scorpio.Scorpio; + +public class MainActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + } + + public void testFragment(View v) { + startActivity(new Intent(this, TestActivity.class)); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.action_loading: + Scorpio.with(this).loading().setTips("加载中...").show(); + return true; + case R.id.action_empty: + Scorpio.with(this).empty().setTips("主页面空空的~~").show(); + return true; + case R.id.action_error: + Scorpio.with(this).error() + .setRetryText("重新加载") + .setOnRetryListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Scorpio.with(MainActivity.this).loading().show(); + } + }).show(); + return true; + case R.id.action_custom: + Scorpio.with(this).get(CustomProvider.class).show(); + return true; + case R.id.action_content: + Scorpio.with(this).content().show(); + return true; + } + return false; + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.state, menu); + return true; + } + + public static class CustomProvider extends Provider { + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup parent) { + return inflater.inflate(R.layout.custom, parent, false); + } + + @Override + protected void onDisplay(boolean display) { + super.onDisplay(display); + AlphaAnimation animation; + if (display) { + animation = new AlphaAnimation(0f, 1f); + } else { + animation = new AlphaAnimation(1f, 0f); + } + animation.setDuration(1000); + getView().startAnimation(animation); + } + } + +} diff --git a/app/src/main/java/com/lnysky/tech/scorpio/sample/OneFragment.java b/app/src/main/java/com/lnysky/tech/scorpio/sample/OneFragment.java new file mode 100644 index 0000000..f0d027a --- /dev/null +++ b/app/src/main/java/com/lnysky/tech/scorpio/sample/OneFragment.java @@ -0,0 +1,87 @@ +package com.lnysky.tech.scorpio.sample; + + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.lnysky.tech.scorpio.Scorpio; + + +/** + * A simple {@link Fragment} subclass. + * Use the {@link OneFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class OneFragment extends Fragment implements View.OnClickListener { + + private View test; + + public OneFragment() { + // Required empty public constructor + } + + public static OneFragment newInstance() { + OneFragment fragment = new OneFragment(); + Bundle args = new Bundle(); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + View view = inflater.inflate(R.layout.fragment_one, container, false); + + TextView tvLoading = view.findViewById(R.id.tv_loading); + TextView tvEmpty = view.findViewById(R.id.tv_empty); + TextView tvError = view.findViewById(R.id.tv_error); + TextView tvContent = view.findViewById(R.id.tv_content); + + tvLoading.setOnClickListener(this); + tvEmpty.setOnClickListener(this); + tvError.setOnClickListener(this); + tvContent.setOnClickListener(this); + return view; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + test = view.findViewById(R.id.tv_test); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.tv_loading: + Scorpio.with(test).loading().show(); + break; + case R.id.tv_empty: + Scorpio.with(test).empty().show(); + break; + case R.id.tv_error: + Scorpio.with(test).error().setOnRetryListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Scorpio.with(test).loading().show(); + } + }).show(); + break; + case R.id.tv_content: + Scorpio.with(test).content().show(); + break; + } + } +} diff --git a/app/src/main/java/com/lnysky/tech/scorpio/sample/TestActivity.java b/app/src/main/java/com/lnysky/tech/scorpio/sample/TestActivity.java new file mode 100644 index 0000000..7f0d9e5 --- /dev/null +++ b/app/src/main/java/com/lnysky/tech/scorpio/sample/TestActivity.java @@ -0,0 +1,18 @@ +package com.lnysky.tech.scorpio.sample; + +import android.os.Bundle; +import android.support.v4.app.FragmentManager; +import android.support.v7.app.AppCompatActivity; + +public class TestActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_test); + FragmentManager fm = getSupportFragmentManager(); + fm.beginTransaction() + .replace(android.R.id.content, TestFragment.newInstance()) + .commitAllowingStateLoss(); + } +} diff --git a/app/src/main/java/com/lnysky/tech/scorpio/sample/TestFragment.java b/app/src/main/java/com/lnysky/tech/scorpio/sample/TestFragment.java new file mode 100644 index 0000000..ce8e5d6 --- /dev/null +++ b/app/src/main/java/com/lnysky/tech/scorpio/sample/TestFragment.java @@ -0,0 +1,120 @@ +package com.lnysky.tech.scorpio.sample; + + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; + +import com.lnysky.tech.scorpio.Scorpio; + +import java.util.ArrayList; +import java.util.List; + + +/** + * A simple {@link Fragment} subclass. + * Use the {@link TestFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class TestFragment extends Fragment { + + public TestFragment() { + // Required empty public constructor + } + + public static TestFragment newInstance() { + TestFragment fragment = new TestFragment(); + Bundle args = new Bundle(); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + View view = inflater.inflate(R.layout.fragment_test, container, false); + ViewPager viewPager = view.findViewById(R.id.view_pager); + List fragments = new ArrayList<>(); + fragments.add(OneFragment.newInstance()); + fragments.add(OneFragment.newInstance()); + fragments.add(OneFragment.newInstance()); + fragments.add(OneFragment.newInstance()); + viewPager.setAdapter(new MyAdapter(getChildFragmentManager(), fragments)); + viewPager.setOffscreenPageLimit(fragments.size()); + return view; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + if (isVisible()) { + inflater.inflate(R.menu.state, menu); + } + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + int itemId = item.getItemId(); + switch (itemId) { + case R.id.action_loading: + Scorpio.with(this).loading().show(); + break; + case R.id.action_empty: + Scorpio.with(this).empty().show(); + break; + case R.id.action_error: + Scorpio.with(this).error().setOnRetryListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Scorpio.with(TestFragment.this).loading().show(); + } + }).show(); + break; + case R.id.action_content: + Scorpio.with(this).content().show(); + break; + } + return super.onOptionsItemSelected(item); + } + + class MyAdapter extends FragmentPagerAdapter { + + List fragments; + + MyAdapter(FragmentManager fm, List fragments) { + super(fm); + this.fragments = fragments; + } + + @Override + public Fragment getItem(int position) { + return fragments.get(position); + } + + @Override + public int getCount() { + return fragments.size(); + } + } +} diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..c7bd21d --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..d5fccc5 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..2d875d4 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/app/src/main/res/layout/activity_test.xml b/app/src/main/res/layout/activity_test.xml new file mode 100644 index 0000000..92cfe9e --- /dev/null +++ b/app/src/main/res/layout/activity_test.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/custom.xml b/app/src/main/res/layout/custom.xml new file mode 100644 index 0000000..b7c4572 --- /dev/null +++ b/app/src/main/res/layout/custom.xml @@ -0,0 +1,30 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_one.xml b/app/src/main/res/layout/fragment_one.xml new file mode 100644 index 0000000..7dfcbc2 --- /dev/null +++ b/app/src/main/res/layout/fragment_one.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_test.xml b/app/src/main/res/layout/fragment_test.xml new file mode 100644 index 0000000..47fd086 --- /dev/null +++ b/app/src/main/res/layout/fragment_test.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/state.xml b/app/src/main/res/menu/state.xml new file mode 100644 index 0000000..3f8bcb5 --- /dev/null +++ b/app/src/main/res/menu/state.xml @@ -0,0 +1,25 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a2f5908281d070150700378b64a84c7db1f97aa1 GIT binary patch literal 3056 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 axPAxe%7rDusX+w*00006jj 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⁣ zwiG+x#%j}{0gU~J8;<|!B1@-XaB@{KORFwrYg_8rOv({b0EO#DbeQRm;B6_9=mXGf z-x|VL{zd`)#@yN}HkCSJbjbNlE|zL3Wm9Q8HY`sV)}3%pgN>cL^67{Z;PPL(*wT8N zUjXU{@|*hvm}({wsAC=x0^ok0%UAz0;sogW{B!nDqk|JJ5x~4NfTDgP49^zeu`csl?5mY@JdQdISc zFs!E{^grmkLnUk9 zny~m)1vws@5BFI<-0Tuo2JWX(0v`W|t(wg;s--L47WTvTMz-8l#TL^=OJNRS2?_Qj z3AKT+gvbyBi#H*-tJ%tWD|>EV3wy|8qxfzS!5RW;Jpl5*zo&^UBU=fG#2}UvRyNkK zA06Dy9;K1ca@r2T>yThYgI!ont$(G{6q#2QT+00r_x0(b)gsE`lBB?2gr55gq^D3Fi&p%E(p9>U%bv zkg1Jco(RbyTX7FDHOnl7-O@ zI$AaIl?9NJKPm(WiBP`1-#CB1QzU>&hKm)fpa5DKE{2$X0hGz-0uZ?cyTk(YC!Y&| zL=1VrNERSA5NA2jq7FACfX4JfPyj5XXl1yv0>~s;eF7L2$>&oMqeTFT2m$y7FlkON z_yurD1yIOvA;5C6016pyxBznGUt0kJ&k5r#;&>Jow`r)sp9R~PmK~lz$3xH%LT*1U zJdOyABZ3!FvNoR*vN$5ykHS8f`jA4zV+|L}i1C4`B2c{R0;UdYxaU|H)2avz@ z=mEYc|2S<+(B2Tj+FkX+2D+yFI!k9lWMA61DJ{)e;lum$(;O87?vGJJe!KtK04+N_ zI*P~t@dUb>9Xh{dbyl{-ZQ(UMgz7$|QfL5XSPkskt^NgctYC#;4WcZB1@%@wy@2t3 z2z0DI7&%b$*Aw~abe?GxE`ez@+6hOh-6*8fHRV{1os$EL@}uUZeG4h1&Be`98q*7j z=3-v+lhIjfWVo12!<>%V^a6lTgW3+_#W6n|p*~==zOH7z$0{LSZk(Tpd7EaD04hnA zL;#fxS0aD{`5^&D`}>0Uq?byDD-l2=!wm_bLcUl4gc(% za1p|itVANvFF>hghAS07Im1;IK;|b*W)}VDyI;BIp2=K*yu2a)j?B|f<44NI$NbmJ z#dE0>jI$fMr&@>4kN8MLFb4&2O9fEKaQg%(QO$4_1rVQywG^CmBLh#}_7gKW3vd?| z2?1^&KWq8}8I^_S0|)MowU_pw$q@nl@Nkn$z>BQq_KA^9yaR`(R3u{{Ig;cwt z@AJ^{ODQCm^neroM9nKNUAXi9RCK`OsP_LuR0PUR(YZCCX5dNF6VzcoK&=b^r`W?ltt|*F zpkoae%ZT{C1h~EcFui~b7fF`vb<<~j_VquuUA$}QqIKYELPp#;{u?q8Dz}WAG-(3; zjrm$i%7UbyZMM(Y{>!uJ#vNB?R~B{6Htp=>e*<{fQQ5W7V(1coCWlOON!MzZxhum| ztZBQpGR z;~#ur^&PockKdV{Q6R>o`Pl{0x!DEbpZ7y9Y;*ZvE!*gU`V1W3znva{f=?WO5I&>B z&hw6}tjECtaghm5z|C#%M;Yf_*pI^};h}Vl=^r9EN=tVDj86D;C$jIJ?K7VP+00000NkvXXu0mjf D5i!M* literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..459ca609d3ae0d3943ab44cdc27feef9256dc6d7 GIT binary patch literal 7098 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca12fe024be86e868d14e91120a6902f8e88ac6 GIT binary patch literal 6464 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 B0*L?s literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..8e19b410a1b15ff180f3dacac19395fe3046cdec GIT binary patch literal 10676 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..4c19a13c239cb67b8a2134ddd5f325db1d2d5bee GIT binary patch literal 15523 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 BIP(Ai literal 0 HcmV?d00001 diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..3ab3e9c --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ + + + #3F51B5 + #303F9F + #FF4081 + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..0a7a942 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,5 @@ + + loading + + Hello blank fragment + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..5885930 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/app/src/test/java/com/lnysky/tech/scorpio/sample/ExampleUnitTest.java b/app/src/test/java/com/lnysky/tech/scorpio/sample/ExampleUnitTest.java new file mode 100644 index 0000000..51976fa --- /dev/null +++ b/app/src/test/java/com/lnysky/tech/scorpio/sample/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package com.lnysky.tech.scorpio.sample; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() throws Exception { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..01f0f6b --- /dev/null +++ b/build.gradle @@ -0,0 +1,25 @@ +apply from: "config.gradle" + +buildscript { + + repositories { + google() + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' + classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/config.gradle b/config.gradle new file mode 100644 index 0000000..3be3c7d --- /dev/null +++ b/config.gradle @@ -0,0 +1,47 @@ +ext { + plugins = [ + maven : "com.github.dcendents.android-maven", + bintray: "com.jfrog.bintray" + ] + + android = [ + applicationId : "com.lnysky.tech.state.sample", + compileSdkVersion: 28, + buildToolsVersion: "28.0.3", + + minSdkVersion : 14, + targetSdkVersion : 28, + + versionCode : 1, + versionName : "0.0.1", + ] + + bintray = [ + version : "0.0.1", // 指定库的版本号 + group : "com.lnysky.tech", // 库的group名,确定好之后不能修改 + + siteUrl : "https://github.com/lnysky/scorpio.git", // 项目开源地址 + gitUrl : "git@github.com:lnysky/scorpio.git", // 项目git地址 + + packaging : "aar", + name : "scorpio", // 项目名,随意 + description : "Library for android", // 项目描述,随意 + + licenseName : "The Apache Software License, Version 2.0", // 开源协议 + licenseUrl : "http://www.apache.org/licenses/LICENSE-2.0.txt", // 开源协议地址 + + developerId : "lnysky", // 开发者id + developerName : "lnysky", // 开发者姓名 + developerEmail: "lnybrave@gmail.com", // 开发者邮箱 + + binrayLibrary : "scorpio", // 项目在bintray上的名称 + bintrayRepo : "maven", // 发布到自己在bintray的哪个仓库中,一般默认maven + bintrayUser : "danyon", // bintray的用户名 + bintrayLicense: "Apache-2.0" // 指定bintray上的开源协议 + ] + + dependencies = [ + appCompat : "com.android.support:appcompat-v7:27.1.1", + constraint: "com.android.support.constraint:constraint-layout:1.1.3" + ] +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..aac7c9b --- /dev/null +++ b/gradle.properties @@ -0,0 +1,17 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..13372aef5e24af05341d49695ee84e5f9b594659 GIT binary patch literal 53636 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ⅅ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 H-+%o-(+5aQ literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..0892cb5 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Oct 24 19:18:12 CST 2018 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..9d82f78 --- /dev/null +++ b/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..8a0b282 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/scorpio/.gitignore b/scorpio/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/scorpio/.gitignore @@ -0,0 +1 @@ +/build diff --git a/scorpio/build.gradle b/scorpio/build.gradle new file mode 100644 index 0000000..12dae29 --- /dev/null +++ b/scorpio/build.gradle @@ -0,0 +1,23 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion rootProject.ext.android.compileSdkVersion + buildToolsVersion rootProject.ext.android.buildToolsVersion + + defaultConfig { + minSdkVersion rootProject.ext.android.minSdkVersion + targetSdkVersion rootProject.ext.android.targetSdkVersion + } + + resourcePrefix "scorpio_" +} + +dependencies { + implementation rootProject.ext.dependencies.appCompat + testImplementation 'junit:junit:4.12' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' +} + +apply from: 'https://raw.githubusercontent.com/yanzhenjie/bintray/master/maven.gradle' +// gradlew.bat bintrayupload diff --git a/scorpio/proguard-rules.pro b/scorpio/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ b/scorpio/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/scorpio/src/androidTest/java/com/lnysky/tech/scorpio/ExampleInstrumentedTest.java b/scorpio/src/androidTest/java/com/lnysky/tech/scorpio/ExampleInstrumentedTest.java new file mode 100644 index 0000000..a554ca4 --- /dev/null +++ b/scorpio/src/androidTest/java/com/lnysky/tech/scorpio/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.lnysky.tech.scorpio; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.huiyu.tech.loading.test", appContext.getPackageName()); + } +} diff --git a/scorpio/src/main/AndroidManifest.xml b/scorpio/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8cc0a73 --- /dev/null +++ b/scorpio/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/Bar.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/Bar.java new file mode 100644 index 0000000..43e352f --- /dev/null +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/Bar.java @@ -0,0 +1,14 @@ +package com.lnysky.tech.scorpio; + +public interface Bar { + + Loading loading(); + + Content content(); + + Empty empty(); + + Error error(); + + T get(Class clazz); +} diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/Content.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/Content.java new file mode 100644 index 0000000..2e66824 --- /dev/null +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/Content.java @@ -0,0 +1,23 @@ +package com.lnysky.tech.scorpio; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +/** + * Created by lny on 2018/11/28. + */ +public final class Content extends Provider { + + private View view; + + void setView(View view) { + this.view = view; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup parent) { + return view; + } + +} diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/Empty.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/Empty.java new file mode 100644 index 0000000..e963457 --- /dev/null +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/Empty.java @@ -0,0 +1,39 @@ +package com.lnysky.tech.scorpio; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +/** + * Created by lny on 2018/11/28. + */ +public class Empty extends Provider { + + private ImageView emptyImage; + private TextView emptyText; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup parent) { + View view = inflater.inflate(R.layout.scorpio_state_empty, parent, false); + emptyImage = view.findViewById(R.id.empty_image); + emptyText = view.findViewById(R.id.empty_text); + return view; + } + + public Empty setImg(int img) { + if (emptyImage != null) { + emptyImage.setImageResource(img); + } + return this; + } + + public Empty setTips(String tips) { + if (emptyText != null) { + emptyText.setText(tips); + } + return this; + } + +} diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/Error.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/Error.java new file mode 100644 index 0000000..dd1c27c --- /dev/null +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/Error.java @@ -0,0 +1,62 @@ +package com.lnysky.tech.scorpio; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +/** + * Created by lny on 2018/11/28. + */ +public class Error extends Provider { + + private ImageView errorImage; + private TextView errorText; + private TextView retryButton; + private View.OnClickListener onRetryListener; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup parent) { + View view = inflater.inflate(R.layout.scorpio_state_error, parent, false); + errorImage = view.findViewById(R.id.error_image); + errorText = view.findViewById(R.id.error_text); + retryButton = view.findViewById(R.id.retry_button); + retryButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (onRetryListener != null) { + onRetryListener.onClick(v); + } + } + }); + return view; + } + + public Error setImg(int img) { + if (errorImage != null) { + errorImage.setImageResource(img); + } + return this; + } + + public Error setTips(String tips) { + if (errorText != null) { + errorText.setText(tips); + } + return this; + } + + public Error setRetryText(String retryText) { + if (retryButton != null) { + retryButton.setText(retryText); + } + return this; + } + + public Error setOnRetryListener(View.OnClickListener onRetryListener) { + this.onRetryListener = onRetryListener; + return this; + } + +} diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/Loading.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/Loading.java new file mode 100644 index 0000000..db3a498 --- /dev/null +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/Loading.java @@ -0,0 +1,28 @@ +package com.lnysky.tech.scorpio; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +/** + * Created by lny on 2018/11/28. + */ +public class Loading extends Provider { + + private TextView loadingText; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup parent) { + View view = inflater.inflate(R.layout.scorpio_state_loading, parent, false); + loadingText = view.findViewById(R.id.loading_text); + return view; + } + + public Loading setTips(String tips) { + if (loadingText != null) { + loadingText.setText(tips); + } + return this; + } +} diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/Provider.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/Provider.java new file mode 100644 index 0000000..18023e6 --- /dev/null +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/Provider.java @@ -0,0 +1,36 @@ +package com.lnysky.tech.scorpio; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +/** + * Created by lny on 2018/11/28. + */ +public abstract class Provider { + + private StateLayout.Holder holder; + + void setHolder(StateLayout.Holder holder) { + this.holder = holder; + } + + StateLayout.Holder getHolder() { + return holder; + } + + public void show() { + holder.show(); + } + + public View getView() { + return holder.getView(); + } + + protected void onDisplay(boolean display) { + + } + + public abstract View onCreateView(LayoutInflater inflater, ViewGroup parent); + +} diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/ProviderStore.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/ProviderStore.java new file mode 100644 index 0000000..d331edc --- /dev/null +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/ProviderStore.java @@ -0,0 +1,22 @@ +package com.lnysky.tech.scorpio; + +import java.util.HashMap; + +/** + * Created by lny on 2018/11/28. + */ +class ProviderStore { + + private HashMap mProviders = new HashMap<>(); + + void put(String key, Provider provider) { + if (mProviders.get(key) != null) { + throw new IllegalArgumentException("provider is registered"); + } + mProviders.put(key, provider); + } + + Provider get(String key) { + return mProviders.get(key); + } +} diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/Scorpio.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/Scorpio.java new file mode 100644 index 0000000..e510367 --- /dev/null +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/Scorpio.java @@ -0,0 +1,68 @@ +package com.lnysky.tech.scorpio; + +import android.app.Activity; +import android.support.v4.app.Fragment; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewParent; +import android.widget.RelativeLayout; + +/** + * Created by lny on 2018/11/28. + */ +public class Scorpio { + + public static Bar with(Activity activity) { + View view = ((ViewGroup) activity.findViewById(android.R.id.content)).getChildAt(0); + return with(view, false); + } + + public static Bar with(Fragment fragment) { + View view = fragment.getView(); + return with(view, true); + } + + public static Bar with(android.app.Fragment fragment) { + View view = fragment.getView(); + return with(view, true); + } + + public static Bar with(View view) { + return with(view, true); + } + + private static Bar with(View view, boolean isParent) { + if (view == null) { + throw new NullPointerException("view must be not null"); + } + + ViewParent viewParent = view.getParent(); + if (viewParent instanceof RelativeLayout) { + throw new IllegalStateException("the parent of view is RelativeLayout, not support"); + } + + if (isParent) { + if (viewParent instanceof Bar) { + return (Bar) viewParent; + } + } else { + if (view instanceof Bar) { + return (Bar) view; + } + } + + if (viewParent instanceof ViewGroup) { + ViewGroup parent = (ViewGroup) viewParent; + ViewGroup.LayoutParams lp = view.getLayoutParams(); + int index = parent.indexOfChild(view); + parent.removeView(view); + + StateLayout layout = new StateLayout(view); + parent.addView(layout, index, lp); + return layout; + } else { + throw new IllegalStateException("view must have a non-null ViewGroup viewParent"); + } + } + +} diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/StateLayout.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/StateLayout.java new file mode 100644 index 0000000..b86e8fc --- /dev/null +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/StateLayout.java @@ -0,0 +1,160 @@ +package com.lnysky.tech.scorpio; + +import android.annotation.SuppressLint; +import android.support.annotation.NonNull; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewParent; +import android.widget.FrameLayout; + +/** + * Created by lny on 2018/11/28. + */ +@SuppressLint("ViewConstructor") +final class StateLayout extends FrameLayout implements Bar { + + private final LayoutInflater inflater; + private final Factory factory; + private final ProviderStore providerStore; + + private Holder currentHolder; + + public StateLayout(View view) { + super(view.getContext()); + inflater = LayoutInflater.from(view.getContext()); + factory = new NewInstanceFactory(); + providerStore = new ProviderStore(); + initContentView(view); + } + + private void initContentView(View view) { + Content provider = createProvider(Content.class); + provider.setView(view); + show(bindHolder(provider)); + } + + private T createProvider(Class clazz) { + String canonicalName = clazz.getCanonicalName(); + Provider provider = providerStore.get(canonicalName); + if (provider == null) { + provider = factory.create(clazz); + providerStore.put(canonicalName, provider); + } + //noinspection unchecked + return (T) provider; + } + + private void show(Holder holder) { + if (!holder.equals(currentHolder)) { + if (currentHolder != null) { + currentHolder.onDisplay(false); + } + holder.onDisplay(true); + currentHolder = holder; + } + } + + @NonNull + private Holder bindHolder(Provider provider) { + Holder holder = provider.getHolder(); + if (holder != null) { + return holder; + } + holder = new Holder(this, provider); + View view = holder.makeView(inflater, this); + if (view == null) { + throw new NullPointerException("view must be non-null"); + } + ViewParent parent = view.getParent(); + if (parent == null) { + addView(view); + } else { + throw new IllegalStateException("view's parent must be null"); + } + return holder; + } + + @Override + public Content content() { + return get(Content.class); + } + + @Override + public Loading loading() { + return get(Loading.class); + } + + @Override + public Empty empty() { + return get(Empty.class); + } + + @Override + public Error error() { + return get(Error.class); + } + + @Override + public T get(Class clazz) { + T provider = createProvider(clazz); + bindHolder(provider); + return provider; + } + + interface Factory { + T create(Class clazz); + } + + static class NewInstanceFactory implements Factory { + + @SuppressWarnings("ClassNewInstance") + @NonNull + @Override + public T create(@NonNull Class modelClass) { + //noinspection TryWithIdenticalCatches + try { + return modelClass.newInstance(); + } catch (InstantiationException e) { + throw new RuntimeException("Cannot create an instance of " + modelClass, e); + } catch (IllegalAccessException e) { + throw new RuntimeException("Cannot create an instance of " + modelClass, e); + } + } + } + + static class Holder { + + private final StateLayout layout; + private final Provider provider; + private View view; + + Holder(StateLayout layout, Provider provider) { + this.layout = layout; + this.provider = provider; + this.provider.setHolder(this); + } + + View getView() { + return view; + } + + View makeView(LayoutInflater inflater, ViewGroup parent) { + if (view != null) return view; + view = provider.onCreateView(inflater, parent); + return view; + } + + void show() { + layout.show(this); + } + + void onDisplay(boolean display) { + if (view != null) { + view.setVisibility(display ? VISIBLE : GONE); + } + provider.onDisplay(display); + } + } + +} diff --git a/scorpio/src/main/res/drawable-hdpi/scorpio_state_empty.png b/scorpio/src/main/res/drawable-hdpi/scorpio_state_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..02c763eed9dd856800e78841d0c5cacce13c867e GIT binary patch literal 7967 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 literal 0 HcmV?d00001 diff --git a/scorpio/src/main/res/drawable-xxhdpi/scorpio_state_empty.png b/scorpio/src/main/res/drawable-xxhdpi/scorpio_state_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..de8f77c29224e9d9b46bcd7871bd7812890547bb GIT binary patch literal 17052 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

{ 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 literal 0 HcmV?d00001 diff --git a/scorpio/src/main/res/drawable-xxhdpi/scorpio_state_error.png b/scorpio/src/main/res/drawable-xxhdpi/scorpio_state_error.png new file mode 100644 index 0000000000000000000000000000000000000000..22ee6b04593fc6228c588ccc85bfb1e96d445bf5 GIT binary patch literal 36705 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 KMNUMnLSTY(nmc&_ literal 0 HcmV?d00001 diff --git a/scorpio/src/main/res/drawable-xxxhdpi/scorpio_state_empty.png b/scorpio/src/main/res/drawable-xxxhdpi/scorpio_state_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..43c68107b2d58173dd6787cc839efa3f09892db2 GIT binary patch literal 27794 zcmeFZ`8(9#8$bR;MJi0PZ<&h{^sr-kn+Ihrj^8KP4f!kl-M0?S z33bP!lV5cGcQebyjMur_NZkI%_}tLMYTO~=IfdvGu%oAu$0e`Vz(nm2J-yohLUx!V zLywg`XpUQQJN&+1U{u8YxqQs$RFtt)=jAM;TcW6n^A!c5eKhxVcG?*}kKxo#jdum> zY#d#z=G*CLf5!fD^M-X4f-Hz3{QtlGf3yY#9!mY(juEYLHZ^tr3xoAEn!QH&mQqM) zsDED07eP!*Dfmu<{{lY?50qb@rJH zH3H(c0PG>22jc-tjzzEUbaiz}-tkF430}x-;xAd%xnUx<4A^4jAi{6|6L_$R@3%IUme%8n1m zR7Xus%_y{N@~4tG(F>lg3S}-^!7H8;(=_NK&>h!HWuFAM4elAII^zbEc0VP`oKrZ)_52xW z1G#pF(!>Kh-ZWbjYL~X% zD|p7^GuUOZnOd2QvIjR%$MAE>si~<*Q{CM^<3kRS+L_s-N{b38_Cdcf-nfrn8U1$=PpLQ+vP6PJw}v>y>fVhY{t7bea9)sfy!V3iL; zY3Kg-Q_4O}UNWkxtz|y#QiRX1(JWaO#vKVnb@C65OE5XfywA}8*8B4nSrgXnjV1RJ zk{%Y+{m1yd;{5!X%V>i){poXtNOJmjo?A2{Mc(8<3`iIqp6z5xL9@xc~*S@TsJ&ydn3Pqewey`pm#E~|E&ZkzX;WU@rlq7re+fO z$+u4JPOP586`k+r;plOW*At(!PU_ym zbC~ndLZ#vH6|$qRNyok`Y13Dg15IE30u%6pgXOJ{Z zQltchgf6V7e+*3$#PDO9-jZ6i!ngj|sF;%l*`RGEqg6#sP0a?a`dM%r@5+z7Z6)D# zm*9xKwB`XN70t(OY-}8ZO8HyrHnTx&KhqA~@FNRaDz4pyN_cP8k7YFlr{U#87zzg` z`)7^kXlnDH@7D!bns_m`9Tbrws@wg}l+9{CM!0*b^8$vz9n6RXvCj)q!>7~W0HMS2 zc>cJn)szeAJ*Secyy@pj#-aY)sO5rRJ7oAfg2nL#aE%r^^J{z44r(^=eW5zo{xIam~659j1V{{f8x5fGy|8jSbg{{ zq|}|jdq*7;koPN^zX-RcXD#$FuBW~H`MDS;*0v4z-Fg4+6)CNv4uQS)Yi_PiSxak2 zG72LZBTu)j#c?_N)$LYC|K5bJx^hefWfY{9T=o6$j?a0ki~>1mE3i*1;nBNEU4v-2Ub~S7|DyFMRdU#S z>ymT2+rxeGwv7QxmZ(2!QO>9z)`MGcR_v8(Yk#ZMb!V%Zr}(Y!N@Ac$%xui6Lb7Tv zuAzU;q&d7g=E#dI>v9+Q>PG)cajmHmzeSw}LH+2;n+I=J9w#7fkK8uZR^IwAUg6b) z-t6O&S}0Wfxx6yAC@!?!RMzN^;o;!JOkq7@ij~j#e)qCwi!T+$eW9(KZDH5|=kYl4 z+m46OyT{wUNEw;zuBNq$%7#6_P+q8NXoNJDlq}VeUcvL!d+Tcy9a{A`c#=7h3Wrw` zuDto(pDJf_#KR4{31)ge=29%t64VS3eP)9SVk-uh@1;5?<4bw^zf4U{$!uJAA#7eO zwXOFJ9IkLSWC{BRRg{hMY!kSx6#s&qoh~YEq*yjQFhw`j`u(Z@5j%I{sfN1E6a1pr zDlnfD2YEhTM319T+|bO<$C)e~4=e#eJLHpR_CBjVe0$^Og?JH6LDNAQxjyj6!`*$s z3AQ;sYd-OPP#`(%sdp&h!3Vr7nktSKt8NdQshGT(qK=#OgY_R7EAmc9V{hHlNrRKq zS=5%YLgR@FR!+%?S?&)JyIT({UHV>`Q@QmyWblQx6qO&)>XhX;s*1C1b$=&kf6WD2 z)V~=AUjMCi$p*elm_BBPElqvEu92o1ell4Su8~WModuPu`9)^}Vt_nYVl(|pJ5-)D zZv$D71zV?@%UGG#D1kWqX*h@E>);{`Z&VMcnN5cr1q1S%l)&4UNAB zwd#>c&M%o*9EZ@⋙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 literal 0 HcmV?d00001 diff --git a/scorpio/src/main/res/drawable-xxxhdpi/scorpio_state_error.png b/scorpio/src/main/res/drawable-xxxhdpi/scorpio_state_error.png new file mode 100644 index 0000000000000000000000000000000000000000..6db65536191e98a22a83f3955094183ffab2497c GIT binary patch literal 63963 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 X9*J?Pqn?#T;Kxw^0$QwVfB*jg!8V0t literal 0 HcmV?d00001 diff --git a/scorpio/src/main/res/drawable/scorpio_state_retry.xml b/scorpio/src/main/res/drawable/scorpio_state_retry.xml new file mode 100644 index 0000000..252e54c --- /dev/null +++ b/scorpio/src/main/res/drawable/scorpio_state_retry.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/scorpio/src/main/res/layout/scorpio_state_empty.xml b/scorpio/src/main/res/layout/scorpio_state_empty.xml new file mode 100644 index 0000000..14815a4 --- /dev/null +++ b/scorpio/src/main/res/layout/scorpio_state_empty.xml @@ -0,0 +1,24 @@ + + + + + + + \ No newline at end of file diff --git a/scorpio/src/main/res/layout/scorpio_state_error.xml b/scorpio/src/main/res/layout/scorpio_state_error.xml new file mode 100644 index 0000000..582c5ae --- /dev/null +++ b/scorpio/src/main/res/layout/scorpio_state_error.xml @@ -0,0 +1,37 @@ + + + + + + + + + + \ No newline at end of file diff --git a/scorpio/src/main/res/layout/scorpio_state_loading.xml b/scorpio/src/main/res/layout/scorpio_state_loading.xml new file mode 100644 index 0000000..78ac096 --- /dev/null +++ b/scorpio/src/main/res/layout/scorpio_state_loading.xml @@ -0,0 +1,24 @@ + + + + + + + \ No newline at end of file diff --git a/scorpio/src/main/res/values-zh/strings.xml b/scorpio/src/main/res/values-zh/strings.xml new file mode 100644 index 0000000..06d717f --- /dev/null +++ b/scorpio/src/main/res/values-zh/strings.xml @@ -0,0 +1,6 @@ + + 正在加载… + 这是空的~~ + 出错了,请重试~~ + 重试 + diff --git a/scorpio/src/main/res/values/strings.xml b/scorpio/src/main/res/values/strings.xml new file mode 100644 index 0000000..be958c0 --- /dev/null +++ b/scorpio/src/main/res/values/strings.xml @@ -0,0 +1,6 @@ + + Loading, please wait later + There is no data + Error, please try again + Try again + diff --git a/scorpio/src/test/java/com/lnysky/tech/scorpio/ExampleUnitTest.java b/scorpio/src/test/java/com/lnysky/tech/scorpio/ExampleUnitTest.java new file mode 100644 index 0000000..965bd60 --- /dev/null +++ b/scorpio/src/test/java/com/lnysky/tech/scorpio/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package com.lnysky.tech.scorpio; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() throws Exception { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..25594ee --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include ':app', ':scorpio' From 4b8b4ee9219dc5b8198f584909f0cb761ecc99e4 Mon Sep 17 00:00:00 2001 From: lnysky <892505102@qq.com> Date: Sun, 28 Apr 2019 14:16:30 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tech/scorpio/sample/MainActivity.java | 43 +++-- .../tech/scorpio/sample/OneFragment.java | 10 +- .../tech/scorpio/sample/TestFragment.java | 10 +- .../java/com/lnysky/tech/scorpio/Bar.java | 9 +- .../java/com/lnysky/tech/scorpio/Content.java | 9 +- .../java/com/lnysky/tech/scorpio/Empty.java | 47 ++++-- .../java/com/lnysky/tech/scorpio/Error.java | 73 +++++---- .../java/com/lnysky/tech/scorpio/Loading.java | 36 +++-- .../com/lnysky/tech/scorpio/Provider.java | 36 ----- .../lnysky/tech/scorpio/ProviderStore.java | 22 --- .../java/com/lnysky/tech/scorpio/Scorpio.java | 64 ++++++++ .../java/com/lnysky/tech/scorpio/State.java | 28 ++++ .../com/lnysky/tech/scorpio/StateLayout.java | 147 ++++++------------ .../lnysky/tech/scorpio/StateProvider.java | 64 ++++++++ .../com/lnysky/tech/scorpio/StateStore.java | 22 +++ .../lnysky/tech/scorpio/StateSwitcher.java | 5 + .../lnysky/tech/scorpio/StateViewHolder.java | 16 ++ 17 files changed, 403 insertions(+), 238 deletions(-) delete mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/Provider.java delete mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/ProviderStore.java create mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/State.java create mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/StateProvider.java create mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/StateStore.java create mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/StateSwitcher.java create mode 100644 scorpio/src/main/java/com/lnysky/tech/scorpio/StateViewHolder.java diff --git a/app/src/main/java/com/lnysky/tech/scorpio/sample/MainActivity.java b/app/src/main/java/com/lnysky/tech/scorpio/sample/MainActivity.java index 804cc15..fec5d4d 100644 --- a/app/src/main/java/com/lnysky/tech/scorpio/sample/MainActivity.java +++ b/app/src/main/java/com/lnysky/tech/scorpio/sample/MainActivity.java @@ -10,8 +10,10 @@ import android.view.ViewGroup; import android.view.animation.AlphaAnimation; -import com.lnysky.tech.scorpio.Provider; import com.lnysky.tech.scorpio.Scorpio; +import com.lnysky.tech.scorpio.State; +import com.lnysky.tech.scorpio.StateSwitcher; +import com.lnysky.tech.scorpio.StateViewHolder; public class MainActivity extends AppCompatActivity { @@ -29,26 +31,26 @@ public void testFragment(View v) { public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_loading: - Scorpio.with(this).loading().setTips("加载中...").show(); + Scorpio.loading(this).setTips("加载中...").show(); return true; case R.id.action_empty: - Scorpio.with(this).empty().setTips("主页面空空的~~").show(); + Scorpio.empty(this).setTips("主页面空空的~~").show(); return true; case R.id.action_error: - Scorpio.with(this).error() + Scorpio.error(this) .setRetryText("重新加载") .setOnRetryListener(new View.OnClickListener() { @Override public void onClick(View v) { - Scorpio.with(MainActivity.this).loading().show(); + Scorpio.loading(MainActivity.this).show(); } }).show(); return true; case R.id.action_custom: - Scorpio.with(this).get(CustomProvider.class).show(); + Scorpio.with(this).get(CustomState.class).show(); return true; case R.id.action_content: - Scorpio.with(this).content().show(); + Scorpio.content(this).show(); return true; } return false; @@ -60,23 +62,36 @@ public boolean onCreateOptionsMenu(Menu menu) { return true; } - public static class CustomProvider extends Provider { + public static class CustomState extends State { + + public CustomState(StateSwitcher switcher) { + super(switcher); + } + @Override - public View onCreateView(LayoutInflater inflater, ViewGroup parent) { - return inflater.inflate(R.layout.custom, parent, false); + protected ViewHolder onCreateStateViewHolder(LayoutInflater inflater, ViewGroup parent) { + View view = inflater.inflate(R.layout.custom, parent, false); + return new ViewHolder(view); } @Override - protected void onDisplay(boolean display) { - super.onDisplay(display); + protected void onSwitchState(ViewHolder holder, boolean show) { + super.onSwitchState(holder, show); AlphaAnimation animation; - if (display) { + if (show) { animation = new AlphaAnimation(0f, 1f); } else { animation = new AlphaAnimation(1f, 0f); } animation.setDuration(1000); - getView().startAnimation(animation); + holder.getView().startAnimation(animation); + } + + static class ViewHolder extends StateViewHolder { + + ViewHolder(View view) { + super(view); + } } } diff --git a/app/src/main/java/com/lnysky/tech/scorpio/sample/OneFragment.java b/app/src/main/java/com/lnysky/tech/scorpio/sample/OneFragment.java index f0d027a..bf8965b 100644 --- a/app/src/main/java/com/lnysky/tech/scorpio/sample/OneFragment.java +++ b/app/src/main/java/com/lnysky/tech/scorpio/sample/OneFragment.java @@ -66,21 +66,21 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat public void onClick(View v) { switch (v.getId()) { case R.id.tv_loading: - Scorpio.with(test).loading().show(); + Scorpio.loading(test).show(); break; case R.id.tv_empty: - Scorpio.with(test).empty().show(); + Scorpio.empty(test).show(); break; case R.id.tv_error: - Scorpio.with(test).error().setOnRetryListener(new View.OnClickListener() { + Scorpio.error(test).setOnRetryListener(new View.OnClickListener() { @Override public void onClick(View v) { - Scorpio.with(test).loading().show(); + Scorpio.loading(test).show(); } }).show(); break; case R.id.tv_content: - Scorpio.with(test).content().show(); + Scorpio.content(test).show(); break; } } diff --git a/app/src/main/java/com/lnysky/tech/scorpio/sample/TestFragment.java b/app/src/main/java/com/lnysky/tech/scorpio/sample/TestFragment.java index ce8e5d6..5aac6ba 100644 --- a/app/src/main/java/com/lnysky/tech/scorpio/sample/TestFragment.java +++ b/app/src/main/java/com/lnysky/tech/scorpio/sample/TestFragment.java @@ -78,21 +78,21 @@ public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); switch (itemId) { case R.id.action_loading: - Scorpio.with(this).loading().show(); + Scorpio.loading(this).show(); break; case R.id.action_empty: - Scorpio.with(this).empty().show(); + Scorpio.empty(this).show(); break; case R.id.action_error: - Scorpio.with(this).error().setOnRetryListener(new View.OnClickListener() { + Scorpio.error(this).setOnRetryListener(new View.OnClickListener() { @Override public void onClick(View v) { - Scorpio.with(TestFragment.this).loading().show(); + Scorpio.loading(TestFragment.this).show(); } }).show(); break; case R.id.action_content: - Scorpio.with(this).content().show(); + Scorpio.content(this).show(); break; } return super.onOptionsItemSelected(item); diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/Bar.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/Bar.java index 43e352f..a8f4466 100644 --- a/scorpio/src/main/java/com/lnysky/tech/scorpio/Bar.java +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/Bar.java @@ -2,13 +2,6 @@ public interface Bar { - Loading loading(); + T get(Class clazz); - Content content(); - - Empty empty(); - - Error error(); - - T get(Class clazz); } diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/Content.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/Content.java index 2e66824..cddcf7e 100644 --- a/scorpio/src/main/java/com/lnysky/tech/scorpio/Content.java +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/Content.java @@ -7,17 +7,18 @@ /** * Created by lny on 2018/11/28. */ -public final class Content extends Provider { +public final class Content extends State { private View view; - void setView(View view) { + public Content(StateSwitcher switcher, View view) { + super(switcher); this.view = view; } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup parent) { - return view; + public StateViewHolder onCreateStateViewHolder(LayoutInflater inflater, ViewGroup parent) { + return new StateViewHolder(view); } } diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/Empty.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/Empty.java index e963457..d0ec029 100644 --- a/scorpio/src/main/java/com/lnysky/tech/scorpio/Empty.java +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/Empty.java @@ -1,5 +1,6 @@ package com.lnysky.tech.scorpio; +import android.support.annotation.DrawableRes; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -9,31 +10,51 @@ /** * Created by lny on 2018/11/28. */ -public class Empty extends Provider { +public class Empty extends State { - private ImageView emptyImage; - private TextView emptyText; + @DrawableRes + private int img; + private String tips; + + public Empty(StateSwitcher switcher) { + super(switcher); + } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup parent) { + public ViewHolder onCreateStateViewHolder(LayoutInflater inflater, ViewGroup parent) { View view = inflater.inflate(R.layout.scorpio_state_empty, parent, false); - emptyImage = view.findViewById(R.id.empty_image); - emptyText = view.findViewById(R.id.empty_text); - return view; + return new ViewHolder(view); } - public Empty setImg(int img) { - if (emptyImage != null) { - emptyImage.setImageResource(img); + @Override + protected void onSwitchState(ViewHolder holder, boolean show) { + super.onSwitchState(holder, show); + if (img != 0) { + holder.emptyImage.setImageResource(img); } + holder.emptyText.setText(tips); + } + + public Empty setImg(@DrawableRes int img) { + this.img = img; return this; } public Empty setTips(String tips) { - if (emptyText != null) { - emptyText.setText(tips); - } + this.tips = tips; return this; } + static class ViewHolder extends StateViewHolder { + + ImageView emptyImage; + TextView emptyText; + + ViewHolder(View view) { + super(view); + emptyImage = view.findViewById(R.id.empty_image); + emptyText = view.findViewById(R.id.empty_text); + } + } + } diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/Error.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/Error.java index dd1c27c..a8c9f7c 100644 --- a/scorpio/src/main/java/com/lnysky/tech/scorpio/Error.java +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/Error.java @@ -1,5 +1,6 @@ package com.lnysky.tech.scorpio; +import android.support.annotation.DrawableRes; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -9,48 +10,46 @@ /** * Created by lny on 2018/11/28. */ -public class Error extends Provider { +public class Error extends State { - private ImageView errorImage; - private TextView errorText; - private TextView retryButton; private View.OnClickListener onRetryListener; + private String tips; + private String retryText; + @DrawableRes + private int errorImage; + + public Error(StateSwitcher switcher) { + super(switcher); + } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup parent) { + protected ViewHolder onCreateStateViewHolder(LayoutInflater inflater, ViewGroup parent) { View view = inflater.inflate(R.layout.scorpio_state_error, parent, false); - errorImage = view.findViewById(R.id.error_image); - errorText = view.findViewById(R.id.error_text); - retryButton = view.findViewById(R.id.retry_button); - retryButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (onRetryListener != null) { - onRetryListener.onClick(v); - } - } - }); - return view; + return new ViewHolder(view); } - public Error setImg(int img) { - if (errorImage != null) { - errorImage.setImageResource(img); + @Override + protected void onSwitchState(ViewHolder holder, boolean show) { + super.onSwitchState(holder, show); + if (errorImage != 0) { + holder.errorImage.setImageResource(errorImage); } + holder.errorText.setText(tips); + holder.retryButton.setText(retryText); + } + + public Error setImg(int img) { + this.errorImage = img; return this; } public Error setTips(String tips) { - if (errorText != null) { - errorText.setText(tips); - } + this.tips = tips; return this; } public Error setRetryText(String retryText) { - if (retryButton != null) { - retryButton.setText(retryText); - } + this.retryText = retryText; return this; } @@ -59,4 +58,26 @@ public Error setOnRetryListener(View.OnClickListener onRetryListener) { return this; } + class ViewHolder extends StateViewHolder { + + ImageView errorImage; + TextView errorText; + TextView retryButton; + + ViewHolder(View view) { + super(view); + errorImage = view.findViewById(R.id.error_image); + errorText = view.findViewById(R.id.error_text); + retryButton = view.findViewById(R.id.retry_button); + retryButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (onRetryListener != null) { + onRetryListener.onClick(v); + } + } + }); + } + } + } diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/Loading.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/Loading.java index db3a498..686b72a 100644 --- a/scorpio/src/main/java/com/lnysky/tech/scorpio/Loading.java +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/Loading.java @@ -8,21 +8,39 @@ /** * Created by lny on 2018/11/28. */ -public class Loading extends Provider { +public class Loading extends State { - private TextView loadingText; + private String tips; + + public Loading(StateSwitcher switcher) { + super(switcher); + } + + public Loading setTips(String tips) { + this.tips = tips; + return this; + } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup parent) { + protected ViewHolder onCreateStateViewHolder(LayoutInflater inflater, ViewGroup parent) { View view = inflater.inflate(R.layout.scorpio_state_loading, parent, false); - loadingText = view.findViewById(R.id.loading_text); - return view; + return new ViewHolder(view); } - public Loading setTips(String tips) { - if (loadingText != null) { - loadingText.setText(tips); + @Override + protected void onSwitchState(ViewHolder holder, boolean show) { + super.onSwitchState(holder, show); + holder.loadingText.setText(tips); + } + + static class ViewHolder extends StateViewHolder { + + TextView loadingText; + + ViewHolder(View view) { + super(view); + loadingText = view.findViewById(R.id.loading_text); } - return this; } + } diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/Provider.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/Provider.java deleted file mode 100644 index 18023e6..0000000 --- a/scorpio/src/main/java/com/lnysky/tech/scorpio/Provider.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.lnysky.tech.scorpio; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -/** - * Created by lny on 2018/11/28. - */ -public abstract class Provider { - - private StateLayout.Holder holder; - - void setHolder(StateLayout.Holder holder) { - this.holder = holder; - } - - StateLayout.Holder getHolder() { - return holder; - } - - public void show() { - holder.show(); - } - - public View getView() { - return holder.getView(); - } - - protected void onDisplay(boolean display) { - - } - - public abstract View onCreateView(LayoutInflater inflater, ViewGroup parent); - -} diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/ProviderStore.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/ProviderStore.java deleted file mode 100644 index d331edc..0000000 --- a/scorpio/src/main/java/com/lnysky/tech/scorpio/ProviderStore.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.lnysky.tech.scorpio; - -import java.util.HashMap; - -/** - * Created by lny on 2018/11/28. - */ -class ProviderStore { - - private HashMap mProviders = new HashMap<>(); - - void put(String key, Provider provider) { - if (mProviders.get(key) != null) { - throw new IllegalArgumentException("provider is registered"); - } - mProviders.put(key, provider); - } - - Provider get(String key) { - return mProviders.get(key); - } -} diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/Scorpio.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/Scorpio.java index e510367..d30cad9 100644 --- a/scorpio/src/main/java/com/lnysky/tech/scorpio/Scorpio.java +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/Scorpio.java @@ -65,4 +65,68 @@ private static Bar with(View view, boolean isParent) { } } + public static Content content(Activity activity) { + return with(activity).get(Content.class); + } + + public static Content content(Fragment fragment) { + return with(fragment).get(Content.class); + } + + public static Content content(android.app.Fragment fragment) { + return with(fragment).get(Content.class); + } + + public static Content content(View view) { + return with(view).get(Content.class); + } + + public static Loading loading(Activity activity) { + return with(activity).get(Loading.class); + } + + public static Loading loading(Fragment fragment) { + return with(fragment).get(Loading.class); + } + + public static Loading loading(android.app.Fragment fragment) { + return with(fragment).get(Loading.class); + } + + public static Loading loading(View view) { + return with(view).get(Loading.class); + } + + public static Empty empty(Activity activity) { + return with(activity).get(Empty.class); + } + + public static Empty empty(Fragment fragment) { + return with(fragment).get(Empty.class); + } + + public static Empty empty(android.app.Fragment fragment) { + return with(fragment).get(Empty.class); + } + + public static Empty empty(View view) { + return with(view).get(Empty.class); + } + + public static Error error(Activity activity) { + return with(activity).get(Error.class); + } + + public static Error error(Fragment fragment) { + return with(fragment).get(Error.class); + } + + public static Error error(android.app.Fragment fragment) { + return with(fragment).get(Error.class); + } + + public static Error error(View view) { + return with(view).get(Error.class); + } + } diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/State.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/State.java new file mode 100644 index 0000000..8b8c4a7 --- /dev/null +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/State.java @@ -0,0 +1,28 @@ +package com.lnysky.tech.scorpio; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +/** + * Created by lny on 2018/11/28. + */ +public abstract class State { + + private StateSwitcher switcher; + + public State(StateSwitcher switcher) { + this.switcher = switcher; + } + + public void show() { + switcher.switchState(this); + } + + protected abstract VH onCreateStateViewHolder(LayoutInflater inflater, ViewGroup parent); + + protected void onSwitchState(VH holder, boolean show) { + holder.getView().setVisibility(show ? View.VISIBLE : View.GONE); + } + +} diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/StateLayout.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/StateLayout.java index b86e8fc..9a8c739 100644 --- a/scorpio/src/main/java/com/lnysky/tech/scorpio/StateLayout.java +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/StateLayout.java @@ -4,65 +4,64 @@ import android.support.annotation.NonNull; import android.view.LayoutInflater; import android.view.View; -import android.view.ViewGroup; import android.view.ViewParent; import android.widget.FrameLayout; +import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; +import java.util.Map; + /** * Created by lny on 2018/11/28. */ @SuppressLint("ViewConstructor") -final class StateLayout extends FrameLayout implements Bar { +final class StateLayout extends FrameLayout implements Bar, StateSwitcher { private final LayoutInflater inflater; - private final Factory factory; - private final ProviderStore providerStore; + private final StateProvider stateProvider; + private final StateProvider.DefaultFactory defaultFactory; + private Map holderMap = new HashMap<>(); - private Holder currentHolder; + private State currentState; public StateLayout(View view) { super(view.getContext()); inflater = LayoutInflater.from(view.getContext()); - factory = new NewInstanceFactory(); - providerStore = new ProviderStore(); - initContentView(view); + stateProvider = new StateProvider(); + defaultFactory = new StateProvider.DefaultFactory(this); + init(view); } - private void initContentView(View view) { - Content provider = createProvider(Content.class); - provider.setView(view); - show(bindHolder(provider)); + private void init(View view) { + switchState(get(Content.class, new ContentStateFactory(this, view))); } - private T createProvider(Class clazz) { - String canonicalName = clazz.getCanonicalName(); - Provider provider = providerStore.get(canonicalName); - if (provider == null) { - provider = factory.create(clazz); - providerStore.put(canonicalName, provider); - } - //noinspection unchecked - return (T) provider; + @Override + public void switchState(State state) { + show(state, getStateViewHolder(state)); } - private void show(Holder holder) { - if (!holder.equals(currentHolder)) { - if (currentHolder != null) { - currentHolder.onDisplay(false); + public void show(State state, StateViewHolder viewHolder) { + if (!state.equals(currentState)) { + if (currentState != null) { + //noinspection unchecked + currentState.onSwitchState(getStateViewHolder(currentState), false); } - holder.onDisplay(true); - currentHolder = holder; + + //noinspection unchecked + state.onSwitchState(viewHolder, true); + currentState = state; } } @NonNull - private Holder bindHolder(Provider provider) { - Holder holder = provider.getHolder(); - if (holder != null) { - return holder; + private StateViewHolder getStateViewHolder(State state) { + StateViewHolder viewHolder = holderMap.get(state); + if (viewHolder != null) { + return viewHolder; } - holder = new Holder(this, provider); - View view = holder.makeView(inflater, this); + viewHolder = state.onCreateStateViewHolder(inflater, this); + View view = viewHolder.getView(); if (view == null) { throw new NullPointerException("view must be non-null"); } @@ -72,89 +71,45 @@ private Holder bindHolder(Provider provider) { } else { throw new IllegalStateException("view's parent must be null"); } - return holder; + holderMap.put(state, viewHolder); + return viewHolder; } @Override - public Content content() { - return get(Content.class); + public T get(Class clazz) { + return get(clazz, defaultFactory); } - @Override - public Loading loading() { - return get(Loading.class); + public T get(Class clazz, @NonNull StateProvider.Factory factory) { + return stateProvider.get(clazz, factory); } - @Override - public Empty empty() { - return get(Empty.class); - } + static class ContentStateFactory extends StateProvider.DefaultFactory { - @Override - public Error error() { - return get(Error.class); - } - - @Override - public T get(Class clazz) { - T provider = createProvider(clazz); - bindHolder(provider); - return provider; - } - - interface Factory { - T create(Class clazz); - } + private View view; - static class NewInstanceFactory implements Factory { + ContentStateFactory(StateSwitcher switcher, View view) { + super(switcher); + this.view = view; + } @SuppressWarnings("ClassNewInstance") @NonNull @Override - public T create(@NonNull Class modelClass) { + public T create(@NonNull Class modelClass) { //noinspection TryWithIdenticalCatches try { - return modelClass.newInstance(); + return modelClass.getConstructor(StateSwitcher.class, View.class) + .newInstance(switcher, view); } catch (InstantiationException e) { throw new RuntimeException("Cannot create an instance of " + modelClass, e); } catch (IllegalAccessException e) { throw new RuntimeException("Cannot create an instance of " + modelClass, e); + } catch (NoSuchMethodException e) { + throw new RuntimeException("Cannot create an instance of " + modelClass, e); + } catch (InvocationTargetException e) { + throw new RuntimeException("Cannot create an instance of " + modelClass, e); } } } - - static class Holder { - - private final StateLayout layout; - private final Provider provider; - private View view; - - Holder(StateLayout layout, Provider provider) { - this.layout = layout; - this.provider = provider; - this.provider.setHolder(this); - } - - View getView() { - return view; - } - - View makeView(LayoutInflater inflater, ViewGroup parent) { - if (view != null) return view; - view = provider.onCreateView(inflater, parent); - return view; - } - - void show() { - layout.show(this); - } - - void onDisplay(boolean display) { - if (view != null) { - view.setVisibility(display ? VISIBLE : GONE); - } - provider.onDisplay(display); - } - } - } diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/StateProvider.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/StateProvider.java new file mode 100644 index 0000000..1594ef9 --- /dev/null +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/StateProvider.java @@ -0,0 +1,64 @@ +package com.lnysky.tech.scorpio; + +import android.support.annotation.NonNull; + +import java.lang.reflect.InvocationTargetException; + +/** + * Created by lny on 2018/11/28. + */ +final class StateProvider { + + private final StateStore stateStore; + + StateProvider() { + this.stateStore = new StateStore(); + } + + T get(Class clazz, @NonNull Factory factory) { + String canonicalName = clazz.getCanonicalName(); + State state = stateStore.get(canonicalName); + if (clazz.isInstance(state)) { + //noinspection unchecked + return (T) state; + } + + state = factory.create(clazz); + stateStore.put(canonicalName, state); + + //noinspection unchecked + return (T) state; + } + + interface Factory { + T create(Class clazz); + } + + static class DefaultFactory implements Factory { + + StateSwitcher switcher; + + DefaultFactory(StateSwitcher switcher) { + this.switcher = switcher; + } + + @SuppressWarnings("ClassNewInstance") + @NonNull + @Override + public T create(@NonNull Class modelClass) { + //noinspection TryWithIdenticalCatches + try { + return modelClass.getConstructor(StateSwitcher.class).newInstance(switcher); + } catch (InstantiationException e) { + throw new RuntimeException("Cannot create an instance of " + modelClass, e); + } catch (IllegalAccessException e) { + throw new RuntimeException("Cannot create an instance of " + modelClass, e); + } catch (NoSuchMethodException e) { + throw new RuntimeException("Cannot create an instance of " + modelClass, e); + } catch (InvocationTargetException e) { + throw new RuntimeException("Cannot create an instance of " + modelClass, e); + } + } + } + +} diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/StateStore.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/StateStore.java new file mode 100644 index 0000000..aea68dc --- /dev/null +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/StateStore.java @@ -0,0 +1,22 @@ +package com.lnysky.tech.scorpio; + +import java.util.HashMap; + +/** + * Created by lny on 2018/11/28. + */ +class StateStore { + + private HashMap mProviders = new HashMap<>(); + + void put(String key, State state) { + if (mProviders.get(key) != null) { + throw new IllegalArgumentException("state is registered"); + } + mProviders.put(key, state); + } + + State get(String key) { + return mProviders.get(key); + } +} diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/StateSwitcher.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/StateSwitcher.java new file mode 100644 index 0000000..f1369af --- /dev/null +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/StateSwitcher.java @@ -0,0 +1,5 @@ +package com.lnysky.tech.scorpio; + +public interface StateSwitcher { + void switchState(State state); +} diff --git a/scorpio/src/main/java/com/lnysky/tech/scorpio/StateViewHolder.java b/scorpio/src/main/java/com/lnysky/tech/scorpio/StateViewHolder.java new file mode 100644 index 0000000..eb8767e --- /dev/null +++ b/scorpio/src/main/java/com/lnysky/tech/scorpio/StateViewHolder.java @@ -0,0 +1,16 @@ +package com.lnysky.tech.scorpio; + +import android.view.View; + +public class StateViewHolder { + + private View view; + + public StateViewHolder(View view) { + this.view = view; + } + + public View getView() { + return view; + } +}