Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xiaoxuan_i809
AndroidUtilCode
提交
d049f20b
A
AndroidUtilCode
项目概览
xiaoxuan_i809
/
AndroidUtilCode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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 搜索 >>
提交
d049f20b
编写于
8月 25, 2018
作者:
B
Blankj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
see 08/25 log
上级
63941ede
变更
13
隐藏空白更改
内联
并排
Showing
13 changed file
with
131 addition
and
56 deletion
+131
-56
README-CN.md
README-CN.md
+1
-1
README.md
README.md
+1
-1
app/src/main/java/com/blankj/androidutilcode/UtilsApp.java
app/src/main/java/com/blankj/androidutilcode/UtilsApp.java
+0
-2
config.gradle
config.gradle
+3
-3
subutil/src/main/AndroidManifest.xml
subutil/src/main/AndroidManifest.xml
+11
-1
subutil/src/main/java/com/blankj/subutil/util/Utils.java
subutil/src/main/java/com/blankj/subutil/util/Utils.java
+44
-0
update_log.md
update_log.md
+1
-0
utilcode/README-CN.md
utilcode/README-CN.md
+2
-14
utilcode/README.md
utilcode/README.md
+2
-14
utilcode/src/main/AndroidManifest.xml
utilcode/src/main/AndroidManifest.xml
+1
-1
utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
...e/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
+16
-0
utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java
...de/src/main/java/com/blankj/utilcode/util/ToastUtils.java
+1
-1
utilcode/src/main/java/com/blankj/utilcode/util/Utils.java
utilcode/src/main/java/com/blankj/utilcode/util/Utils.java
+48
-18
未找到文件。
README-CN.md
浏览文件 @
d049f20b
...
...
@@ -41,7 +41,7 @@
[
logo
]:
https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png
[
aucsvg
]:
https://img.shields.io/badge/AndroidUtilCode-v1.19.
1
-brightgreen.svg
[
aucsvg
]:
https://img.shields.io/badge/AndroidUtilCode-v1.19.
2
-brightgreen.svg
[
auc
]:
https://github.com/Blankj/AndroidUtilCode
[
apisvg
]:
https://img.shields.io/badge/API-14+-brightgreen.svg
...
...
README.md
浏览文件 @
d049f20b
...
...
@@ -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.19.
1
-brightgreen.svg
[
aucsvg
]:
https://img.shields.io/badge/AndroidUtilCode-v1.19.
2
-brightgreen.svg
[
auc
]:
https://github.com/Blankj/AndroidUtilCode
[
apisvg
]:
https://img.shields.io/badge/API-14+-brightgreen.svg
...
...
app/src/main/java/com/blankj/androidutilcode/UtilsApp.java
浏览文件 @
d049f20b
...
...
@@ -36,9 +36,7 @@ public class UtilsApp extends BaseApplication {
@Override
public
void
onCreate
()
{
super
.
onCreate
();
LogUtils
.
e
();
sInstance
=
this
;
com
.
blankj
.
subutil
.
util
.
Utils
.
init
(
this
);
initLeakCanary
();
initLog
();
initCrash
();
...
...
config.gradle
浏览文件 @
d049f20b
...
...
@@ -6,8 +6,8 @@ ext {
compileSdkVersion:
27
,
minSdkVersion
:
14
,
targetSdkVersion
:
27
,
versionCode
:
1
_019_00
1
,
versionName
:
'1.19.
1
'
// E.g 1.9.72 => 1,009,072
versionCode
:
1
_019_00
2
,
versionName
:
'1.19.
2
'
// E.g 1.9.72 => 1,009,072
]
versionConfig
=
[
...
...
@@ -167,7 +167,7 @@ def configAppDependencies(Project pro) {
// LeakCanary
debugImplementation
depConfig
.
leakcanary
.
android
releaseImplementation
depConfig
.
leakcanary
.
android_no_op
// implementation 'com.blankj:utilcode:1.19.
1
'
// implementation 'com.blankj:utilcode:1.19.
2
'
}
}
...
...
subutil/src/main/AndroidManifest.xml
浏览文件 @
d049f20b
<manifest
package=
"com.blankj.subutil"
/>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"com.blankj.subutil"
>
<application>
<provider
android:name=
".util.Utils$ContentProvider4SubUtil"
android:authorities=
"${applicationId}.subutil.content.provider"
android:exported=
"false"
android:multiprocess=
"true"
/>
</application>
</manifest>
subutil/src/main/java/com/blankj/subutil/util/Utils.java
浏览文件 @
d049f20b
...
...
@@ -2,8 +2,14 @@ package com.blankj.subutil.util;
import
android.annotation.SuppressLint
;
import
android.app.Application
;
import
android.content.ContentProvider
;
import
android.content.ContentValues
;
import
android.content.Context
;
import
android.database.Cursor
;
import
android.net.Uri
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.support.v4.content.FileProvider
;
import
java.lang.reflect.InvocationTargetException
;
...
...
@@ -97,4 +103,42 @@ public final class Utils {
}
throw
new
NullPointerException
(
"u should init first"
);
}
public
static
final
class
ContentProvider4SubUtil
extends
ContentProvider
{
@Override
public
boolean
onCreate
()
{
Utils
.
init
(
getContext
());
return
true
;
}
@Nullable
@Override
public
Cursor
query
(
@NonNull
Uri
uri
,
@Nullable
String
[]
projection
,
@Nullable
String
selection
,
@Nullable
String
[]
selectionArgs
,
@Nullable
String
sortOrder
)
{
return
null
;
}
@Nullable
@Override
public
String
getType
(
@NonNull
Uri
uri
)
{
return
null
;
}
@Nullable
@Override
public
Uri
insert
(
@NonNull
Uri
uri
,
@Nullable
ContentValues
values
)
{
return
null
;
}
@Override
public
int
delete
(
@NonNull
Uri
uri
,
@Nullable
String
selection
,
@Nullable
String
[]
selectionArgs
)
{
return
0
;
}
@Override
public
int
update
(
@NonNull
Uri
uri
,
@Nullable
ContentValues
values
,
@Nullable
String
selection
,
@Nullable
String
[]
selectionArgs
)
{
return
0
;
}
}
}
\ No newline at end of file
update_log.md
浏览文件 @
d049f20b
*
18/08/24 新增 ScreenUtils#restoreAdaptScreen,利用 FileProvider4UtilCode 不再需要初始化,发布 1.19.2
*
18/08/23 修复适配后 ToastUtils 原生 Toast 尺寸发生改变的问题,修复 KeyboardUtils#fixSoftInputLeaks,发布 1.19.1
*
18/08/10 修复 ScreenUtils#adaptxx 导致获取状态栏和导航栏尺寸不对问题,发布 1.19.0
*
18/08/09 新增 IntentUtils#isIntentAvailable,ToastUtils 传入空显示 null,发布 1.18.6
...
...
utilcode/README-CN.md
浏览文件 @
d049f20b
...
...
@@ -2,23 +2,10 @@
Gradle:
```
groovy
implementation
'com.blankj:utilcode:1.19.
1
'
implementation
'com.blankj:utilcode:1.19.
2
'
```
## How to use
```
java
// init it in the function of onCreate in ur Application
Utils
.
init
(
application
);
```
## Proguard
U needn't do anything, because I add
`consumerProguardFiles 'proguard-rules.pro'`
in build.gradle.
## APIs
*
### Activity 相关 ->
[
ActivityUtils.java
][
activity.java
]
->
[
Demo
][
activity.demo
]
...
...
@@ -543,6 +530,7 @@ isTablet : 判断是否是平板
adaptScreen4VerticalSlide : 适配垂直滑动的屏幕
adaptScreen4HorizontalSlide: 适配水平滑动的屏幕
cancelAdaptScreen : 取消适配屏幕
restoreAdaptScreen : 恢复适配屏幕
isAdaptScreen : 是否适配屏幕
```
...
...
utilcode/README.md
浏览文件 @
d049f20b
...
...
@@ -2,23 +2,10 @@
Gradle:
```
groovy
implementation
'com.blankj:utilcode:1.19.
1
'
implementation
'com.blankj:utilcode:1.19.
2
'
```
## How to use
```
java
// init it in the function of onCreate in ur Application
Utils
.
init
(
application
);
```
## Proguard
U needn't do anything, because I add
`consumerProguardFiles 'proguard-rules.pro'`
in build.gradle.
## APIs
*
### About Activity ->
[
ActivityUtils.java
][
activity.java
]
->
[
Demo
][
activity.demo
]
...
...
@@ -543,6 +530,7 @@ isTablet
adaptScreen4VerticalSlide
adaptScreen4HorizontalSlide
cancelAdaptScreen
restoreAdaptScreen
isAdaptScreen
```
...
...
utilcode/src/main/AndroidManifest.xml
浏览文件 @
d049f20b
...
...
@@ -10,7 +10,7 @@
android:windowSoftInputMode=
"stateHidden|stateAlwaysHidden"
/>
<provider
android:name=
".util.Utils$FileProvider4Util"
android:name=
".util.Utils$FileProvider4Util
Code
"
android:authorities=
"${applicationId}.utilcode.provider"
android:exported=
"false"
android:grantUriPermissions=
"true"
...
...
utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
浏览文件 @
d049f20b
...
...
@@ -360,6 +360,22 @@ public final class ScreenUtils {
appDm
.
densityDpi
=
systemDm
.
densityDpi
;
}
/**
* Cancel adapt the screen.
*/
public
static
void
cancelAdaptScreen
()
{
Utils
.
cancelAdaptScreen
();
}
/**
* Restore adapt the screen.
* <p>U should call the method of {@link ScreenUtils#adaptScreen4VerticalSlide(Activity, int)}
* or {@link ScreenUtils#adaptScreen4HorizontalSlide(Activity, int)} firstly.</p>
*/
public
static
void
restoreAdaptScreen
()
{
Utils
.
restoreAdaptScreen
();
}
/**
* Return whether adapt screen.
*
...
...
utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java
浏览文件 @
d049f20b
...
...
@@ -240,7 +240,7 @@ public final class ToastUtils {
if
(
Utils
.
isAdaptScreen
())
{
Utils
.
cancelAdaptScreen
();
sToast
=
Toast
.
makeText
(
Utils
.
getApp
(),
text
,
duration
);
Utils
.
a
daptScreen
();
Utils
.
restoreA
daptScreen
();
}
else
{
sToast
=
Toast
.
makeText
(
Utils
.
getApp
(),
text
,
duration
);
}
...
...
utilcode/src/main/java/com/blankj/utilcode/util/Utils.java
浏览文件 @
d049f20b
...
...
@@ -9,6 +9,7 @@ import android.content.Context;
import
android.content.res.Resources
;
import
android.os.Bundle
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.support.v4.content.FileProvider
;
import
android.util.DisplayMetrics
;
...
...
@@ -87,20 +88,21 @@ public final class Utils {
*/
public
static
Application
getApp
()
{
if
(
sApplication
!=
null
)
return
sApplication
;
return
getApplicationByReflect
();
Application
app
=
getApplicationByReflect
();
init
(
app
);
return
app
;
}
private
static
Application
getApplicationByReflect
()
{
try
{
@SuppressLint
(
"PrivateApi"
)
Class
<?>
activityThread
=
Class
.
forName
(
"android.app.ActivityThread"
);
Object
at
=
activityThread
.
getMethod
(
"currentActivityThread"
).
invoke
(
null
);
Object
app
=
activityThread
.
getMethod
(
"getApplication"
).
invoke
(
at
);
Object
thread
=
activityThread
.
getMethod
(
"currentActivityThread"
).
invoke
(
null
);
Object
app
=
activityThread
.
getMethod
(
"getApplication"
).
invoke
(
thread
);
if
(
app
==
null
)
{
throw
new
NullPointerException
(
"u should init first"
);
}
init
((
Application
)
app
);
return
sApplication
;
return
(
Application
)
app
;
}
catch
(
NoSuchMethodException
e
)
{
e
.
printStackTrace
();
}
catch
(
IllegalAccessException
e
)
{
...
...
@@ -144,21 +146,46 @@ public final class Utils {
return
false
;
}
static
void
adaptScreen
()
{
static
final
AdaptScreenArgs
ADAPT_SCREEN_ARGS
=
new
AdaptScreenArgs
();
static
void
restoreAdaptScreen
()
{
final
DisplayMetrics
systemDm
=
Resources
.
getSystem
().
getDisplayMetrics
();
final
DisplayMetrics
appDm
=
Utils
.
getApp
().
getResources
().
getDisplayMetrics
();
if
(
ADAPT_SCREEN_ARGS
.
isVerticalSlide
)
{
appDm
.
density
=
appDm
.
widthPixels
/
(
float
)
ADAPT_SCREEN_ARGS
.
sizeInPx
;
final
Activity
activity
=
ACTIVITY_LIFECYCLE
.
getTopActivity
();
if
(
activity
!=
null
)
{
final
DisplayMetrics
activityDm
=
activity
.
getResources
().
getDisplayMetrics
();
if
(
ADAPT_SCREEN_ARGS
.
isVerticalSlide
)
{
activityDm
.
density
=
activityDm
.
widthPixels
/
(
float
)
ADAPT_SCREEN_ARGS
.
sizeInPx
;
}
else
{
activityDm
.
density
=
activityDm
.
heightPixels
/
(
float
)
ADAPT_SCREEN_ARGS
.
sizeInPx
;
}
activityDm
.
scaledDensity
=
activityDm
.
density
*
(
systemDm
.
scaledDensity
/
systemDm
.
density
);
activityDm
.
densityDpi
=
(
int
)
(
160
*
activityDm
.
density
);
appDm
.
density
=
activityDm
.
density
;
appDm
.
scaledDensity
=
activityDm
.
scaledDensity
;
appDm
.
densityDpi
=
activityDm
.
densityDpi
;
}
else
{
appDm
.
density
=
appDm
.
heightPixels
/
(
float
)
ADAPT_SCREEN_ARGS
.
sizeInPx
;
if
(
ADAPT_SCREEN_ARGS
.
isVerticalSlide
)
{
appDm
.
density
=
appDm
.
widthPixels
/
(
float
)
ADAPT_SCREEN_ARGS
.
sizeInPx
;
}
else
{
appDm
.
density
=
appDm
.
heightPixels
/
(
float
)
ADAPT_SCREEN_ARGS
.
sizeInPx
;
}
appDm
.
scaledDensity
=
appDm
.
density
*
(
systemDm
.
scaledDensity
/
systemDm
.
density
);
appDm
.
densityDpi
=
(
int
)
(
160
*
appDm
.
density
);
}
appDm
.
scaledDensity
=
appDm
.
density
*
(
systemDm
.
scaledDensity
/
systemDm
.
density
);
appDm
.
densityDpi
=
(
int
)
(
160
*
appDm
.
density
);
}
static
void
cancelAdaptScreen
()
{
final
DisplayMetrics
systemDm
=
Resources
.
getSystem
().
getDisplayMetrics
();
final
DisplayMetrics
appDm
=
Utils
.
getApp
().
getResources
().
getDisplayMetrics
();
final
Activity
activity
=
ACTIVITY_LIFECYCLE
.
getTopActivity
();
if
(
activity
!=
null
)
{
final
DisplayMetrics
activityDm
=
activity
.
getResources
().
getDisplayMetrics
();
activityDm
.
density
=
systemDm
.
density
;
activityDm
.
scaledDensity
=
systemDm
.
scaledDensity
;
activityDm
.
densityDpi
=
systemDm
.
densityDpi
;
}
appDm
.
density
=
systemDm
.
density
;
appDm
.
scaledDensity
=
systemDm
.
scaledDensity
;
appDm
.
densityDpi
=
systemDm
.
densityDpi
;
...
...
@@ -170,8 +197,6 @@ public final class Utils {
return
systemDm
.
density
!=
appDm
.
density
;
}
static
final
AdaptScreenArgs
ADAPT_SCREEN_ARGS
=
new
AdaptScreenArgs
();
static
class
AdaptScreenArgs
{
int
sizeInPx
;
boolean
isVerticalSlide
;
...
...
@@ -270,7 +295,14 @@ public final class Utils {
return
topActivity
;
}
}
// using reflect to get top activity
Activity
topActivityByReflect
=
getTopActivityByReflect
();
if
(
topActivityByReflect
!=
null
)
{
setTopActivity
(
topActivityByReflect
);
}
return
topActivityByReflect
;
}
private
Activity
getTopActivityByReflect
()
{
try
{
@SuppressLint
(
"PrivateApi"
)
Class
<?>
activityThreadClass
=
Class
.
forName
(
"android.app.ActivityThread"
);
...
...
@@ -286,9 +318,7 @@ public final class Utils {
if
(!
pausedField
.
getBoolean
(
activityRecord
))
{
Field
activityField
=
activityRecordClass
.
getDeclaredField
(
"activity"
);
activityField
.
setAccessible
(
true
);
Activity
activity
=
(
Activity
)
activityField
.
get
(
activityRecord
);
setTopActivity
(
activity
);
return
activity
;
return
(
Activity
)
activityField
.
get
(
activityRecord
);
}
}
}
catch
(
ClassNotFoundException
e
)
{
...
...
@@ -307,7 +337,7 @@ public final class Utils {
}
public
static
final
class
FileProvider4Util
extends
FileProvider
{
public
static
final
class
FileProvider4Util
Code
extends
FileProvider
{
@Override
public
boolean
onCreate
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录