diff --git a/README.md b/README.md
index ed97c7b..814a9a2 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
-
-
+
+
@@ -13,7 +13,7 @@
- 网络异常视图
- 内容视图
-[apk下载](https://github.com/qyxxjd/MultipleStatusView/blob/master/apk/MultipleStatusView.apk?raw=true)
+[apk下载](https://github.com/qyxxjd/MultipleStatusView/blob/master/apk/MultipleStatusView_1.7_9.apk?raw=true)
![](https://github.com/qyxxjd/MultipleStatusView/blob/master/screenshots/demo.gif)
@@ -21,7 +21,7 @@
```gradle
dependencies {
- implementation 'com.classic.common:multiple-status-view:1.6'
+ implementation 'com.classic.common:multiple-status-view:1.7'
}
```
@@ -44,21 +44,29 @@ MultipleStatusView multipleStatusView = (MultipleStatusView) findViewById(R.id.m
//显示加载中视图
multipleStatusView.showLoading();
+// mMultipleStatusView.showLoading("自定义提示内容");
+// mMultipleStatusView.showLoading(R.string.custom_hint_content, "占位符1", "占位符2", "...");
// multipleStatusView.showLoading(R.layout.xxx, layoutParams);
// multipleStatusView.showLoading(customView, layoutParams);
//显示空视图
multipleStatusView.showEmpty();
+// mMultipleStatusView.showEmpty("自定义提示内容");
+// mMultipleStatusView.showEmpty(R.string.custom_hint_content, "占位符1", "占位符2", "...");
// multipleStatusView.showEmpty(R.layout.xxx, layoutParams);
// multipleStatusView.showEmpty(customView, layoutParams);
//显示错误视图
multipleStatusView.showError();
+// mMultipleStatusView.showError("自定义提示内容");
+// mMultipleStatusView.showError(R.string.custom_hint_content, "占位符1", "占位符2", "...");
// multipleStatusView.showError(R.layout.xxx, layoutParams);
// multipleStatusView.showError(customView, layoutParams);
//显示无网络视图
multipleStatusView.showNoNetwork();
+// mMultipleStatusView.showNoNetwork("自定义提示内容");
+// mMultipleStatusView.showNoNetwork(R.string.custom_hint_content, "占位符1", "占位符2", "...");
// multipleStatusView.showNoNetwork(R.layout.xxx, layoutParams);
// multipleStatusView.showNoNetwork(customView, layoutParams);
@@ -138,6 +146,7 @@ app:noNetworkView="@layout/..."
- 空视图的id必须为:`empty_view`
- 错误视图的id必须为:`error_view`
- 无网络视图的id必须为:`no_network_view`
+- 自定义提示文本的id必须为:`status_hint_content`
#### 2. 如果需要点击某个 `view` 进行重试, 需要设置:
@@ -168,6 +177,7 @@ tv.setText(text);
感谢以下人员贡献的代码
- [Lindroy](https://github.com/Lindroy)
+- [GaoXiaoHui](https://github.com/gao746700783)
## 关于
diff --git a/apk/MultipleStatusView.apk b/apk/MultipleStatusView.apk
deleted file mode 100644
index 104ed2b..0000000
Binary files a/apk/MultipleStatusView.apk and /dev/null differ
diff --git a/apk/MultipleStatusView_1.7_9.apk b/apk/MultipleStatusView_1.7_9.apk
new file mode 100644
index 0000000..5c00f9a
Binary files /dev/null and b/apk/MultipleStatusView_1.7_9.apk differ
diff --git a/app/build.gradle b/app/build.gradle
index aba47f7..fb0f12a 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -19,9 +19,19 @@ android {
}
}
+android.applicationVariants.all { variant ->
+ variant.outputs.all {
+ outputFileName = new StringBuilder().append("MultipleStatusView")
+ .append("_").append(variant.versionName)
+ .append("_").append(variant.versionCode)
+ .append(".apk")
+ .toString()
+ }
+}
+
dependencies {
- implementation project(':multiple-status-view')
-// implementation rootProject.ext.multipleStatusView
+ // implementation project(':multiple-status-view')
+ implementation rootProject.ext.multipleStatusView
implementation rootProject.ext.supportAppcompatV7
implementation rootProject.ext.supportRecyclerView
implementation rootProject.ext.supportDesign
diff --git a/app/src/main/java/com/classic/common/simple/AbsActivity.java b/app/src/main/java/com/classic/common/simple/AbsActivity.java
index 0e2d6ee..bfaae39 100644
--- a/app/src/main/java/com/classic/common/simple/AbsActivity.java
+++ b/app/src/main/java/com/classic/common/simple/AbsActivity.java
@@ -15,7 +15,7 @@
public abstract class AbsActivity extends AppCompatActivity implements View.OnClickListener {
- static final int DELAY = 5000;
+ static final int DELAY = 2000;
MultipleStatusView mMultipleStatusView;
FloatingActionMenu mFloatingActionMenu;
@@ -25,6 +25,14 @@ public abstract class AbsActivity extends AppCompatActivity implements View.OnCl
FloatingActionButton mNoNetworkFab;
FloatingActionButton mContentFab;
+ private final Runnable callback = new Runnable() {
+ @Override public void run() {
+ if (!isFinishing() && null != mMultipleStatusView) {
+ mMultipleStatusView.showContent();
+ }
+ }
+ };
+
abstract void initView();
@Override protected void onCreate(Bundle savedInstanceState) {
@@ -50,13 +58,15 @@ public abstract class AbsActivity extends AppCompatActivity implements View.OnCl
mMultipleStatusView.setOnViewStatusChangeListener(mViewStatusChangeListener);
}
+ @Override
+ protected void onDestroy() {
+ if (null != mMultipleStatusView) mMultipleStatusView.removeCallbacks(callback);
+ super.onDestroy();
+ }
+
void loading() {
mMultipleStatusView.showLoading();
- mMultipleStatusView.postDelayed(new Runnable() {
- @Override public void run() {
- mMultipleStatusView.showContent();
- }
- }, DELAY);
+ mMultipleStatusView.postDelayed(callback, DELAY);
}
final View.OnClickListener mRetryClickListener = new View.OnClickListener() {
@@ -88,13 +98,16 @@ public void onChange(int oldViewStatus, int newViewStatus) {
loading();
break;
case R.id.fab_empty:
- mMultipleStatusView.showEmpty();
+ // mMultipleStatusView.showEmpty();
+ mMultipleStatusView.showEmpty(R.string.test_hint_content, "aa", "bb");
break;
case R.id.fab_error:
- mMultipleStatusView.showError();
+ // mMultipleStatusView.showError();
+ mMultipleStatusView.showError("自定义错误文本");
break;
case R.id.fab_no_network:
- mMultipleStatusView.showNoNetwork();
+ // mMultipleStatusView.showNoNetwork();
+ mMultipleStatusView.showNoNetwork("自定义无网络文本");
break;
case R.id.fab_content:
mMultipleStatusView.showContent();
diff --git a/app/src/main/java/com/classic/common/simple/Simple3Activity.java b/app/src/main/java/com/classic/common/simple/Simple3Activity.java
index f69d884..bd10ddb 100644
--- a/app/src/main/java/com/classic/common/simple/Simple3Activity.java
+++ b/app/src/main/java/com/classic/common/simple/Simple3Activity.java
@@ -1,5 +1,6 @@
package com.classic.common.simple;
+import android.view.View;
import android.view.ViewGroup;
import com.classic.common.MultipleStatusView;
@@ -10,11 +11,28 @@ public class Simple3Activity extends AbsActivity {
void initView() {
setContentView(R.layout.activity_simple3);
setTitle("Simple3Activity");
-
ViewGroup ll_content = findViewById(R.id.ll_content);
mMultipleStatusView = MultipleStatusView.attach(ll_content);
- if (null != mMultipleStatusView) {
- mMultipleStatusView.setOnRetryClickListener(mRetryClickListener);
+ }
+
+ @Override public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.fab_loading:
+ loading();
+ break;
+ case R.id.fab_empty:
+ mMultipleStatusView.showEmpty();
+ break;
+ case R.id.fab_error:
+ mMultipleStatusView.showError();
+ break;
+ case R.id.fab_no_network:
+ mMultipleStatusView.showNoNetwork();
+ break;
+ case R.id.fab_content:
+ mMultipleStatusView.showContent();
+ break;
}
+ mFloatingActionMenu.toggle(false);
}
}
diff --git a/app/src/main/res/layout/activity_simple3.xml b/app/src/main/res/layout/activity_simple3.xml
index 8cc4b60..b53276e 100644
--- a/app/src/main/res/layout/activity_simple3.xml
+++ b/app/src/main/res/layout/activity_simple3.xml
@@ -24,16 +24,15 @@
android:id="@+id/ll_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:gravity="center"
android:orientation="vertical">
+ android:textSize="20sp"/>
@@ -41,5 +40,4 @@
-
diff --git a/app/src/main/res/layout/custom_empty_view.xml b/app/src/main/res/layout/custom_empty_view.xml
index 8c82e74..81601b6 100644
--- a/app/src/main/res/layout/custom_empty_view.xml
+++ b/app/src/main/res/layout/custom_empty_view.xml
@@ -14,7 +14,7 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/custom_error_view.xml b/app/src/main/res/layout/custom_error_view.xml
index 3263825..56bb609 100644
--- a/app/src/main/res/layout/custom_error_view.xml
+++ b/app/src/main/res/layout/custom_error_view.xml
@@ -14,7 +14,7 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/custom_no_network_view.xml b/app/src/main/res/layout/custom_no_network_view.xml
index fd4bf1b..e8959ac 100644
--- a/app/src/main/res/layout/custom_no_network_view.xml
+++ b/app/src/main/res/layout/custom_no_network_view.xml
@@ -14,7 +14,7 @@
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index db44ad5..a0cffbb 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,4 +1,5 @@
MultipleStatusView
ListActivity
+ 自定义提示内容,%s占位符测试%s
diff --git a/build.gradle b/build.gradle
index 5610e30..707b9e1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@ buildscript {
google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.3.1'
+ classpath 'com.android.tools.build:gradle:3.5.2'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
}
diff --git a/config.gradle b/config.gradle
index b8c44c8..b9941e3 100644
--- a/config.gradle
+++ b/config.gradle
@@ -8,8 +8,8 @@ ext {
applicationId : "com.classic.common.simple",
minSdkVersion : 14,
targetSdkVersion : 28,
- versionCode : 8,
- versionName : "1.6"
+ versionCode : 9,
+ versionName : "1.7"
]
resourcePrefix = "MultipleStatusView"
@@ -23,7 +23,7 @@ ext {
junit = "junit:junit:4.12"
- multipleStatusView = "com.classic.common:multiple-status-view:1.6"
+ multipleStatusView = "com.classic.common:multiple-status-view:1.7"
loadingView = "com.wang.avi:library:2.1.3" // https://github.com/81813780/AVLoadingIndicatorView
fab = "com.github.clans:fab:1.6.4" // https://github.com/Clans/FloatingActionButton
adapter = "com.classic.adapter:commonadapter:2.0"
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 1e014f4..233beb0 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6-all.zip
diff --git a/multiple-status-view/src/main/java/com/classic/common/MultipleStatusView.java b/multiple-status-view/src/main/java/com/classic/common/MultipleStatusView.java
index d099241..3a33744 100644
--- a/multiple-status-view/src/main/java/com/classic/common/MultipleStatusView.java
+++ b/multiple-status-view/src/main/java/com/classic/common/MultipleStatusView.java
@@ -9,7 +9,7 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
-
+import android.widget.TextView;
import java.util.ArrayList;
/**
@@ -119,6 +119,27 @@ public final void showEmpty() {
showEmpty(mEmptyViewResId, DEFAULT_LAYOUT_PARAMS);
}
+ /**
+ * 显示空视图
+ *
+ * @param hintResId 自定义提示文本内容
+ * @param formatArgs 占位符参数
+ */
+ public final void showEmpty(int hintResId, Object... formatArgs) {
+ showEmpty();
+ setStatusHintContent(mEmptyView, hintResId, formatArgs);
+ }
+
+ /**
+ * 显示空视图
+ *
+ * @param hint 自定义提示文本内容
+ */
+ public final void showEmpty(String hint) {
+ showEmpty();
+ setStatusHintContent(mEmptyView, hint);
+ }
+
/**
* 显示空视图
*
@@ -158,6 +179,27 @@ public final void showError() {
showError(mErrorViewResId, DEFAULT_LAYOUT_PARAMS);
}
+ /**
+ * 显示错误视图
+ *
+ * @param hintResId 自定义提示文本内容
+ * @param formatArgs 占位符参数
+ */
+ public final void showError(int hintResId, Object... formatArgs) {
+ showError();
+ setStatusHintContent(mErrorView, hintResId, formatArgs);
+ }
+
+ /**
+ * 显示错误视图
+ *
+ * @param hint 自定义提示文本内容
+ */
+ public final void showError(String hint) {
+ showError();
+ setStatusHintContent(mErrorView, hint);
+ }
+
/**
* 显示错误视图
*
@@ -197,6 +239,27 @@ public final void showLoading() {
showLoading(mLoadingViewResId, DEFAULT_LAYOUT_PARAMS);
}
+ /**
+ * 显示加载中视图
+ *
+ * @param hintResId 自定义提示文本内容
+ * @param formatArgs 占位符参数
+ */
+ public final void showLoading(int hintResId, Object... formatArgs) {
+ showLoading();
+ setStatusHintContent(mLoadingView, hintResId, formatArgs);
+ }
+
+ /**
+ * 显示加载中视图
+ *
+ * @param hint 自定义提示文本内容
+ */
+ public final void showLoading(String hint) {
+ showLoading();
+ setStatusHintContent(mLoadingView, hint);
+ }
+
/**
* 显示加载中视图
*
@@ -232,6 +295,27 @@ public final void showNoNetwork() {
showNoNetwork(mNoNetworkViewResId, DEFAULT_LAYOUT_PARAMS);
}
+ /**
+ * 显示无网络视图
+ *
+ * @param hintResId 自定义提示文本内容
+ * @param formatArgs 占位符参数
+ */
+ public final void showNoNetwork(int hintResId, Object... formatArgs) {
+ showNoNetwork();
+ setStatusHintContent(mNoNetworkView, hintResId, formatArgs);
+ }
+
+ /**
+ * 显示无网络视图
+ *
+ * @param hint 自定义提示文本内容
+ */
+ public final void showNoNetwork(String hint) {
+ showNoNetwork();
+ setStatusHintContent(mNoNetworkView, hint);
+ }
+
/**
* 显示无网络视图
*
@@ -302,6 +386,21 @@ public final void showContent(View view, ViewGroup.LayoutParams layoutParams) {
showViewById(mContentView.getId());
}
+ private void setStatusHintContent(View view, int resId, Object... formatArgs) {
+ checkNull(view, "Target view is null.");
+ setStatusHintContent(view, view.getContext().getString(resId, formatArgs));
+ }
+
+ private void setStatusHintContent(View view, String hint) {
+ checkNull(view, "Target view is null.");
+ TextView hintView = view.findViewById(R.id.status_hint_content);
+ if (null != hintView) {
+ hintView.setText(hint);
+ } else {
+ throw new NullPointerException("Not find the view ID `status_hint_content`");
+ }
+ }
+
private View inflateView(int layoutId) {
return mInflater.inflate(layoutId, null);
}
@@ -385,13 +484,11 @@ private void changeViewStatus(int newViewStatus) {
private void setContentViewResId(int contentViewResId) {
this.mContentViewResId = contentViewResId;
this.mContentView = mInflater.inflate(mContentViewResId, null);
-
addView(mContentView, 0, DEFAULT_LAYOUT_PARAMS);
}
private void setContentView(ViewGroup contentView) {
this.mContentView = contentView;
-
addView(mContentView, 0, DEFAULT_LAYOUT_PARAMS);
}
@@ -399,7 +496,6 @@ public static MultipleStatusView attach(Fragment fragment, int rootAnchor) {
if (null == fragment || fragment.getView() == null) {
throw new IllegalArgumentException("fragment is null or fragment.getView is null");
}
-
if (-1 != rootAnchor) {
ViewGroup contentAnchor = fragment.getView().findViewById(rootAnchor);
if (null != contentAnchor) {
@@ -417,7 +513,6 @@ public static MultipleStatusView attach(Activity activity, int rootAnchor) {
attach(contentAnchor);
}
}
-
ViewGroup defaultAnchor = activity.findViewById(android.R.id.content);
return attach(defaultAnchor);
}
@@ -426,21 +521,16 @@ public static MultipleStatusView attach(ViewGroup rootAnchor) {
if (null == rootAnchor) {
throw new IllegalArgumentException("root Anchor View can't be null");
}
-
ViewGroup parent = (ViewGroup) rootAnchor.getParent();
int anchorIndex = parent.indexOfChild(rootAnchor);
if (-1 != anchorIndex) {
parent.removeView(rootAnchor);
-
MultipleStatusView statusView = new MultipleStatusView(rootAnchor.getContext());
statusView.setContentView(rootAnchor);
-
ViewGroup.LayoutParams p = rootAnchor.getLayoutParams();
- parent.addView(statusView,anchorIndex, p);
-
+ parent.addView(statusView, anchorIndex, p);
return statusView;
}
return null;
}
-
}
diff --git a/multiple-status-view/src/main/res/values/ids.xml b/multiple-status-view/src/main/res/values/ids.xml
index 3976824..655af57 100644
--- a/multiple-status-view/src/main/res/values/ids.xml
+++ b/multiple-status-view/src/main/res/values/ids.xml
@@ -5,6 +5,7 @@
+