lmw
2024-10-23 2f204867ad034d3a95ba9acc112d6507f296447b
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
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
    }
}