package com.dollearn.student.utils.extention
|
|
import android.content.Context
|
import android.graphics.Bitmap
|
import android.util.Log
|
import android.view.View
|
import android.widget.ImageView
|
import android.widget.TextView
|
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.github.promeg.pinyinhelper.Pinyin
|
import com.dollearn.student.utils.interfaces.StringCallback
|
import com.dollearn.student.network.entity.Grade
|
import com.dollearn.student.utils.OSSUtil
|
import com.dollearn.student.utils.extention.ViewClickDelay.SPACE_TIME
|
import com.dollearn.student.utils.extention.ViewClickDelay.hash
|
import com.dollearn.student.utils.extention.ViewClickDelay.lastClickTime
|
import com.dollearn.student.utils.glide.GlideUtil
|
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
|
|
fun String.getInitial():String = if (startsWith("重庆")) "C" else Pinyin.toPinyin(this[0])[0].toString()
|
|
fun String.uploadWithCompress(act:BaseActivity,callback: StringCallback){
|
Luban.with(act).load(File(this))
|
.ignoreBy(100).setTargetDir(act.getPath())
|
.filter { path -> path.isNotEmpty() || path.toLowerCase().endsWith(".gif") }
|
.setCompressListener(object :OnCompressListener{
|
override fun onSuccess(file: File) {
|
Log.e("gwx","压缩完成")
|
Thread(Runnable {
|
OSSUtil(act).uploadSingle(file.path,object :OSSUtil.OSSUploadCallBack(){
|
override fun onFial(message: String?) {
|
super.onFial(message)
|
act.runOnUiThread {
|
act.dismissDialog()
|
act.toast(message ?: "上传失败")
|
}
|
}
|
|
override fun onFinish(url: String) {
|
super.onFinish(url)
|
act.runOnUiThread {
|
act.dismissDialog()
|
callback.onResult(url)
|
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 = 1000
|
}
|
|
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)
|
}
|
})
|
}
|