Skip to content

Commit 097e4ad

Browse files
committed
修正悬浮窗无法移动到沉浸式状态栏上
优化代码逻辑及处理泛型使用警告 补充 Kotlin 语法使用文档 补充应用内全局显示悬浮窗的文档
1 parent e2df8bc commit 097e4ad

22 files changed

+319
-191
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
*/build
55
/captures
66
/.cxx
7+
*/.cxx
78
/.externalNativeBuild
89

10+
._*
911
*.iml
1012
.DS_Store
1113
local.properties

README.md

Lines changed: 87 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,29 @@
1515
```groovy
1616
dependencies {
1717
// 悬浮窗框架:https://github.com/getActivity/XToast
18-
implementation 'com.hjq:xtoast:6.5'
18+
implementation 'com.hjq:xtoast:6.6'
1919
}
2020
```
2121

2222
#### 使用案例
2323

24+
* Java 用法
25+
2426
```java
25-
// 传入 Application 对象表示设置成全局的
26-
new XToast(XToastActivity.this)
27+
// 传入 Activity 对象表示设置成局部的,不需要有悬浮窗权限
28+
// 传入 Application 对象表示设置成全局的,但需要有悬浮窗权限
29+
new XToast<>(XToastActivity.this)
2730
.setView(R.layout.toast_hint)
2831
// 设置成可拖拽的
2932
//.setDraggable()
3033
// 设置显示时长
3134
.setDuration(1000)
3235
// 设置动画样式
33-
.setAnimStyle(android.R.style.Animation_Translucent)
34-
// 设置外层不能被触摸
35-
.setOutsideTouchable(false)
36+
//.setAnimStyle(android.R.style.Animation_Translucent)
37+
// 设置外层是否能被触摸
38+
//.setOutsideTouchable(false)
3639
// 设置窗口背景阴影强度
37-
.setBackgroundDimAmount(0.5f)
40+
//.setBackgroundDimAmount(0.5f)
3841
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)
3942
.setText(android.R.id.message, "点我消失")
4043
.setOnClickListener(android.R.id.message, new OnClickListener<TextView>() {
@@ -50,6 +53,76 @@ new XToast(XToastActivity.this)
5053
.show();
5154
```
5255

56+
* Kotlin 用法
57+
58+
```kotlin
59+
XToast<XToast<*>>(activity)
60+
.setView(R.layout.toast_hint)
61+
// 设置成可拖拽的
62+
//.setDraggable()
63+
// 设置显示时长
64+
.setDuration(1000)
65+
// 设置动画样式
66+
//.setAnimStyle(android.R.style.Animation_Translucent)
67+
// 设置外层是否能被触摸
68+
//.setOutsideTouchable(false)
69+
// 设置窗口背景阴影强度
70+
//.setBackgroundDimAmount(0.5f)
71+
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)
72+
.setText(android.R.id.message, "点我消失")
73+
.setOnClickListener(android.R.id.message, object : OnClickListener<TextView?> {
74+
override fun onClick(toast: XToast<XToast<*>>, view: TextView?) {
75+
// 点击这个 View 后消失
76+
toast.cancel()
77+
// 跳转到某个Activity
78+
// toast.startActivity(intent);
79+
}
80+
})
81+
.show()
82+
```
83+
84+
#### 没有悬浮窗权限如何全局显示?
85+
86+
* 没有悬浮窗权限是不能全局显示在其他应用上的,但是全局显示在自己的应用上是可以实现的
87+
88+
* 但是当前 Activity 创建的悬浮窗只能在当前 Activity 上面显示,如果想在所有的 Activity 都显示需要做特殊处理
89+
90+
* 我们可以通过 Application 来监听所有 Activity 的生命周期方法,然后在每个 Activity.onCreate 时创建悬浮窗
91+
92+
```java
93+
public final class FloatingLifecycle implements Application.ActivityLifecycleCallbacks {
94+
95+
static void with(Application application) {
96+
application.registerActivityLifecycleCallbacks(new FloatingLifecycle());
97+
}
98+
99+
@Override
100+
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
101+
new XToast<>(activity)
102+
.setXXXX()
103+
.show();
104+
}
105+
106+
@Override
107+
public void onActivityStarted(Activity activity) {}
108+
109+
@Override
110+
public void onActivityResumed(Activity activity) {}
111+
112+
@Override
113+
public void onActivityPaused(Activity activity) {}
114+
115+
@Override
116+
public void onActivityStopped(Activity activity) {}
117+
118+
@Override
119+
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {}
120+
121+
@Override
122+
public void onActivityDestroyed(Activity activity) {}
123+
}
124+
```
125+
53126
#### 框架亮点(原生 Toast 无法实现的功能)
54127

55128
* 支持自定义 Toast 动画样式
@@ -62,16 +135,14 @@ new XToast(XToastActivity.this)
62135

63136
* 支持一键开启 Toast 拖拽功能
64137

65-
* 支持 Toast 全局显示(需要悬浮窗权限)
138+
* 支持 Toast 全局显示
66139

67140
#### 作者的其他开源项目
68141

