package com.sinata.xqmuse.utils.extention
|
|
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 cn.sinata.xldutils.activity.BaseActivity
|
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.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.toast
|
import top.zibin.luban.Luban
|
import top.zibin.luban.OnCompressListener
|
import java.io.File
|
import java.lang.Exception
|
|
|
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)
|
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 String.getStarIcon() = when(this){
|
"水瓶座"-> R.mipmap.shuipingzuo
|
"金牛座"-> R.mipmap.jinniuzuo
|
"白羊座"-> R.mipmap.baiyangzuo
|
"双鱼座"-> R.mipmap.double_fish
|
"摩羯座"-> R.mipmap.mojiezuo
|
"狮子座"-> R.mipmap.shizizuo
|
"双子座"-> R.mipmap.twis
|
"巨蟹座"-> R.mipmap.juxiezuo
|
"处女座"-> R.mipmap.chunvzuo
|
"天秤座"-> R.mipmap.tianpingzuo
|
"射手座"-> R.mipmap.shooter
|
"天蝎座"-> R.mipmap.tianhezuo
|
else -> R.mipmap.tianhezuo
|
}
|
|
fun String.getArrowIcon():Int{
|
if (isNullOrEmpty())
|
return 0
|
try {
|
if (toDouble() == 0.0)
|
return 0
|
return if (startsWith("-")) R.mipmap.icondown else R.mipmap.iconup
|
}catch (e:Exception){
|
return 0
|
}
|
}
|