Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mmm-rain
AndroidUtilCode
提交
12a006fb
A
AndroidUtilCode
项目概览
mmm-rain
/
AndroidUtilCode
与 Fork 源项目一致
从无法访问的项目Fork
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
AndroidUtilCode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
12a006fb
编写于
12月 29, 2018
作者:
B
Blankj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
see 12/29 log
上级
877bbc4c
变更
27
隐藏空白更改
内联
并排
Showing
27 changed file
with
308 addition
and
108 deletion
+308
-108
CHANGELOG.md
CHANGELOG.md
+3
-0
README-CN.md
README-CN.md
+1
-1
README.md
README.md
+1
-1
bus-gradle-plugin/project.properties
bus-gradle-plugin/project.properties
+0
-6
config.gradle
config.gradle
+2
-2
lib/base/build.gradle
lib/base/build.gradle
+1
-1
lib/base/src/main/java/com/blankj/lib/base/BaseActivity.kt
lib/base/src/main/java/com/blankj/lib/base/BaseActivity.kt
+4
-11
subutil/lib/src/main/java/com/blankj/subutil/util/VibrationUtils.java
...src/main/java/com/blankj/subutil/util/VibrationUtils.java
+0
-49
subutil/lib/src/test/java/com/blankj/subutil/util/TestUtils.java
.../lib/src/test/java/com/blankj/subutil/util/TestUtils.java
+1
-1
subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.java
...main/java/com/blankj/subutil/pkg/helper/DialogHelper.java
+2
-2
utilcode/README-CN.md
utilcode/README-CN.md
+17
-2
utilcode/README-STATIC-BUS.md
utilcode/README-STATIC-BUS.md
+1
-1
utilcode/README.md
utilcode/README.md
+17
-2
utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
...rc/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
+36
-0
utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
...ib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
+3
-1
utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
...ib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
+16
-15
utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
.../src/main/java/com/blankj/utilcode/util/VibrateUtils.java
+69
-0
utilcode/pkg/src/main/AndroidManifest.xml
utilcode/pkg/src/main/AndroidManifest.xml
+5
-0
utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.java
...ava/com/blankj/utilcode/pkg/feature/CoreUtilActivity.java
+5
-0
utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.java
.../com/blankj/utilcode/pkg/feature/toast/ToastActivity.java
+17
-7
utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt
...om/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt
+59
-0
utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.java
...ain/java/com/blankj/utilcode/pkg/helper/DialogHelper.java
+5
-6
utilcode/pkg/src/main/res/drawable/image_lena.jpg
utilcode/pkg/src/main/res/drawable/image_lena.jpg
+0
-0
utilcode/pkg/src/main/res/drawable/image_lena.png
utilcode/pkg/src/main/res/drawable/image_lena.png
+0
-0
utilcode/pkg/src/main/res/layout/activity_util_core.xml
utilcode/pkg/src/main/res/layout/activity_util_core.xml
+7
-0
utilcode/pkg/src/main/res/layout/activity_vibrate.xml
utilcode/pkg/src/main/res/layout/activity_vibrate.xml
+30
-0
utilcode/pkg/src/main/res/values/strings.xml
utilcode/pkg/src/main/res/values/strings.xml
+6
-0
未找到文件。
CHANGELOG.md
浏览文件 @
12a006fb
*
`18/12/29`
[add] AntiShakeUtils and VibrateUtils. Publish v1.22.9.
*
`18/12/28`
[fix] ToastUtils show behind the dialog when close notification.
*
`18/12/27`
[fix] LogUtils print StringBuilder failed.
*
`18/12/24`
[fix] Utils$ActivityLifecycleImpl.consumeOnActivityDestroyedListener ConcurrentModificationException. Publish v1.22.7.
*
`18/12/22`
[fix] AdaptScreenUtils#pt2px don't work when start webview. Publish v1.22.6.
*
`18/12/21`
[add] LogUtils support print Map, Collection and Object to String.
...
...
README-CN.md
浏览文件 @
12a006fb
...
...
@@ -41,7 +41,7 @@
[
logo
]:
https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png
[
aucSvg
]:
https://img.shields.io/badge/AndroidUtilCode-v1.22.
7
-brightgreen.svg
[
aucSvg
]:
https://img.shields.io/badge/AndroidUtilCode-v1.22.
9
-brightgreen.svg
[
auc
]:
https://github.com/Blankj/AndroidUtilCode
[
apiSvg
]:
https://img.shields.io/badge/API-14+-brightgreen.svg
...
...
README.md
浏览文件 @
12a006fb
...
...
@@ -41,7 +41,7 @@ If this project helps you a lot and you want to support the project's developmen
[
logo
]:
https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png
[
aucSvg
]:
https://img.shields.io/badge/AndroidUtilCode-v1.22.
7
-brightgreen.svg
[
aucSvg
]:
https://img.shields.io/badge/AndroidUtilCode-v1.22.
9
-brightgreen.svg
[
auc
]:
https://github.com/Blankj/AndroidUtilCode
[
apiSvg
]:
https://img.shields.io/badge/API-14+-brightgreen.svg
...
...
bus-gradle-plugin/project.properties
已删除
100755 → 0
浏览文件 @
877bbc4c
project.name
=
StaticBusPlugin
project.siteUrl
=
https://github.com/Blankj/StaticBus
project.gitUrl
=
https://github.com/Blankj/StaticBus.git
#javadoc
javadoc.name
=
StaticBus
\ No newline at end of file
config.gradle
浏览文件 @
12a006fb
...
...
@@ -5,8 +5,8 @@ ext {
compileSdkVersion
=
27
minSdkVersion
=
14
targetSdkVersion
=
27
versionCode
=
1
_022_00
7
versionName
=
'1.22.
7
'
// E.g. 1.9.72 => 1,009,072
versionCode
=
1
_022_00
9
versionName
=
'1.22.
9
'
// E.g. 1.9.72 => 1,009,072
bus
=
[
isDebug:
false
,
...
...
lib/base/build.gradle
浏览文件 @
12a006fb
...
...
@@ -15,5 +15,5 @@ dependencies {
api
dep
.
free_proguard
api
'com.r0adkll:slidableactivity:2.0.5'
compileOnly
dep
.
leakcanary
.
android_no_op
// api 'com.blankj:utilcode:1.22.
7
'
// api 'com.blankj:utilcode:1.22.
9
'
}
\ No newline at end of file
lib/base/src/main/java/com/blankj/lib/base/BaseActivity.kt
浏览文件 @
12a006fb
...
...
@@ -5,6 +5,7 @@ import android.os.Bundle
import
android.support.v7.app.AppCompatActivity
import
android.view.LayoutInflater
import
android.view.View
import
com.blankj.utilcode.util.AntiShakeUtils
/**
* ```
...
...
@@ -18,16 +19,6 @@ abstract class BaseActivity : AppCompatActivity(), IBaseView {
protected
lateinit
var
mContentView
:
View
protected
lateinit
var
mActivity
:
Activity
private
var
lastClick
:
Long
=
0
// the time of last click
private
val
isFastClick
:
Boolean
get
()
{
val
now
=
System
.
currentTimeMillis
()
if
(
now
-
lastClick
>=
200
)
{
lastClick
=
now
return
false
}
return
true
}
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
mActivity
=
this
...
...
@@ -45,6 +36,8 @@ abstract class BaseActivity : AppCompatActivity(), IBaseView {
}
override
fun
onClick
(
view
:
View
)
{
if
(!
isFastClick
)
onWidgetClick
(
view
)
if
(
AntiShakeUtils
.
isValid
(
view
,
200
))
{
onWidgetClick
(
view
)
}
}
}
\ No newline at end of file
subutil/lib/src/main/java/com/blankj/subutil/util/VibrationUtils.java
已删除
100644 → 0
浏览文件 @
877bbc4c
package
com.blankj.subutil.util
;
/**
* <pre>
* author: Blankj
* blog : http://blankj.com
* time : 2016/09/29
* desc : 震动相关工具类
* </pre>
*/
public
final
class
VibrationUtils
{
// private VibrationUtils() {
// throw new UnsupportedOperationException("u can't instantiate me...");
// }
//
// /**
// * 震动
// * <p>需添加权限 {@code <uses-permission android:name="android.permission.VIBRATE" />}</p>
// *
// * @param context 上下文
// * @param milliseconds 振动时长
// */
// public static void vibrate(final Context context, final long milliseconds) {
// Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
// vibrator.vibrate(milliseconds);
// }
//
// /**
// * 指定手机以pattern模式振动
// *
// * @param context
// * @param pattern new long[]{400,800,1200,1600},就是指定在400ms、800ms、1200ms、1600ms这些时间点交替启动、关闭手机振动器
// * @param repeat 指定pattern数组的索引,指定pattern数组中从repeat索引开始的振动进行循环。-1表示只振动一次,非-1表示从 pattern的指定下标开始重复振动。
// */
// public static void vibrate(final Context context, final long[] pattern, final int repeat) {
// Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
// vibrator.vibrate(pattern, repeat);
// }
//
// /**
// * 取消振动
// *
// * @param context 上下文
// */
// public static void cancel(final Context context) {
// ((Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE)).cancel();
// }
}
subutil/lib/src/test/java/com/blankj/subutil/util/TestUtils.java
浏览文件 @
12a006fb
...
...
@@ -24,6 +24,6 @@ public class TestUtils {
@Test
public
void
test
()
throws
Exception
{
System
.
out
.
println
(-
1
<<
2
);
}
}
\ No newline at end of file
subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.java
浏览文件 @
12a006fb
...
...
@@ -21,7 +21,7 @@ public class DialogHelper {
public
static
void
showRationaleDialog
(
final
ShouldRequest
shouldRequest
)
{
Activity
topActivity
=
ActivityUtils
.
getTopActivity
();
if
(
topActivity
==
null
)
return
;
if
(
topActivity
==
null
||
topActivity
.
isFinishing
()
)
return
;
new
AlertDialog
.
Builder
(
topActivity
)
.
setTitle
(
android
.
R
.
string
.
dialog_alert_title
)
.
setMessage
(
R
.
string
.
permission_rationale_message
)
...
...
@@ -45,7 +45,7 @@ public class DialogHelper {
public
static
void
showOpenAppSettingDialog
()
{
Activity
topActivity
=
ActivityUtils
.
getTopActivity
();
if
(
topActivity
==
null
)
return
;
if
(
topActivity
==
null
||
topActivity
.
isFinishing
()
)
return
;
new
AlertDialog
.
Builder
(
topActivity
)
.
setTitle
(
android
.
R
.
string
.
dialog_alert_title
)
.
setMessage
(
R
.
string
.
permission_denied_forever_message
)
...
...
utilcode/README-CN.md
浏览文件 @
12a006fb
...
...
@@ -2,7 +2,7 @@
Gradle:
```
groovy
implementation
'com.blankj:utilcode:1.22.
7
'
implementation
'com.blankj:utilcode:1.22.
9
'
```
...
...
@@ -35,6 +35,11 @@ pt2Px : pt 转 px
px2Pt : px 转 pt
```
*
### AntiShake 相关 ->
[
AntiShakeUtils.java
][
antiShake.java
]
```
isValid: 是否有效
```
*
### App 相关 ->
[
AppUtils.java
][
app.java
]
->
[
Demo
][
app.demo
]
```
registerAppStatusChangedListener : 注册 App 前后台切换监听器
...
...
@@ -799,6 +804,12 @@ file2Uri: file 转 uri
uri2File: uri 转 file
```
*
### 震动相关 ->
[
VibrateUtils.java
][
vibrate.java
]
->
[
Demo
][
demo.demo
]
```
vibrate: 震动
cancel : 取消
```
*
### 压缩相关 ->
[
ZipUtils.java
][
zip.java
]
->
[
Test
][
zip.test
]
```
zipFiles : 批量压缩文件
...
...
@@ -813,11 +824,12 @@ getComments : 获取压缩文件中的注释链表
[
activity.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
[
activity.demo
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.java
[
activity.demo
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.java
[
adaptScreen.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java
[
adaptScreen.demo
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptScreenActivity.kt
[
antiShake.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
[
app.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
[
app.demo
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.java
...
...
@@ -943,5 +955,8 @@ getComments : 获取压缩文件中的注释链表
[
uri.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java
[
vibrate.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
[
vibrate.demo
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.java
[
zip.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/ZipUtils.java
[
zip.test
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/test/java/com/blankj/utilcode/util/ZipUtilsTest.java
utilcode/README-STATIC-BUS.md
浏览文件 @
12a006fb
...
...
@@ -27,7 +27,7 @@ apply plugin: "com.blankj.bus"
给 base 模块添加
[
AndroidUtilCode
](
https://github.com/Blankj/AndroidUtilCode
)
依赖:
```
groovy
api
"com.blankj:utilcode:1.22.
7
"
api
"com.blankj:utilcode:1.22.
9
"
```
比如 module0 中存在的
`Module0Activity.java`
,我们通常都是在它内部写一个
`start`
函数来启动它,现在我们给它添加
`@BusUtils.Subscribe`
注解,并给注解的
`name`
赋唯一值,要注意,函数务必要
`public static`
哦:
...
...
utilcode/README.md
浏览文件 @
12a006fb
...
...
@@ -2,7 +2,7 @@
Gradle:
```
groovy
implementation
'com.blankj:utilcode:1.22.
7
'
implementation
'com.blankj:utilcode:1.22.
9
'
```
...
...
@@ -35,6 +35,11 @@ pt2Px
px2Pt
```
*
### About AntiShake ->
[
AntiShakeUtils.java
][
antiShake.java
]
```
isValid
```
*
### About App ->
[
AppUtils.java
][
app.java
]
->
[
Demo
][
app.demo
]
```
registerAppStatusChangedListener
...
...
@@ -799,6 +804,12 @@ file2Uri
uri2File
```
*
### About Vibrate ->
[
VibrateUtils.java
][
vibrate.java
]
->
[
Demo
][
demo.demo
]
```
vibrate
cancel
```
*
### About Zip ->
[
ZipUtils.java
][
zip.java
]
->
[
Test
][
zip.test
]
```
zipFiles
...
...
@@ -813,11 +824,12 @@ getComments
[
activity.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
[
activity.demo
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.java
[
activity.demo
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.java
[
adaptScreen.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java
[
adaptScreen.demo
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptScreenActivity.kt
[
antiShake.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
[
app.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
[
app.demo
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.java
...
...
@@ -943,5 +955,8 @@ getComments
[
uri.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java
[
vibrate.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
[
vibrate.demo
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.java
[
zip.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/ZipUtils.java
[
zip.test
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/test/java/com/blankj/utilcode/util/ZipUtilsTest.java
utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
0 → 100644
浏览文件 @
12a006fb
package
com.blankj.utilcode.util
;
import
android.support.annotation.IntRange
;
import
android.support.annotation.NonNull
;
import
android.view.View
;
/**
* <pre>
* author: blankj
* blog : http://blankj.com
* time : 2018/12/29
* desc : utils about anti shake
* </pre>
*/
public
class
AntiShakeUtils
{
private
static
final
long
DEFAULT_DURATION
=
200
;
private
static
final
int
TAG_KEY
=
0x7EFFFFFF
;
private
AntiShakeUtils
()
{
throw
new
UnsupportedOperationException
(
"u can't instantiate me..."
);
}
public
static
boolean
isValid
(
@NonNull
View
view
)
{
return
isValid
(
view
,
DEFAULT_DURATION
);
}
public
static
boolean
isValid
(
@NonNull
View
view
,
@IntRange
(
from
=
0
)
long
duration
)
{
long
curTime
=
System
.
currentTimeMillis
();
Object
tag
=
view
.
getTag
(
TAG_KEY
);
view
.
setTag
(
TAG_KEY
,
curTime
);
if
(!(
tag
instanceof
Long
))
return
true
;
long
preTime
=
(
Long
)
tag
;
return
curTime
-
preTime
>
duration
;
}
}
utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
浏览文件 @
12a006fb
...
...
@@ -690,7 +690,9 @@ public final class ImageUtils {
rectF
.
inset
((
width
-
size
)
/
2
f
,
(
height
-
size
)
/
2
f
);
Matrix
matrix
=
new
Matrix
();
matrix
.
setTranslate
(
rectF
.
left
,
rectF
.
top
);
matrix
.
preScale
((
float
)
size
/
width
,
(
float
)
size
/
height
);
if
(
width
!=
height
)
{
matrix
.
preScale
((
float
)
size
/
width
,
(
float
)
size
/
height
);
}
BitmapShader
shader
=
new
BitmapShader
(
src
,
Shader
.
TileMode
.
CLAMP
,
Shader
.
TileMode
.
CLAMP
);
shader
.
setLocalMatrix
(
matrix
);
paint
.
setShader
(
shader
);
...
...
utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
浏览文件 @
12a006fb
...
...
@@ -2,10 +2,8 @@ package com.blankj.utilcode.util;
import
android.annotation.SuppressLint
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.app.Dialog
;
import
android.content.Context
;
import
android.content.DialogInterface
;
import
android.content.res.Configuration
;
import
android.content.res.Resources
;
import
android.graphics.Color
;
...
...
@@ -421,17 +419,18 @@ public final class ToastUtils {
static
class
ToastWithoutNotification
extends
AbsToast
{
private
Dialog
mDialog
;
private
WindowManager
mWM
;
private
View
mView
;
private
WindowManager
mWM
;
private
Dialog
mDialog
;
private
WindowManager
.
LayoutParams
mParams
=
new
WindowManager
.
LayoutParams
();
private
Utils
.
OnActivityDestroyedListener
listener
=
private
static
final
Utils
.
OnActivityDestroyedListener
LISTENER
=
new
Utils
.
OnActivityDestroyedListener
()
{
@Override
public
void
onActivityDestroyed
(
Activity
activity
)
{
cancel
();
if
(
iToast
==
null
)
return
;
iToast
.
cancel
();
}
};
...
...
@@ -447,8 +446,7 @@ public final class ToastUtils {
if
(
Build
.
VERSION
.
SDK_INT
<
Build
.
VERSION_CODES
.
N_MR1
)
{
mWM
=
(
WindowManager
)
context
.
getSystemService
(
Context
.
WINDOW_SERVICE
);
mParams
.
type
=
WindowManager
.
LayoutParams
.
TYPE_TOAST
;
mParams
.
y
=
mToast
.
getYOffset
();
}
else
{
}
else
if
(
Build
.
VERSION
.
SDK_INT
==
Build
.
VERSION_CODES
.
N_MR1
)
{
Context
topActivityOrApp
=
Utils
.
getTopActivityOrApp
();
if
(!(
topActivityOrApp
instanceof
Activity
))
{
Log
.
e
(
"ToastUtils"
,
"Couldn't get top Activity."
);
...
...
@@ -461,15 +459,15 @@ public final class ToastUtils {
}
if
(
topActivity
.
hasWindowFocus
())
{
mWM
=
topActivity
.
getWindowManager
();
mParams
.
type
=
WindowManager
.
LayoutParams
.
LAST_SUB_WINDOW
;
mParams
.
y
=
mToast
.
getYOffset
()
+
getNavBarHeight
();
mParams
.
type
=
WindowManager
.
LayoutParams
.
TYPE_APPLICATION_ATTACHED_DIALOG
;
}
else
{
mDialog
=
new
Dialog
(
topActivity
,
R
.
style
.
DialogTransparent
);
mDialog
.
setContentView
(
mView
);
Window
window
=
mDialog
.
getWindow
();
mParams
.
y
=
mToast
.
getYOffset
();
}
Utils
.
getActivityLifecycle
().
addOnActivityDestroyedListener
(
topActivity
,
listener
);
Utils
.
getActivityLifecycle
().
addOnActivityDestroyedListener
(
topActivity
,
LISTENER
);
}
else
{
mWM
=
(
WindowManager
)
context
.
getSystemService
(
Context
.
WINDOW_SERVICE
);
mParams
.
type
=
WindowManager
.
LayoutParams
.
FIRST_SYSTEM_WINDOW
+
37
;
}
final
Configuration
config
=
context
.
getResources
().
getConfiguration
();
...
...
@@ -480,6 +478,7 @@ public final class ToastUtils {
gravity
=
mToast
.
getGravity
();
}
mParams
.
y
=
mToast
.
getYOffset
();
mParams
.
height
=
WindowManager
.
LayoutParams
.
WRAP_CONTENT
;
mParams
.
width
=
WindowManager
.
LayoutParams
.
WRAP_CONTENT
;
mParams
.
format
=
PixelFormat
.
TRANSLUCENT
;
...
...
@@ -500,7 +499,10 @@ public final class ToastUtils {
mParams
.
packageName
=
Utils
.
getApp
().
getPackageName
();
if
(
mDialog
!=
null
)
{
mDialog
.
getWindow
().
setAttributes
(
mParams
);
Window
window
=
mDialog
.
getWindow
();
if
(
window
==
null
)
return
;
mParams
.
windowAnimations
=
android
.
R
.
style
.
Animation_Dialog
;
window
.
setAttributes
(
mParams
);
mDialog
.
show
();
}
else
{
try
{
...
...
@@ -510,7 +512,6 @@ public final class ToastUtils {
}
catch
(
Exception
ignored
)
{
/**/
}
}
HANDLER
.
postDelayed
(
new
Runnable
()
{
@Override
public
void
run
()
{
...
...
utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
0 → 100644
浏览文件 @
12a006fb
package
com.blankj.utilcode.util
;
import
android.content.Context
;
import
android.os.Vibrator
;
import
android.support.annotation.RequiresPermission
;
import
static
android
.
Manifest
.
permission
.
VIBRATE
;
/**
* <pre>
* author: Blankj
* blog : http://blankj.com
* time : 2016/09/29
* desc : utils about vibrate
* </pre>
*/
public
final
class
VibrateUtils
{
private
static
Vibrator
vibrator
;
private
VibrateUtils
()
{
throw
new
UnsupportedOperationException
(
"u can't instantiate me..."
);
}
/**
* Vibrate.
* <p>Must hold {@code <uses-permission android:name="android.permission.VIBRATE" />}</p>
*
* @param milliseconds The number of milliseconds to vibrate.
*/
@RequiresPermission
(
VIBRATE
)
public
static
void
vibrate
(
final
long
milliseconds
)
{
Vibrator
vibrator
=
getVibrator
();
if
(
vibrator
==
null
)
return
;
vibrator
.
vibrate
(
milliseconds
);
}
/**
* Vibrate.
* <p>Must hold {@code <uses-permission android:name="android.permission.VIBRATE" />}</p>
*
* @param pattern An array of longs of times for which to turn the vibrator on or off.
* @param repeat The index into pattern at which to repeat, or -1 if you don't want to repeat.
*/
@RequiresPermission
(
VIBRATE
)
public
static
void
vibrate
(
final
long
[]
pattern
,
final
int
repeat
)
{
Vibrator
vibrator
=
getVibrator
();
if
(
vibrator
==
null
)
return
;
vibrator
.
vibrate
(
pattern
,
repeat
);
}
/**
* Cancel vibrate.
* <p>Must hold {@code <uses-permission android:name="android.permission.VIBRATE" />}</p>
*/
@RequiresPermission
(
VIBRATE
)
public
static
void
cancel
()
{
Vibrator
vibrator
=
getVibrator
();
if
(
vibrator
==
null
)
return
;
vibrator
.
cancel
();
}
private
static
Vibrator
getVibrator
()
{
if
(
vibrator
==
null
)
{
vibrator
=
(
Vibrator
)
Utils
.
getApp
().
getSystemService
(
Context
.
VIBRATOR_SERVICE
);
}
return
vibrator
;
}
}
utilcode/pkg/src/main/AndroidManifest.xml
浏览文件 @
12a006fb
...
...
@@ -31,6 +31,8 @@
<!-- process -->
<uses-permission
android:name=
"android.permission.KILL_BACKGROUND_PROCESSES"
/>
<!-- vibrate -->
<uses-permission
android:name=
"android.permission.VIBRATE"
/>
<application>
<activity
android:name=
".feature.CoreUtilActivity"
...
...
@@ -159,6 +161,9 @@
<activity
android:name=
".feature.toast.ToastActivity"
android:launchMode=
"singleTop"
/>
<activity
android:name=
".feature.vibrate.VibrateActivity"
android:launchMode=
"singleTop"
/>
<meta-data
android:name=
"app_meta_data"
...
...
utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.java
浏览文件 @
12a006fb
...
...
@@ -32,6 +32,7 @@ import com.blankj.utilcode.pkg.feature.snackbar.SnackbarActivity;
import
com.blankj.utilcode.pkg.feature.sp.SPActivity
;
import
com.blankj.utilcode.pkg.feature.span.SpanActivity
;
import
com.blankj.utilcode.pkg.feature.toast.ToastActivity
;
import
com.blankj.utilcode.pkg.feature.vibrate.VibrateActivity
;
import
com.blankj.utilcode.util.BusUtils
;
/**
...
...
@@ -178,4 +179,8 @@ public class CoreUtilActivity extends BaseBackActivity {
public
void
toastClick
(
View
view
)
{
ToastActivity
.
start
(
this
);
}
public
void
vibrateClick
(
View
view
)
{
VibrateActivity
.
Companion
.
start
(
this
);
}
}
utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.java
浏览文件 @
12a006fb
...
...
@@ -4,13 +4,14 @@ import android.content.Context;
import
android.content.Intent
;
import
android.graphics.Color
;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.support.annotation.Nullable
;
import
android.support.v4.content.ContextCompat
;
import
android.view.Gravity
;
import
android.view.View
;
import
com.blankj.utilcode.pkg.R
;
import
com.blankj.lib.base.BaseBackActivity
;
import
com.blankj.utilcode.pkg.R
;
import
com.blankj.utilcode.pkg.helper.DialogHelper
;
import
com.blankj.utilcode.util.SpanUtils
;
import
com.blankj.utilcode.util.ToastUtils
;
...
...
@@ -61,6 +62,8 @@ public class ToastActivity extends BaseBackActivity {
}
Handler
mHandler
=
new
Handler
();
@Override
public
void
onWidgetClick
(
View
view
)
{
resetToast
();
...
...
@@ -74,12 +77,19 @@ public class ToastActivity extends BaseBackActivity {
}).
start
();
}
else
if
(
i
==
R
.
id
.
btn_show_long_toast
)
{
new
Thread
(
new
Runnable
()
{
@Override
public
void
run
()
{
ToastUtils
.
showLong
(
R
.
string
.
toast_long
);
}
}).
start
();
// new Thread(new Runnable() {
// @Override
// public void run() {
for
(
int
j
=
0
;
j
<
10
;
j
++)
{
mHandler
.
postDelayed
(
new
Runnable
()
{
@Override
public
void
run
()
{
ToastUtils
.
showLong
(
R
.
string
.
toast_long
);
}
},
10
*
j
);
}
// }
// }).start();
}
else
if
(
i
==
R
.
id
.
btn_show_green_font
)
{
ToastUtils
.
setMsgColor
(
Color
.
GREEN
);
...
...
utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt
0 → 100644
浏览文件 @
12a006fb
package
com.blankj.utilcode.pkg.feature.vibrate
import
android.content.Context
import
android.content.Intent
import
android.os.Bundle
import
android.view.View
import
com.blankj.lib.base.BaseBackActivity
import
com.blankj.utilcode.pkg.R
import
com.blankj.utilcode.util.VibrateUtils
import
kotlinx.android.synthetic.main.activity_vibrate.*
/**
* ```
* author: Blankj
* blog : http://blankj.com
* time : 2018/12/29
* desc : demo about VibrateUtils
* ```
*/
class
VibrateActivity
:
BaseBackActivity
()
{
companion
object
{
fun
start
(
context
:
Context
)
{
val
starter
=
Intent
(
context
,
VibrateActivity
::
class
.
java
)
context
.
startActivity
(
starter
)
}
}
override
fun
initData
(
bundle
:
Bundle
?)
{
}
override
fun
bindLayout
():
Int
{
return
R
.
layout
.
activity_vibrate
}
override
fun
initView
(
savedInstanceState
:
Bundle
?,
contentView
:
View
)
{
setTitle
(
R
.
string
.
demo_vibrate
)
vibrate1000msBtn
.
setOnClickListener
{
VibrateUtils
.
vibrate
(
1000
)
}
vibrateCustomBtn
.
setOnClickListener
{
VibrateUtils
.
vibrate
(
longArrayOf
(
1000
,
1000
,
2000
,
2000
,
1000
),
1
)
}
vibrateCancelBtn
.
setOnClickListener
{
VibrateUtils
.
cancel
()
}
}
override
fun
doBusiness
()
{
}
override
fun
onWidgetClick
(
view
:
View
)
{
}
override
fun
onDestroy
()
{
super
.
onDestroy
()
VibrateUtils
.
cancel
()
}
}
utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.java
浏览文件 @
12a006fb
...
...
@@ -5,7 +5,6 @@ import android.content.DialogInterface;
import
android.support.v7.app.AlertDialog
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.widget.Button
;
import
android.widget.EditText
;
import
com.blankj.utilcode.pkg.R
;
...
...
@@ -27,7 +26,7 @@ public class DialogHelper {
public
static
void
showRationaleDialog
(
final
ShouldRequest
shouldRequest
)
{
Activity
topActivity
=
ActivityUtils
.
getTopActivity
();
if
(
topActivity
==
null
)
return
;
if
(
topActivity
==
null
||
topActivity
.
isFinishing
()
)
return
;
new
AlertDialog
.
Builder
(
topActivity
)
.
setTitle
(
android
.
R
.
string
.
dialog_alert_title
)
.
setMessage
(
R
.
string
.
permission_rationale_message
)
...
...
@@ -51,7 +50,7 @@ public class DialogHelper {
public
static
void
showOpenAppSettingDialog
()
{
Activity
topActivity
=
ActivityUtils
.
getTopActivity
();
if
(
topActivity
==
null
)
return
;
if
(
topActivity
==
null
||
topActivity
.
isFinishing
()
)
return
;
new
AlertDialog
.
Builder
(
topActivity
)
.
setTitle
(
android
.
R
.
string
.
dialog_alert_title
)
.
setMessage
(
R
.
string
.
permission_denied_forever_message
)
...
...
@@ -74,7 +73,7 @@ public class DialogHelper {
public
static
void
showAdaptScreenDialog
()
{
Activity
topActivity
=
ActivityUtils
.
getTopActivity
();
if
(
topActivity
==
null
)
return
;
if
(
topActivity
==
null
||
topActivity
.
isFinishing
()
)
return
;
new
AlertDialog
.
Builder
(
topActivity
)
.
setTitle
(
android
.
R
.
string
.
dialog_alert_title
)
.
setMessage
(
"Message!"
)
...
...
@@ -97,7 +96,7 @@ public class DialogHelper {
public
static
void
showKeyboardDialog
()
{
Activity
topActivity
=
ActivityUtils
.
getTopActivity
();
if
(
topActivity
==
null
)
return
;
if
(
topActivity
==
null
||
topActivity
.
isFinishing
()
)
return
;
final
View
dialogView
=
LayoutInflater
.
from
(
topActivity
).
inflate
(
R
.
layout
.
dialog_keyboard
,
null
);
final
EditText
etInput
=
dialogView
.
findViewById
(
R
.
id
.
et_input
);
final
AlertDialog
dialog
=
new
AlertDialog
.
Builder
(
topActivity
).
setView
(
dialogView
).
create
();
...
...
@@ -131,7 +130,7 @@ public class DialogHelper {
public
static
void
showToastDialog
()
{
Activity
topActivity
=
ActivityUtils
.
getTopActivity
();
if
(
topActivity
==
null
)
return
;
if
(
topActivity
==
null
||
topActivity
.
isFinishing
()
)
return
;
final
View
dialogView
=
LayoutInflater
.
from
(
topActivity
).
inflate
(
R
.
layout
.
dialog_toast
,
null
);
dialogView
.
findViewById
(
R
.
id
.
btn_show_short_toast
)
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
...
...
utilcode/pkg/src/main/res/drawable/image_lena.jpg
0 → 100644
浏览文件 @
12a006fb
52.0 KB
utilcode/pkg/src/main/res/drawable/image_lena.png
已删除
100644 → 0
浏览文件 @
877bbc4c
107.4 KB
utilcode/pkg/src/main/res/layout/activity_util_core.xml
浏览文件 @
12a006fb
...
...
@@ -182,4 +182,11 @@
android:onClick=
"toastClick"
android:text=
"@string/demo_toast"
/>
<Button
style=
"@style/WideBtnStyle"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:onClick=
"vibrateClick"
android:text=
"@string/demo_vibrate"
/>
</LinearLayout>
utilcode/pkg/src/main/res/layout/activity_vibrate.xml
0 → 100644
浏览文件 @
12a006fb
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
android:padding=
"@dimen/spacing_16"
>
<Button
android:id=
"@+id/vibrate1000msBtn"
style=
"@style/WideBtnStyle"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:text=
"@string/vibrate_1000ms"
/>
<Button
android:id=
"@+id/vibrateCustomBtn"
style=
"@style/WideBtnStyle"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:text=
"@string/vibrate_custom"
/>
<Button
android:id=
"@+id/vibrateCancelBtn"
style=
"@style/WideBtnStyle"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:text=
"@string/vibrate_cancel"
/>
</LinearLayout>
utilcode/pkg/src/main/res/values/strings.xml
浏览文件 @
12a006fb
...
...
@@ -26,6 +26,7 @@
<string
name=
"demo_sp"
>
SP Demo
</string>
<string
name=
"demo_span"
>
SpanUtils Demo
</string>
<string
name=
"demo_toast"
>
ToastUtils Demo
</string>
<string
name=
"demo_vibrate"
>
VibrateUtils Demo
</string>
<!--Activity 相关-->
<string
name=
"activity_shared_element"
>
Shared Element
</string>
...
...
@@ -293,4 +294,9 @@
<string
name=
"toast_custom_bg"
>
Custom Bg
</string>
<string
name=
"toast_span"
>
Spannable String
</string>
<string
name=
"toast_middle"
>
Middle
</string>
<!--Vibrate 相关-->
<string
name=
"vibrate_1000ms"
>
Vibrate 1000ms
</string>
<string
name=
"vibrate_custom"
>
Vibrate Custom
</string>
<string
name=
"vibrate_cancel"
>
Cancel
</string>
</resources>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录