69142
* 安卓技术中台:[AndroidProject](https://github.com/getActivity/AndroidProject)
70143

71144
* 网络框架:[EasyHttp](https://github.com/getActivity/EasyHttp)
72145

73-
* 日志框架:[Logcat](https://github.com/getActivity/Logcat)
74-
75146
* 权限框架:[XXPermissions](https://github.com/getActivity/XXPermissions)
76147

77148
* 吐司框架:[ToastUtils](https://github.com/getActivity/ToastUtils)
@@ -82,8 +153,14 @@ new XToast(XToastActivity.this)
82153

83154
* Gson 解析容错:[GsonFactory](https://github.com/getActivity/GsonFactory)
84155

156+
* 日志查看框架:[Logcat](https://github.com/getActivity/Logcat)
157+
85158
#### Android技术讨论Q群:78797078
86159

160+
#### 微信公众号:Android轮子哥
161+
162+
![](https://raw.githubusercontent.com/getActivity/Donate/master/picture/official_ccount.png)
163+
87164
#### 如果您觉得我的开源库帮你节省了大量的开发时间,请扫描下方的二维码随意打赏,要是能打赏个 10.24 :monkey_face:就太:thumbsup:了。您的支持将鼓励我继续创作:octocat:
88165

89166
![](https://raw.githubusercontent.com/getActivity/Donate/master/picture/pay_ali.png) ![](https://raw.githubusercontent.com/getActivity/Donate/master/picture/pay_wechat.png)

XToast.apk

995 KB
Binary file not shown.

app/build.gradle

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
apply plugin: 'com.android.application'
22

33
android {
4-
compileSdkVersion 28
4+
compileSdkVersion 30
55

66
defaultConfig {
77
applicationId "com.hjq.xtoast.demo"
88
minSdkVersion 16
9-
targetSdkVersion 28
10-
versionCode 65
11-
versionName "6.5"
9+
targetSdkVersion 30
10+
versionCode 66
11+
versionName "6.6"
1212
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1313
}
1414
buildTypes {
@@ -17,18 +17,25 @@ android {
1717
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
1818
}
1919
}
20+
21+
// 支持 Java JDK 8
22+
compileOptions {
23+
targetCompatibility JavaVersion.VERSION_1_8
24+
sourceCompatibility JavaVersion.VERSION_1_8
25+
}
2026
}
2127

2228
dependencies {
2329
implementation fileTree(include: ['*.jar'], dir: 'libs')
2430
implementation fileTree(include: ['*.aar'], dir: 'libs')
2531
implementation project(':library')
2632

27-
implementation 'com.android.support:appcompat-v7:28.0.0'
28-
implementation 'com.android.support:design:28.0.0'
33+
// 谷歌兼容库:https://developer.android.google.cn/jetpack/androidx/releases/appcompat?hl=zh-cn
34+
implementation 'androidx.appcompat:appcompat:1.2.0'
35+
implementation 'com.google.android.material:material:1.2.1'
2936

3037
// 权限请求框架:https://github.com/getActivity/XXPermissions
31-
implementation 'com.hjq:xxpermissions:9.5'
38+
implementation 'com.hjq:xxpermissions:9.8'
3239
// 标题栏框架:https://github.com/getActivity/TitleBar
3340
implementation 'com.hjq:titlebar:8.2'
3441
// 吐司工具类:https://github.com/getActivity/ToastUtils

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
66

77
<application
8+
android:name=".AppApplication"
89
android:icon="@mipmap/ic_launcher"
910
android:label="@string/app_name"
1011
android:roundIcon="@mipmap/ic_launcher_round"
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.hjq.xtoast.demo;
2+
3+
import android.app.Application;
4+
5+
import com.hjq.toast.ToastUtils;
6+
7+
/**
8+
* author : Android 轮子哥
9+
* github : https://github.com/getActivity/XToast
10+
* time : 2021/01/24
11+
* desc : 应用入口
12+
*/
13+
public class AppApplication extends Application {
14+
15+
@Override
16+
public void onCreate() {
17+
super.onCreate();
18+
ToastUtils.init(this);
19+
}
20+
}

app/src/main/java/com/hjq/xtoast/demo/IOSToast.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class IOSToast {
1515
private static final int TIME = 3000;
1616

1717
public static void showSucceed(Activity activity, CharSequence text) {
18-
new XToast(activity)
18+
new XToast<>(activity)
1919
.setDuration(TIME)
2020
.setView(R.layout.toast_hint)
2121
.setAnimStyle(android.R.style.Animation_Translucent)
@@ -25,7 +25,7 @@ public static void showSucceed(Activity activity, CharSequence text) {
2525
}
2626

2727
public static void showFail(Activity activity, CharSequence text) {
28-
new XToast(activity)
28+
new XToast<>(activity)
2929
.setDuration(TIME)
3030
.setView(R.layout.toast_hint)
3131
.setAnimStyle(android.R.style.Animation_Activity)
@@ -35,7 +35,7 @@ public static void showFail(Activity activity, CharSequence text) {
3535
}
3636

3737
public static void showWarn(Activity activity, CharSequence text) {
38-
new XToast(activity)
38+
new XToast<>(activity)
3939
.setDuration(TIME)
4040
.setView(R.layout.toast_hint)
4141
.setAnimStyle(android.R.style.Animation_Dialog)

0 commit comments

Comments
 (0)