Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
DoraemonKit
提交
ad7e43e9
D
DoraemonKit
项目概览
DiDi
/
DoraemonKit
9 个月 前同步成功
通知
166
Star
19623
Fork
3062
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DoraemonKit
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ad7e43e9
编写于
10月 27, 2021
作者:
Z
zhangyang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: [Android] support floating-icon edge pinned
上级
4adcc4d6
变更
5
展开全部
隐藏空白更改
内联
并排
Showing
5 changed file
with
248 addition
and
167 deletion
+248
-167
Android/app/src/main/java/com/didichuxing/doraemondemo/MainDebugActivityOkhttpV3.kt
...com/didichuxing/doraemondemo/MainDebugActivityOkhttpV3.kt
+49
-45
Android/dokit/src/main/java/com/didichuxing/doraemonkit/DoKitEnv.kt
...kit/src/main/java/com/didichuxing/doraemonkit/DoKitEnv.kt
+3
-0
Android/dokit/src/main/java/com/didichuxing/doraemonkit/DokitActivityLifecycleCallbacks.kt
...idichuxing/doraemonkit/DokitActivityLifecycleCallbacks.kt
+12
-7
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/AbsDokitView.kt
...java/com/didichuxing/doraemonkit/kit/core/AbsDokitView.kt
+179
-111
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/main/MainIconDoKitView.kt
...com/didichuxing/doraemonkit/kit/main/MainIconDoKitView.kt
+5
-4
未找到文件。
Android/app/src/main/java/com/didichuxing/doraemondemo/MainDebugActivityOkhttpV3.kt
浏览文件 @
ad7e43e9
...
...
@@ -17,11 +17,9 @@ import android.text.format.Formatter
import
android.util.Log
import
android.view.View
import
android.widget.ImageView
import
android.widget.TextView
import
android.widget.Toast
import
androidx.lifecycle.lifecycleScope
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
coil.imageLoader
import
coil.request.CachePolicy
import
coil.transform.CircleCropTransformation
...
...
@@ -29,15 +27,16 @@ import com.amap.api.location.AMapLocationListener
import
com.blankj.utilcode.util.ConvertUtils
import
com.blankj.utilcode.util.ThreadUtils
import
com.bumptech.glide.Glide
import
com.bumptech.glide.RequestBuilder
import
com.bumptech.glide.load.engine.DiskCacheStrategy
import
com.bumptech.glide.load.resource.bitmap.CircleCrop
import
com.didichuxing.doraemondemo.amap.AMapRouterFragment
import
com.didichuxing.doraemondemo.comm.CommLauncher
import
com.didichuxing.doraemondemo.databinding.ActivityMainBinding
import
com.didichuxing.doraemondemo.mc.MCActivity
import
com.didichuxing.doraemondemo.retrofit.GithubService
import
com.didichuxing.doraemonkit.DoKit
import
com.facebook.drawee.backends.pipeline.Fresco
import
com.facebook.drawee.view.SimpleDraweeView
import
com.lzy.okgo.OkGo
import
com.lzy.okgo.callback.StringCallback
import
com.lzy.okgo.model.Response
...
...
@@ -45,6 +44,7 @@ import com.nostra13.universalimageloader.core.ImageLoader
import
com.nostra13.universalimageloader.core.ImageLoaderConfiguration
import
com.squareup.picasso.MemoryPolicy
import
com.squareup.picasso.Picasso
import
com.squareup.picasso.RequestCreator
import
io.reactivex.schedulers.Schedulers
import
kotlinx.coroutines.*
import
okhttp3.*
...
...
@@ -61,8 +61,8 @@ import kotlin.coroutines.resume
/**
* @author jintai
*/
class
MainDebugActivityOkhttpV3
:
BaseActivity
(),
View
.
OnClickListener
,
CoroutineScope
by
MainScope
()
{
class
MainDebugActivityOkhttpV3
:
BaseActivity
(),
View
.
OnClickListener
,
CoroutineScope
by
MainScope
()
{
private
var
okHttpClient
:
OkHttpClient
?
=
null
private
var
mLocationManager
:
LocationManager
?
=
null
private
val
UPDATE_UI
=
100
...
...
@@ -79,19 +79,20 @@ class MainDebugActivityOkhttpV3 : BaseActivity(), View.OnClickListener,
*/
private
var
githubService
:
GithubService
?
=
null
private
var
_binding
:
ActivityMainBinding
?
=
null
@SuppressLint
(
"HandlerLeak"
)
private
val
mHandler
:
Handler
=
object
:
Handler
()
{
override
fun
handleMessage
(
msg
:
Message
)
{
super
.
handleMessage
(
msg
)
when
(
msg
.
what
)
{
100
->
(
findViewById
<
View
>(
R
.
id
.
iv_picasso
)
as
ImageView
)
.
setImageBitmap
(
msg
.
obj
as
Bitmap
)
100
->
_binding
?.
ivPicasso
?
.
setImageBitmap
(
msg
.
obj
as
Bitmap
)
else
->
{
}
}
}
}
val
datas
=
mutableListOf
(
"测试"
,
"显示/隐藏Dokit入口"
,
...
...
@@ -119,7 +120,6 @@ class MainDebugActivityOkhttpV3 : BaseActivity(), View.OnClickListener,
it
.
resume
(
"sleep 1000ms"
)
}
fun
sleep2
():
String
{
Thread
.
sleep
(
5000
)
return
"sleep 1000ms"
...
...
@@ -127,17 +127,14 @@ class MainDebugActivityOkhttpV3 : BaseActivity(), View.OnClickListener,
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
setContentView
(
R
.
layout
.
activity_main
)
val
tvEnv
=
findViewById
<
TextView
>(
R
.
id
.
tv_env
)
tvEnv
.
text
=
"${getString(R.string.app_build_types)}:Debug"
val
rv
=
findViewById
<
RecyclerView
>(
R
.
id
.
rv
)
rv
.
layoutManager
=
LinearLayoutManager
(
this
)
mAdapter
=
MainAdapter
(
R
.
layout
.
item_main_rv
,
datas
)
rv
.
adapter
=
mAdapter
_binding
=
ActivityMainBinding
.
inflate
(
layoutInflater
).
also
{
setContentView
(
it
.
root
)
mAdapter
=
MainAdapter
(
R
.
layout
.
item_main_rv
,
datas
)
it
.
initView
(
this
)
}
mAdapter
.
setOnItemClickListener
{
_
,
_
,
position
->
when
(
datas
[
position
])
{
"测试"
->
{
lifecycleScope
// lifecycleScope.launch {
// val helloworld = async {
// "Hello world!!"
...
...
@@ -180,7 +177,10 @@ class MainDebugActivityOkhttpV3 : BaseActivity(), View.OnClickListener,
DoKit
.
showToolPanel
()
}
"获取已安装的app"
->
{
packageManager
.
getInstalledApplications
(
PackageManager
.
MATCH_UNINSTALLED_PACKAGES
)
packageManager
.
getInstalledApplications
(
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
N
)
PackageManager
.
MATCH_UNINSTALLED_PACKAGES
else
PackageManager
.
GET_UNINSTALLED_PACKAGES
)
}
"跳转其他Activity"
->
{
startActivity
(
Intent
(
this
,
SecondActivity
::
class
.
java
))
...
...
@@ -274,7 +274,7 @@ class MainDebugActivityOkhttpV3 : BaseActivity(), View.OnClickListener,
)
}
"模拟Crash"
->
{
testCrash
()
!!
.
length
checkNotNull
(
testCrash
())
}
"创建数据库"
->
{
val
dbHelper
=
MyDatabaseHelper
(
this
,
"BookStore.db"
,
null
,
1
)
...
...
@@ -291,7 +291,6 @@ class MainDebugActivityOkhttpV3 : BaseActivity(), View.OnClickListener,
}
}
}
findViewById
<
View
>(
R
.
id
.
btn_load_img
).
setOnClickListener
(
this
)
okHttpClient
=
OkHttpClient
().
newBuilder
().
build
()
//获取定位服务
...
...
@@ -312,8 +311,13 @@ class MainDebugActivityOkhttpV3 : BaseActivity(), View.OnClickListener,
ImageLoader
.
getInstance
().
init
(
config
)
githubService
=
retrofit
.
create
(
GithubService
::
class
.
java
)
}
private
fun
ActivityMainBinding
.
initView
(
context
:
Context
)
{
tvEnv
.
text
=
"${getString(R.string.app_build_types)}:Debug"
rv
.
layoutManager
=
LinearLayoutManager
(
context
)
rv
.
adapter
=
mAdapter
btnLoadImg
.
setOnClickListener
(
this
@MainDebugActivityOkhttpV3
)
}
private
fun
test1
()
{
...
...
@@ -387,7 +391,6 @@ class MainDebugActivityOkhttpV3 : BaseActivity(), View.OnClickListener,
)
}
@SuppressLint
(
"MissingPermission"
)
override
fun
onClick
(
v
:
View
)
{
when
(
v
.
id
)
{
...
...
@@ -408,7 +411,7 @@ class MainDebugActivityOkhttpV3 : BaseActivity(), View.OnClickListener,
.
memoryPolicy
(
MemoryPolicy
.
NO_CACHE
)
.
placeholder
(
R
.
mipmap
.
cat
)
.
error
(
R
.
mipmap
.
cat
)
.
into
(
findViewById
<
View
>(
R
.
id
.
iv_picasso
)
as
ImageView
)
.
into
OrCancel
(
_binding
?.
ivPicasso
)
Glide
.
with
(
this
@MainDebugActivityOkhttpV3
)
.
asBitmap
()
.
load
(
glideImageUrl
)
...
...
@@ -417,9 +420,9 @@ class MainDebugActivityOkhttpV3 : BaseActivity(), View.OnClickListener,
.
diskCacheStrategy
(
DiskCacheStrategy
.
NONE
)
.
skipMemoryCache
(
true
)
.
transform
(
CircleCrop
())
.
into
((
findViewById
<
View
>(
R
.
id
.
iv_glide
)
as
ImageView
)
)
.
into
OrCancel
(
_binding
?.
ivGlide
)
//coil
findViewById
<
ImageView
>(
R
.
id
.
iv_coil
)
.
apply
{
_binding
?.
ivCoil
?
.
apply
{
val
request
=
coil
.
request
.
ImageRequest
.
Builder
(
this
.
context
)
.
memoryCachePolicy
(
CachePolicy
.
DISABLED
)
.
transformations
(
CircleCropTransformation
())
...
...
@@ -431,13 +434,9 @@ class MainDebugActivityOkhttpV3 : BaseActivity(), View.OnClickListener,
}
//imageLoader
val
imageLoader
=
ImageLoader
.
getInstance
()
imageLoader
.
displayImage
(
imageLoaderImageUrl
,
findViewById
<
View
>(
R
.
id
.
iv_imageloader
)
as
ImageView
)
imageLoader
.
displayImageOrNot
(
imageLoaderImageUrl
,
_binding
?.
ivImageloader
)
//fresco
val
frescoImageView
=
findViewById
<
SimpleDraweeView
>(
R
.
id
.
iv_fresco
)
frescoImageView
.
setImageURI
(
Uri
.
parse
(
frescoImageUrl
))
_binding
?.
ivFresco
?.
setImageURI
(
Uri
.
parse
(
frescoImageUrl
))
val
imagePipeline
=
Fresco
.
getImagePipeline
()
// combines above two lines
imagePipeline
.
clearCaches
()
...
...
@@ -567,18 +566,16 @@ class MainDebugActivityOkhttpV3 : BaseActivity(), View.OnClickListener,
}
private
fun
inputStream2File
(
`is`
:
InputStream
,
saveFile
:
File
)
{
try
{
var
len
:
Int
val
buf
=
ByteArray
(
2048
)
val
fos
=
FileOutputStream
(
saveFile
)
while
(
`is`
.
read
(
buf
).
also
{
len
=
it
}
!=
-
1
)
{
fos
.
write
(
buf
,
0
,
len
)
var
len
:
Int
val
buf
=
ByteArray
(
2048
)
val
fos
=
FileOutputStream
(
saveFile
)
`is`
.
use
{
input
->
fos
.
use
{
output
->
while
(
input
.
read
(
buf
).
also
{
len
=
it
}
!=
-
1
)
{
output
.
write
(
buf
,
0
,
len
)
}
output
.
flush
()
}
fos
.
flush
()
fos
.
close
()
`is`
.
close
()
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
}
}
...
...
@@ -612,12 +609,19 @@ class MainDebugActivityOkhttpV3 : BaseActivity(), View.OnClickListener,
}
}
override
fun
onWindowFocusChanged
(
hasFocus
:
Boolean
)
{
super
.
onWindowFocusChanged
(
hasFocus
)
private
fun
RequestCreator
.
intoOrCancel
(
target
:
ImageView
?)
{
target
?.
also
{
into
(
it
)
}
}
private
fun
RequestBuilder
<*>.
intoOrCancel
(
target
:
ImageView
?)
{
target
?.
also
{
into
(
it
)
}
}
private
fun
ImageLoader
.
displayImageOrNot
(
url
:
String
,
target
:
ImageView
?)
{
target
?.
also
{
displayImage
(
url
,
it
)
}
}
companion
object
{
const
val
TAG
=
"MainDebugActivity"
}
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/DoKitEnv.kt
浏览文件 @
ad7e43e9
package
com.didichuxing.doraemonkit
import
android.app.Application
import
android.graphics.Point
/**
* Created by alvince on 2021/9/29
...
...
@@ -12,6 +13,8 @@ internal object DoKitEnv {
@Volatile
var
app
:
Application
?
=
null
val
windowSize
:
Point
=
Point
()
@JvmStatic
fun
requireApp
():
Application
{
return
app
?:
throw
IllegalStateException
(
"Dokit app no set"
)
...
...
Android/dokit/src/main/java/com/didichuxing/doraemonkit/DokitActivityLifecycleCallbacks.kt
浏览文件 @
ad7e43e9
...
...
@@ -4,6 +4,7 @@ import android.app.Activity
import
android.app.Application
import
android.content.Context
import
android.os.Bundle
import
android.view.View
import
android.widget.Toast
import
androidx.fragment.app.FragmentActivity
import
androidx.fragment.app.FragmentManager
...
...
@@ -173,17 +174,21 @@ class DokitActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks {
* @param activity
*/
private
fun
dispatchOnActivityResumed
(
activity
:
Activity
)
{
activity
.
window
.
decorView
.
also
{
it
.
post
{
DoKitEnv
.
windowSize
.
set
(
it
.
width
,
it
.
height
)
}
}
if
(
DoKitManager
.
IS_NORMAL_FLOAT_MODE
)
{
//显示内置dokitView icon
DokitViewManager
.
INSTANCE
.
dispatchOnActivityResumed
(
activity
)
return
}
// FIXME: consider handle permission down to activity-layer, just dispatch resumed-event here
//悬浮窗权限 vivo 华为可以不需要动态权限 小米需要
if
(
DoKitPermissionUtil
.
canDrawOverlays
(
activity
))
{
DokitViewManager
.
INSTANCE
.
dispatchOnActivityResumed
(
activity
)
}
else
{
//悬浮窗权限 vivo 华为可以不需要动态权限 小米需要
if
(
DoKitPermissionUtil
.
canDrawOverlays
(
activity
))
{
DokitViewManager
.
INSTANCE
.
dispatchOnActivityResumed
(
activity
)
}
else
{
//请求悬浮窗权限
requestPermission
(
activity
)
}
//请求悬浮窗权限
requestPermission
(
activity
)
}
}
...
...
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/AbsDokitView.kt
浏览文件 @
ad7e43e9
此差异已折叠。
点击以展开。
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/main/MainIconDoKitView.kt
浏览文件 @
ad7e43e9
...
...
@@ -16,8 +16,11 @@ import com.didichuxing.doraemonkit.kit.core.DokitViewLayoutParams
* Created by jintai on 2019/09/26.
*/
class
MainIconDoKitView
:
AbsDokitView
()
{
//public static int FLOAT_SIZE = 174;
//public static int FLOAT_SIZE = 58;
init
{
viewProps
.
edgePinned
=
true
}
override
fun
onCreate
(
context
:
Context
)
{}
override
fun
onViewCreated
(
view
:
FrameLayout
)
{
...
...
@@ -39,8 +42,6 @@ class MainIconDoKitView : AbsDokitView() {
params
.
y
=
FloatIconConfig
.
getLastPosY
()
params
.
width
=
DokitViewLayoutParams
.
WRAP_CONTENT
params
.
height
=
DokitViewLayoutParams
.
WRAP_CONTENT
// params.width = ConvertUtils.dp2px(FLOAT_SIZE);
// params.height = ConvertUtils.dp2px(FLOAT_SIZE);
}
override
fun
onResume
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录