Skip to content

Commit 3006599

Browse files
committed
修复在极少数手机上会发生内存泄漏的问题
1 parent b096f00 commit 3006599

File tree

13 files changed

+471
-463
lines changed

13 files changed

+471
-463
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# 超级 Toast
22

3+
> 码云地址:[Gitee](https://gitee.com/getActivity/XToast)
4+
35
> 博客地址:[悬浮窗需求终结者](https://www.jianshu.com/p/247d705b87b6)
46
57
> 已投入公司项目多时,没有任何毛病,可胜任任何需求,[点击此处下载Demo](https://raw.githubusercontent.com/getActivity/XToast/master/XToast.apk)
@@ -13,7 +15,7 @@
1315
#### 集成步骤
1416

1517
dependencies {
16-
implementation 'com.hjq:xtoast:5.2'
18+
implementation 'com.hjq:xtoast:5.3'
1719
}
1820

1921
#### 使用案例

XToast.apk

149 KB
Binary file not shown.

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
applicationId "com.hjq.xtoast.demo"
88
minSdkVersion 14
99
targetSdkVersion 28
10-
versionCode 52
11-
versionName "5.2"
10+
versionCode 53
11+
versionName "5.3"
1212
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1313
}
1414
buildTypes {
Lines changed: 171 additions & 169 deletions
Original file line numberDiff line numberDiff line change
@@ -1,170 +1,172 @@
1-
package com.hjq.xtoast.demo;
2-
3-
import android.content.Intent;
4-
import android.os.Bundle;
5-
import android.support.design.widget.Snackbar;
6-
import android.support.v7.app.AppCompatActivity;
7-
import android.view.Gravity;
8-
import android.view.View;
9-
import android.widget.ImageView;
10-
import android.widget.TextView;
11-
12-
import com.hjq.permissions.OnPermission;
13-
import com.hjq.permissions.Permission;
14-
import com.hjq.permissions.XXPermissions;
15-
import com.hjq.toast.ToastUtils;
16-
import com.hjq.xtoast.OnClickListener;
17-
import com.hjq.xtoast.OnToastListener;
18-
import com.hjq.xtoast.XToast;
19-
import com.hjq.xtoast.draggable.MovingDraggable;
20-
import com.hjq.xtoast.draggable.SpringDraggable;
21-
22-
import java.util.List;
23-
24-
/**
25-
* author : Android 轮子哥
26-
* github : https://github.com/getActivity/XToast
27-
* time : 2019/01/04
28-
* desc : XToast 使用案例
29-
*/
30-
public class MainActivity extends AppCompatActivity {
31-
32-
@Override
33-
protected void onCreate(Bundle savedInstanceState) {
34-
super.onCreate(savedInstanceState);
35-
setContentView(R.layout.activity_main);
36-
ToastUtils.init(getApplication());
37-
}
38-
39-
public void show1(View v) {
40-
new XToast(this)
41-
.setDuration(3000)
42-
.setView(R.layout.toast_hint)
43-
.setAnimStyle(android.R.style.Animation_Translucent)
44-
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)
45-
.setText(android.R.id.message, "这个动画是不是很骚")
46-
.show();
47-
}
48-
49-
public void show2(View v) {
50-
new XToast(this)
51-
.setDuration(1000)
52-
.setView(R.layout.toast_hint)
53-
.setAnimStyle(android.R.style.Animation_Activity)
54-
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_error)
55-
.setText(android.R.id.message, "一秒后消失")
56-
.show();
57-
}
58-
59-
public void show3(View v) {
60-
new XToast(this)
61-
.setDuration(3000)
62-
.setView(R.layout.toast_hint)
63-
.setAnimStyle(android.R.style.Animation_Dialog)
64-
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_warning)
65-
.setText(android.R.id.message, "是不是感觉很牛逼")
66-
.setOnToastListener(new OnToastListener() {
67-
68-
@Override
69-
public void onShow(XToast toast) {
70-
Snackbar.make(getWindow().getDecorView(), "XToast 显示了", Snackbar.LENGTH_SHORT).show();
71-
}
72-
73-
@Override
74-
public void onDismiss(XToast toast) {
75-
Snackbar.make(getWindow().getDecorView(), "XToast 消失了", Snackbar.LENGTH_SHORT).show();
76-
}
77-
})
78-
.show();
79-
}
80-
81-
public void show4(View v) {
82-
new XToast(this)
83-
.setView(R.layout.toast_hint)
84-
.setAnimStyle(android.R.style.Animation_Translucent)
85-
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)
86-
.setText(android.R.id.message, "点我点我点我")
87-
.setOnClickListener(android.R.id.message, new OnClickListener<TextView>() {
88-
89-
@Override
90-
public void onClick(final XToast toast, TextView view) {
91-
view.setText("那么听话啊");
92-
getWindow().getDecorView().postDelayed(new Runnable() {
93-
@Override
94-
public void run() {
95-
toast.cancel();
96-
}
97-
}, 1000);
98-
}
99-
})
100-
.show();
101-
}
102-
103-
public void show5(View v) {
104-
new XToast(this)
105-
.setView(R.layout.toast_hint)
106-
.setAnimStyle(android.R.style.Animation_Translucent)
107-
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)
108-
.setText(android.R.id.message, "点我消失")
109-
// 设置成可拖拽的
110-
.setDraggable(new MovingDraggable())
111-
.setOnClickListener(android.R.id.message, new OnClickListener<TextView>() {
112-
113-
@Override
114-
public void onClick(XToast toast, TextView view) {
115-
toast.cancel();
116-
}
117-
})
118-
.show();
119-
}
120-
121-
public void show6(View v) {
122-
XXPermissions.with(this)
123-
.permission(Permission.SYSTEM_ALERT_WINDOW)
124-
.request(new OnPermission() {
125-
126-
@Override
127-
public void hasPermission(List<String> granted, boolean isAll) {
128-
129-
// 传入 Application 表示这个是一个全局的 Toast
130-
new XToast(getApplication())
131-
.setView(R.layout.toast_phone)
132-
.setGravity(Gravity.END | Gravity.BOTTOM)
133-
.setXOffset(100)
134-
.setYOffset(100)
135-
// 设置指定的拖拽规则
136-
.setDraggable(new SpringDraggable())
137-
.setOnClickListener(android.R.id.icon, new OnClickListener<ImageView>() {
138-
139-
@Override
140-
public void onClick(XToast toast, ImageView view) {
141-
// 点击后跳转到拨打电话界面
142-
Intent intent = new Intent(Intent.ACTION_DIAL);
143-
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
144-
toast.startActivity(intent);
145-
}
146-
})
147-
.show();
148-
}
149-
150-
@Override
151-
public void noPermission(List<String> denied, boolean quick) {
152-
new XToast(MainActivity.this)
153-
.setDuration(1000)
154-
.setView(R.layout.toast_hint)
155-
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_error)
156-
.setText(android.R.id.message, "请先授予悬浮窗权限")
157-
.show();
158-
}
159-
});
160-
}
161-
162-
public void show7(View v) {
163-
new XToast(MainActivity.this)
164-
.setDuration(1000)
165-
.setView(ToastUtils.getToast().getView())
166-
.setAnimStyle(android.R.style.Animation_Translucent)
167-
.setText(android.R.id.message, "就问你溜不溜")
168-
.show();
169-
}
1+
package com.hjq.xtoast.demo;
2+
3+
import android.content.Intent;
4+
import android.os.Bundle;
5+
import android.support.design.widget.Snackbar;
6+
import android.support.v7.app.AppCompatActivity;
7+
import android.view.Gravity;
8+
import android.view.View;
9+
import android.widget.ImageView;
10+
import android.widget.TextView;
11+
12+
import com.hjq.permissions.OnPermission;
13+
import com.hjq.permissions.Permission;
14+
import com.hjq.permissions.XXPermissions;
15+
import com.hjq.toast.ToastUtils;
16+
import com.hjq.xtoast.OnClickListener;
17+
import com.hjq.xtoast.OnToastListener;
18+
import com.hjq.xtoast.XToast;
19+
import com.hjq.xtoast.draggable.MovingDraggable;
20+
import com.hjq.xtoast.draggable.SpringDraggable;
21+
22+
import java.util.List;
23+
24+
/**
25+
* author : Android 轮子哥
26+
* github : https://github.com/getActivity/XToast
27+
* time : 2019/01/04
28+
* desc : XToast 使用案例
29+
*/
30+
public class MainActivity extends AppCompatActivity {
31+
32+
@Override
33+
protected void onCreate(Bundle savedInstanceState) {
34+
super.onCreate(savedInstanceState);
35+
setContentView(R.layout.activity_main);
36+
}
37+
38+
public void show1(View v) {
39+
new XToast(this)
40+
.setDuration(3000)
41+
.setView(R.layout.toast_hint)
42+
.setAnimStyle(android.R.style.Animation_Translucent)
43+
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)
44+
.setText(android.R.id.message, "这个动画是不是很骚")
45+
.show();
46+
}
47+
48+
public void show2(View v) {
49+
new XToast(this)
50+
.setDuration(1000)
51+
.setView(R.layout.toast_hint)
52+
.setAnimStyle(android.R.style.Animation_Activity)
53+
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_error)
54+
.setText(android.R.id.message, "一秒后消失")
55+
.show();
56+
}
57+
58+
public void show3(View v) {
59+
new XToast(this)
60+
.setDuration(3000)
61+
.setView(R.layout.toast_hint)
62+
.setAnimStyle(android.R.style.Animation_Dialog)
63+
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_warning)
64+
.setText(android.R.id.message, "是不是感觉很牛逼")
65+
.setOnToastListener(new OnToastListener() {
66+
67+
@Override
68+
public void onShow(XToast toast) {
69+
Snackbar.make(getWindow().getDecorView(), "XToast 显示了", Snackbar.LENGTH_SHORT).show();
70+
}
71+
72+
@Override
73+
public void onDismiss(XToast toast) {
74+
Snackbar.make(getWindow().getDecorView(), "XToast 消失了", Snackbar.LENGTH_SHORT).show();
75+
}
76+
})
77+
.show();
78+
}
79+
80+
public void show4(View v) {
81+
new XToast(this)
82+
.setView(R.layout.toast_hint)
83+
.setAnimStyle(android.R.style.Animation_Translucent)
84+
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)
85+
.setText(android.R.id.message, "点我点我点我")
86+
.setOnClickListener(android.R.id.message, new OnClickListener<TextView>() {
87+
88+
@Override
89+
public void onClick(final XToast toast, TextView view) {
90+
view.setText("那么听话啊");
91+
getWindow().getDecorView().postDelayed(new Runnable() {
92+
@Override
93+
public void run() {
94+
toast.cancel();
95+
}
96+
}, 1000);
97+
}
98+
})
99+
.show();
100+
}
101+
102+
public void show5(View v) {
103+
new XToast(this)
104+
.setView(R.layout.toast_hint)
105+
.setAnimStyle(android.R.style.Animation_Translucent)
106+
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)
107+
.setText(android.R.id.message, "点我消失")
108+
// 设置成可拖拽的
109+
.setDraggable(new MovingDraggable())
110+
.setOnClickListener(android.R.id.message, new OnClickListener<TextView>() {
111+
112+
@Override
113+
public void onClick(XToast toast, TextView view) {
114+
toast.cancel();
115+
}
116+
})
117+
.show();
118+
}
119+
120+
public void show6(View v) {
121+
XXPermissions.with(this)
122+
.permission(Permission.SYSTEM_ALERT_WINDOW)
123+
.request(new OnPermission() {
124+
125+
@Override
126+
public void hasPermission(List<String> granted, boolean isAll) {
127+
128+
// 传入 Application 表示这个是一个全局的 Toast
129+
new XToast(getApplication())
130+
.setView(R.layout.toast_phone)
131+
.setGravity(Gravity.END | Gravity.BOTTOM)
132+
.setXOffset(100)
133+
.setYOffset(100)
134+
// 设置指定的拖拽规则
135+
.setDraggable(new SpringDraggable())
136+
.setOnClickListener(android.R.id.icon, new OnClickListener<ImageView>() {
137+
138+
@Override
139+
public void onClick(XToast toast, ImageView view) {
140+
// 点击后跳转到拨打电话界面
141+
Intent intent = new Intent(Intent.ACTION_DIAL);
142+
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
143+
toast.startActivity(intent);
144+
}
145+
})
146+
.show();
147+
}
148+
149+
@Override
150+
public void noPermission(List<String> denied, boolean quick) {
151+
new XToast(MainActivity.this)
152+
.setDuration(1000)
153+
.setView(R.layout.toast_hint)
154+
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_error)
155+
.setText(android.R.id.message, "请先授予悬浮窗权限")
156+
.show();
157+
}
158+
});
159+
}
160+
161+
public void show7(View v) {
162+
// 这里需要先初始化 ToastUtils,实际开发中这句代码应当放在 Application.onCreate 方法中
163+
ToastUtils.init(getApplication());
164+
// 将 ToastUtils 中的 View 转移给 XToast 来显示
165+
new XToast(MainActivity.this)
166+
.setDuration(1000)
167+
.setView(ToastUtils.getToast().getView())
168+
.setAnimStyle(android.R.style.Animation_Translucent)
169+
.setText(android.R.id.message, "就问你溜不溜")
170+
.show();
171+
}
170172
}

0 commit comments

Comments
 (0)