Commit b9ea641f authored by 储小杉's avatar 储小杉 🃏

完善浮框。

parent 8a94c972
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
<application <application
......
package com.qimai.android.widget package com.qimai.android.widget
import android.app.Application import android.app.Application
import com.qimai.log.LogUp
import zs.qimai.com.printer2.utils.PrintManagerUtils import zs.qimai.com.printer2.utils.PrintManagerUtils
class App : Application() { class App : Application() {
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
PrintManagerUtils.getInstance().init(this) PrintManagerUtils.getInstance().init(this)
LogUp.init(this, true)
} }
} }
\ No newline at end of file
...@@ -9,6 +9,7 @@ import android.widget.TextView ...@@ -9,6 +9,7 @@ import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.qimai.android.widgetlib.popup.QmTipOverlayDrawable import com.qimai.android.widgetlib.popup.QmTipOverlayDrawable
import com.qimai.android.widgetlib.toast.HolderContext import com.qimai.android.widgetlib.toast.HolderContext
import com.qimai.log.LogUp
import com.qimai.log.ui.LogUpActivity import com.qimai.log.ui.LogUpActivity
import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.*
...@@ -18,6 +19,7 @@ class MainActivity : AppCompatActivity() { ...@@ -18,6 +19,7 @@ class MainActivity : AppCompatActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)
HolderContext.getInstance().register { this } HolderContext.getInstance().register { this }
LogUp.init(this, true)
findViewById<Button>(R.id.commonPop).setOnClickListener { findViewById<Button>(R.id.commonPop).setOnClickListener {
// ToastUtils.getInstance().showCenter("测试测试") // ToastUtils.getInstance().showCenter("测试测试")
...@@ -60,6 +62,5 @@ class MainActivity : AppCompatActivity() { ...@@ -60,6 +62,5 @@ class MainActivity : AppCompatActivity() {
} }
keyboard.btnText = "结账" keyboard.btnText = "结账"
keyboard.invalidate() keyboard.invalidate()
} }
} }
...@@ -68,10 +68,11 @@ dependencies { ...@@ -68,10 +68,11 @@ dependencies {
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.3.1"
implementation 'com.dianping.android.sdk:logan:1.2.4' implementation 'com.dianping.android.sdk:logan:1.2.4'
implementation project(path: ':widgetlib') implementation project(path: ':widgetlib')
implementation "com.github.princekin-f:EasyFloat:2.0.3"
} }
group 'com.qmai.android.log' group 'com.qmai.android.log'
version '1.0.1.21-SNAPSHOT' version '1.1-SNAPSHOT'
gradlePublish { gradlePublish {
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" /> tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<application> <application>
......
...@@ -8,6 +8,8 @@ import com.blankj.utilcode.util.TimeUtils ...@@ -8,6 +8,8 @@ import com.blankj.utilcode.util.TimeUtils
import com.dianping.logan.Logan import com.dianping.logan.Logan
import com.dianping.logan.LoganConfig import com.dianping.logan.LoganConfig
import com.qimai.log.bean.LogUpBean import com.qimai.log.bean.LogUpBean
import com.qimai.log.ui.LogUpFloatView
import kotlinx.coroutines.*
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
import java.io.File import java.io.File
import java.io.FileInputStream import java.io.FileInputStream
...@@ -65,6 +67,13 @@ object LogUp { ...@@ -65,6 +67,13 @@ object LogUp {
Logan.setOnLoganProtocolStatus { cmd, code -> Logan.setOnLoganProtocolStatus { cmd, code ->
LogUtils.d("clogan > cmd : $cmd | code : $code") LogUtils.d("clogan > cmd : $cmd | code : $code")
} }
GlobalScope.launch(Dispatchers.IO) {
delay(1_000)
withContext(Dispatchers.Main) {
LogUpFloatView.show()
}
}
} }
/** /**
......
package com.qimai.log
import android.view.View
/**
* Created by chuxiaoshan on 2021/11/15 20:25
*
* Description:
*/
/**
* 扩展属性参数:用于标记是否可点击
*/
private var <T : View> T.viewClickable: Boolean
get() = if (getTag(1 + 2 shl 24) != null) getTag(1 + 2 shl 24) as Boolean else true
set(value) {
setTag(1 + 2 shl 24, value)
}
/**
* 设置点击监听, 并自定义防抖时间
*
* @receiver T View
* @param time Long 防抖间隔时长 默认300
* @param action Function1<[@kotlin.ParameterName] View, Unit> 点击事件
*/
fun <T : View> T.click(time: Long = 300, action: (T: View) -> Unit) {
setOnClickListener {
if (viewClickable) {
viewClickable = false
action(it)
postDelayed({ viewClickable = true }, time)
}
}
}
\ No newline at end of file
package com.qimai.log.ui
import android.content.Intent
import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
import android.os.Build
import androidx.constraintlayout.widget.ConstraintLayout
import com.blankj.utilcode.util.*
import com.lzf.easyfloat.EasyFloat
import com.lzf.easyfloat.enums.ShowPattern
import com.lzf.easyfloat.enums.SidePattern
import com.qimai.log.R
import com.qimai.log.click
/**
* Created by chuxiaoshan on 2021/5/27 14:10
*
* Description: 浮框
*/
object LogUpFloatView {
//标识浮框的tag
private const val FLOAT_VIEW_TAG = "tag_float_view"
/**
* 浮框权限判断与申请
*/
private fun requestPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!PermissionUtils.isGrantedDrawOverlays()) {
PermissionUtils.requestDrawOverlays(object :
PermissionUtils.SimpleCallback {
override fun onGranted() {
LogUtils.d("---1111--->onGranted")
initFloat()
}
override fun onDenied() {
LogUtils.d("---1111--->onDenied")
ToastUtils.showShort("浮框权限未打开")
}
})
} else {
initFloat()
LogUtils.d("---1111--->浮框权限本来就是打开的")
}
} else {
LogUtils.d("---1111--->低版本")
initFloat()
}
}
private fun initFloat() {
try {
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) {
EasyFloat.dismiss(FLOAT_VIEW_TAG)
}
EasyFloat.with(Utils.getApp())
.setTag(FLOAT_VIEW_TAG)
.setShowPattern(ShowPattern.FOREGROUND)
.setLocation(
ScreenUtils.getScreenWidth() - ConvertUtils.dp2px(58f),
ScreenUtils.getScreenHeight() - ConvertUtils.dp2px(200f)
)
.setSidePattern(SidePattern.RESULT_HORIZONTAL)
.setImmersionStatusBar(true)
.setFilter(LogUpActivity::class.java)
.setLayout(R.layout.float_logup) {
it.findViewById<ConstraintLayout>(R.id.cl_float_view).click {
Utils.getApp().startActivity(Intent(
Utils.getApp(),
LogUpActivity::class.java
).apply {
flags = FLAG_ACTIVITY_NEW_TASK
})
}
}.show()
} catch (e: Exception) {
LogUtils.e("---e--->${e.printStackTrace()}")
}
}
/**
* 初始化并显示全局浮框
*/
fun show() {
requestPermission()
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffee58" />
<corners android:radius="100dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cl_float_view"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_margin="4dp"
android:background="@drawable/circle_log"
android:clickable="true"
android:clipToPadding="false"
android:elevation="2dp"
android:focusable="true">
<TextView
android:id="@+id/tv_clear_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="LogUp"
android:textColor="#666666"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment