lmw
2024-06-17 f571288a24fcf10143dcc8015ffbbf38dbc0c614
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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)
            }
        })
}