package com.sinata.xqmuse.utils.extention
|
|
import android.app.Activity
|
import android.content.Context
|
import android.graphics.Bitmap
|
import android.util.Log
|
import android.view.View
|
import android.widget.ImageView
|
import androidx.constraintlayout.widget.ConstraintLayout
|
import androidx.fragment.app.Fragment
|
import cn.sinata.xldutils.activity.BaseActivity
|
import cn.sinata.xldutils.utils.SPUtils
|
import com.bumptech.glide.Glide
|
import com.bumptech.glide.request.target.SimpleTarget
|
import com.bumptech.glide.request.transition.Transition
|
import com.sinata.xqmuse.R
|
import com.sinata.xqmuse.ui.login.LoginActivity
|
import com.sinata.xqmuse.utils.Const
|
import com.sinata.xqmuse.utils.interfaces.StringCallback
|
import com.sinata.xqmuse.utils.OSSUtil
|
import com.sinata.xqmuse.utils.extention.ViewClickDelay.SPACE_TIME
|
import com.sinata.xqmuse.utils.extention.ViewClickDelay.hash
|
import com.sinata.xqmuse.utils.extention.ViewClickDelay.lastClickTime
|
import com.sinata.xqmuse.utils.glide.GlideUtil
|
import com.ypx.imagepicker.utils.PBitmapUtils
|
import kotlinx.android.synthetic.main.activity_course_deatil.*
|
import org.jetbrains.anko.startActivity
|
import org.jetbrains.anko.support.v4.startActivity
|
import org.jetbrains.anko.toast
|
import top.zibin.luban.Luban
|
import top.zibin.luban.OnCompressListener
|
import java.io.File
|
|
|
fun String.uploadWithCompress(act:BaseActivity,callback: StringCallback){
|
Luban.with(act).load(File(this))
|
.ignoreBy(100).setTargetDir(PBitmapUtils.getPickerFileDirectory(act).absolutePath + File.separator)
|
.filter { path -> path.isNotEmpty() || path.toLowerCase().endsWith(".gif") }
|
.setCompressListener(object :OnCompressListener{
|
override fun onSuccess(file: File) {
|
Log.e("gwx","压缩完成")
|
Thread(Runnable {
|
val uploadSingle = OSSUtil(act).uploadSingle(file.path)
|
act.runOnUiThread {
|
act.dismissDialog()
|
callback.onResult(uploadSingle)
|
if (file.path != this@uploadWithCompress)
|
file.delete()
|
}
|
}).start()
|
}
|
|
override fun onError(e: Throwable?) {
|
e?.printStackTrace()
|
act.dismissDialog()
|
}
|
|
override fun onStart() {
|
Log.e("gwx","压缩开始")
|
act.showDialog(canCancel = false)
|
}
|
}).launch()
|
}
|
|
object ViewClickDelay {
|
var hash: Int = 0
|
var lastClickTime: Long = 0
|
var SPACE_TIME: Long = 2000
|
}
|
|
infix fun View.clickDelay(clickAction: () -> Unit) {
|
this.setOnClickListener {
|
if (this.hashCode() != hash) {
|
hash = this.hashCode()
|
lastClickTime = System.currentTimeMillis()
|
clickAction()
|
} else {
|
val currentTime = System.currentTimeMillis()
|
if (currentTime - lastClickTime > SPACE_TIME) {
|
lastClickTime = System.currentTimeMillis()
|
clickAction()
|
}
|
}
|
}
|
}
|
|
/**
|
* 使用Glide计算网络图片的宽高比加载长图
|
* 父布局必须是ConstraintLayout:使用 dimensionRatio 属性
|
*/
|
fun String.loadLongImage(context:Context,imageView: ImageView){
|
Glide.with(context).asBitmap().load(this)
|
.into(object : SimpleTarget<Bitmap?>() {
|
override fun onResourceReady(
|
resource: Bitmap,
|
transition: Transition<in Bitmap?>?
|
) {
|
val layoutParams = imageView.layoutParams as ConstraintLayout.LayoutParams
|
layoutParams.dimensionRatio =
|
"${resource.width}:${resource.height}"
|
imageView.layoutParams = layoutParams
|
GlideUtil.load(context,this@loadLongImage,imageView,0)
|
}
|
})
|
}
|
|
fun Double.formatDistance() = if(this>1000) "%.2fkm".format(this/1000) else "%dm".format(this.toInt())
|
|
//全局登录校验
|
fun Activity.checkLogin(toLogin:Boolean = false):Boolean{
|
return if (SPUtils.instance().getString(Const.User.TOKEN).isNullOrEmpty()){
|
if (toLogin){
|
toast("请先登录")
|
startActivity<LoginActivity>()
|
}
|
false
|
} else
|
true
|
}
|
|
fun Fragment.checkLogin(toLogin:Boolean = false):Boolean{
|
return if (SPUtils.instance().getString(Const.User.TOKEN).isNullOrEmpty()){
|
if (toLogin){
|
requireContext().toast("请先登录")
|
startActivity<LoginActivity>()
|
}
|
false
|
} else
|
true
|
}
|