1
1
package com.pengxh.kt.lib
2
2
3
- import android.graphics.Color
4
- import android.os.Handler
5
- import android.util.Log
6
- import android.widget.TextView
7
- import com.google.gson.Gson
8
- import com.google.gson.reflect.TypeToken
3
+ import android.view.View
4
+ import com.luck.picture.lib.basic.PictureSelector
5
+ import com.luck.picture.lib.config.SelectMimeType
6
+ import com.luck.picture.lib.entity.LocalMedia
7
+ import com.luck.picture.lib.interfaces.OnResultCallbackListener
8
+ import com.pengxh.kt.lite.adapter.EditableImageAdapter
9
9
import com.pengxh.kt.lite.base.KotlinBaseActivity
10
- import com.pengxh.kt.lite.extensions.*
11
- import com.pengxh.kt.lite.utils.WeakReferenceHandler
12
10
import kotlinx.android.synthetic.main.activity_main.*
13
- import java.text.SimpleDateFormat
14
- import java.util.*
15
- import kotlin.math.abs
16
-
17
11
18
12
class MainActivity : KotlinBaseActivity () {
19
13
20
- companion object {
21
- lateinit var timer: Timer
22
- }
23
-
24
14
private val kTag = " MainActivity"
25
- private lateinit var weakReferenceHandler: WeakReferenceHandler
26
- private var noticeBeans: MutableList <NoticeListModel .DataModel .RowsModel > = ArrayList ()
27
- private var currentIndex = 0
15
+ private val images = listOf (
16
+ " https://images.pexels.com/photos/1036808/pexels-photo-1036808.jpeg" ,
17
+ " https://images.pexels.com/photos/796602/pexels-photo-796602.jpeg" ,
18
+ " https://images.pexels.com/photos/1109543/pexels-photo-1109543.jpeg" ,
19
+ " https://images.pexels.com/photos/296115/pexels-photo-296115.jpeg" ,
20
+ " https://images.pexels.com/photos/296115/pexels-photo-296115.jpeg" ,
21
+ " https://images.pexels.com/photos/296115/pexels-photo-296115.jpeg" ,
22
+ " https://images.pexels.com/photos/296115/pexels-photo-296115.jpeg" ,
23
+ " https://images.pexels.com/photos/296115/pexels-photo-296115.jpeg" ,
24
+ " https://images.pexels.com/photos/4158/apple-iphone-smartphone-desk.jpg"
25
+ )
26
+ private val recyclerViewImages = ArrayList <String >()
28
27
29
28
override fun initLayoutView (): Int = R .layout.activity_main
30
29
31
30
override fun setupTopBarLayout () {
32
- val screenWidth = getScreenWidth()
33
-
34
- val screenHeight = getScreenHeight()
35
-
36
- val statusBarHeight = getStatusBarHeight()
37
31
38
- val screenDensity = getScreenDensity()
39
-
40
- Log .d(
41
- kTag,
42
- " setupTopBarLayout => [${screenWidth} ,${screenHeight} ,${statusBarHeight} ,${screenDensity} ]"
43
- )
44
32
}
45
33
46
34
override fun observeRequestState () {
47
35
48
36
}
49
37
50
38
override fun initData () {
51
- val response = readAssetsFile(" Test.json" )
52
- val it = Gson ().fromJson<NoticeListModel >(
53
- response, object : TypeToken <NoticeListModel >() {}.type
54
- )
55
- noticeBeans = it.data.rows
56
-
57
- noticeSwitcherView.setFactory {
58
- val textView = TextView (this )
59
- textView.setTextColor(Color .BLACK )
60
- textView
61
- }
62
- noticeSwitcherView.setAnimation()
63
-
64
- timeSwitcherView.setFactory {
65
- val textView = TextView (this )
66
- textView.setTextColor(R .color.hintColor.convertColor(this ))
67
- textView
68
- }
69
- timeSwitcherView.setAnimation()
70
-
71
- weakReferenceHandler = WeakReferenceHandler (callback)
72
- // 消息滚动Timer
73
- timer = Timer ()
74
- timer.schedule(object : TimerTask () {
75
- override fun run () {
76
- weakReferenceHandler.sendEmptyMessage(2023030601 )
39
+ val imageAdapter = EditableImageAdapter (this , 9 , 2f )
40
+ imageGridView.adapter = imageAdapter
41
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter .OnItemClickListener {
42
+ override fun onAddImageClick () {
43
+ PictureSelector .create(this @MainActivity)
44
+ .openGallery(SelectMimeType .ofImage())
45
+ .isGif(false )
46
+ .isMaxSelectEnabledMask(true )
47
+ .setFilterMinFileSize(100 )
48
+ .setMaxSelectNum(9 )
49
+ .isDisplayCamera(false )
50
+ .setImageEngine(GlideLoadEngine .get)
51
+ .forResult(object : OnResultCallbackListener <LocalMedia > {
52
+ override fun onResult (result : ArrayList <LocalMedia >) {
53
+ result.forEach {
54
+ recyclerViewImages.add(it.realPath)
55
+ }
56
+ imageAdapter.setupImage(recyclerViewImages)
57
+ }
58
+
59
+ override fun onCancel () {}
60
+ })
77
61
}
78
- }, 0 , 3000 )
79
- }
80
62
81
- private val callback = Handler .Callback { msg ->
82
- when (msg.what) {
83
- 2023030601 -> {
84
- if (noticeBeans.size != 0 ) {
85
- val model = noticeBeans[currentIndex % noticeBeans.size]
63
+ override fun onItemClick (position : Int ) {
86
64
87
- noticeSwitcherView.setText(model.noticeTitle)
65
+ }
88
66
89
- val deltaT = model.createTime.diffCurrentTime()
90
- val diffTime = if (deltaT < 24 ) {
91
- " ${deltaT} 小时前"
92
- } else {
93
- model.createTime.formatToDate()
94
- }
95
- timeSwitcherView.setText(diffTime)
96
- currentIndex++
97
- } else {
98
- noticeSwitcherView.setText(" 暂无新消息" )
99
- timeSwitcherView.setText(" --:--" )
100
- }
67
+ override fun onItemLongClick (view : View ? , position : Int ) {
68
+ imageAdapter.deleteImage(position)
101
69
}
102
- }
103
- true
70
+ })
104
71
}
105
72
106
73
override fun initEvent () {
107
74
108
75
}
109
-
110
- override fun onDestroy () {
111
- super .onDestroy()
112
- timer.cancel()
113
- }
114
-
115
- /* *
116
- * 时间差-小时
117
- * */
118
- private fun String.diffCurrentTime (): Int {
119
- if (this .isBlank()) {
120
- return 0
121
- }
122
- val simpleDateFormat = SimpleDateFormat (" yyyy-MM-dd HH:mm:ss" , Locale .CHINA )
123
- val date = simpleDateFormat.parse(this )
124
- val diff = abs(System .currentTimeMillis() - date.time)
125
- return (diff / (3600000 )).toInt()
126
- }
127
-
128
- private fun String.formatToDate (): String {
129
- if (this .isBlank()) {
130
- return this
131
- }
132
- val simpleDateFormat = SimpleDateFormat (" yyyy-MM-dd HH:mm:ss" , Locale .CHINA )
133
- val date = simpleDateFormat.parse(this )
134
-
135
- val dateFormat = SimpleDateFormat (" MM-dd" , Locale .CHINA )
136
- return dateFormat.format(date)
137
- }
138
76
}
0 commit comments