Skip to content

Commit e43f2cf

Browse files
author
junix
committed
代码优化
1 parent facdbd7 commit e43f2cf

File tree

7 files changed

+58
-23
lines changed

7 files changed

+58
-23
lines changed

app/src/main/java/com/lxj/androidktxdemo/fragment/ImageViewExtPage.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class ImageViewExtPage: BaseFragment(){
2929
}
3030

3131
private fun loadImage(){
32-
image1.load(images[0], roundArray = floatArrayOf(50f, 10f, 80f, 10f),
32+
image1.load(url = images[0], roundArray = floatArrayOf(50f, 10f, 80f, 10f),
3333
borderColor = Color.GREEN, borderSize = 4.dp,
3434
onImageFail = {
3535
ToastUtils.showShort("图片加载失败")
@@ -53,9 +53,9 @@ class ImageViewExtPage: BaseFragment(){
5353
title2.text = "image2.load(url, isCircle = true)"
5454

5555
image3.load(images[2], isCenterCrop = true , placeholder = R.mipmap.ic_launcher, borderColor = Color.RED, borderSize = 5.dp,)
56-
image4.load(images[2], isCenterCrop = true, blurScale = 1f, roundArray = floatArrayOf(100f, 100f, 0f,0f), )
56+
image4.load(images[2], isCenterCrop = true, blurScale = 1f, roundArray = floatArrayOf(200f, 200f, 0f,0f), )
5757
image5.load(images[2], isCenterCrop = true, blurScale = 0.3f, roundRadius = 20.dp, borderColor = Color.RED, borderSize = 5.dp,
58-
roundArray = floatArrayOf(50f, 10f, 80f, 10f),)
58+
roundArray = floatArrayOf(100f, 10f, 120f, 10f),)
5959
title3.text = "image3.load(url, roundRadius = 20)"
6060

6161
image1.click {

app/src/main/java/com/lxj/androidktxdemo/fragment/RecyclerViewExtDemo.kt

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class RecyclerViewExtDemo : BaseFragment() {
3636
val userVM: UserVM by lazy { getVM(UserVM::class.java) }
3737
override fun initView() {
3838
super.initView()
39-
addBtn.click(50) {
39+
addBtn.click(duration = 50) {
4040
// val old = data.toJson().toBean<ArrayList<User>>()
4141
// val range = (0 until data.size)
4242
// data.add(
@@ -46,8 +46,10 @@ class RecyclerViewExtDemo : BaseFragment() {
4646
// recyclerView.diffUpdate(UserDiffCallback(old, data))
4747

4848
userVM.insert(User(name = "随机添加-${Random.nextInt(1000)}"))
49+
50+
recyclerView.smoothScrollToEnd()
4951
}
50-
delBtn.click(50) {
52+
delBtn.click() {
5153
// if (data.isEmpty()) return@click
5254
// val old = data.toJson().toBean<ArrayList<User>>()
5355
// data.removeAt((0 until data.size).random())
@@ -57,7 +59,7 @@ class RecyclerViewExtDemo : BaseFragment() {
5759
userVM.remove(randomPosition)
5860
}
5961

60-
updateBtn.click(50) {
62+
updateBtn.click() {
6163
// val old = userVM.listData.value!!.deepCopy<ArrayList<User>>()
6264
// val index = (0 until userVM.listData.value!!.size).random()
6365
// userVM.listData.value!![index].name = userVM.listData.value!![index].name + "- 局部字段替换"
@@ -71,7 +73,7 @@ class RecyclerViewExtDemo : BaseFragment() {
7173
userVM.update(randomPosition, t)
7274
}
7375

74-
replaceBtn.click(50) {
76+
replaceBtn.click() {
7577
// if (data.isEmpty()) return@click
7678
// val old = data.deepCopy<ArrayList<User>>()
7779
// val index = (0 until data.size).random()
@@ -84,16 +86,16 @@ class RecyclerViewExtDemo : BaseFragment() {
8486
userVM.update(randomPosition, t)
8587
}
8688

87-
moveBtn.click(50) {
89+
moveBtn.click() {
8890
// if (data.isEmpty()) return@click
8991
val random = userVM.listData.value!!.deepCopy<ArrayList<User>>()
90-
random.add(User(name = "随机添加-${Random.nextInt(1000)}"))
92+
// random.add(User(name = "随机添加-${Random.nextInt(1000)}"))
9193
random.shuffle()
9294

9395
userVM.replaceList(random)
9496
// recyclerView.diffUpdate(UserDiffCallback(old, userVM.listData.value))
9597
}
96-
clearBtn.click(50) {
98+
clearBtn.click() {
9799
// if (data.isEmpty()) return@click
98100
userVM.clear()
99101
// recyclerView.diffUpdate(UserDiffCallback(old, userVM.listData.value))
@@ -119,12 +121,17 @@ class RecyclerViewExtDemo : BaseFragment() {
119121
holder.getView<View>(R.id.text).click {
120122
ToastUtils.showShort(t.name + " - $position")
121123
}
122-
Glide.with(requireContext())
123-
.load(url).transition(DrawableTransitionOptions.withCrossFade(1000))
124-
.diskCacheStrategy(DiskCacheStrategy.NONE)
125-
.skipMemoryCache(true)
126-
.placeholder(R.mipmap.ic_launcher_round)
127-
.into(holder.getView<ImageView>(R.id.image))
124+
holder.getView<ImageView>(R.id.image).load(url, isCrossFade = true,
125+
skipMemoryCache = true,
126+
placeholder = R.mipmap.ic_launcher_round)
127+
128+
129+
// Glide.with(requireContext())
130+
// .load(url).transition(DrawableTransitionOptions.withCrossFade(1000))
131+
// .diskCacheStrategy(DiskCacheStrategy.NONE)
132+
// .skipMemoryCache(true)
133+
// .placeholder(R.mipmap.ic_launcher_round)
134+
// .into(holder.getView<ImageView>(R.id.image))
128135
holder.getView<View>(R.id.tvDel).click {
129136
(holder.itemView as SlidingLayout).close()
130137
LogUtils.e("delete item : ${holder.adapterPosition}")

app/src/main/java/com/lxj/androidktxdemo/vm/UserVM.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class UserVM: ListVM<User>() {
1919
//mock data
2020
val data = arrayListOf<User>()
2121
if(listData.value!!.size < 30){
22-
(0..4).forEach {
22+
(0..30).forEach {
2323
data.add(User(name = "分页-${Random.nextInt(10000)}"))
2424
}
2525
}

ext/src/main/java/com/lxj/ext/GlideExt.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@ fun ImageView.load(
4343
blurRadius: Float = 20f,
4444
roundRadius: Int = 0,
4545
roundArray: FloatArray? = null,
46+
diskCacheStrategy: DiskCacheStrategy = DiskCacheStrategy.AUTOMATIC,
47+
skipMemoryCache: Boolean = false,
4648
isCrossFade: Boolean = false,
49+
crossFadeDuration: Int = 500,
4750
isForceOriginalSize: Boolean = false,
4851
targetWidth: Int = 0,
4952
targetHeight: Int = 0,
@@ -90,8 +93,10 @@ fun ImageView.load(
9093
options.transform(superTransform)
9194
val glide = Glide.with(context).load(url)
9295
.apply(options)
96+
.diskCacheStrategy(diskCacheStrategy)
97+
.skipMemoryCache(skipMemoryCache)
9398
.apply {
94-
if (isCrossFade) transition(DrawableTransitionOptions.withCrossFade())
99+
if (isCrossFade) transition(DrawableTransitionOptions.withCrossFade(crossFadeDuration))
95100
if (onImageLoad != null || onImageFail != null) {
96101
listener(object : RequestListener<Drawable> {
97102
override fun onLoadFailed(

ext/src/main/java/com/lxj/ext/RecyclerViewExt.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ fun RecyclerView.scrollToEnd() {
182182
}
183183

184184
/**
185-
* 滚动置顶,只支持线性布局
185+
* 滚动置顶
186186
*/
187187
fun RecyclerView.scrollTop(position: Int) {
188188
if (layoutManager is LinearLayoutManager) {

library/src/main/java/com/lxj/androidktx/base/ListVM.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ abstract class ListVM<T>() : ViewModel(){
144144
if(list.isEmpty()) return
145145
updateOldData()
146146
list.clear()
147-
listData.postValueAndSuccess(list)
147+
listData.postEmpty(list)
148148
}
149149

150150
abstract fun load()

widget/src/main/java/com/lxj/widget/SlidingLayout.kt

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,17 @@ class SlidingLayout @JvmOverloads constructor(context: Context, attributeSet: At
2222

2323
companion object {
2424
var shareCache: CopyOnWriteArrayList<SlidingLayout> = CopyOnWriteArrayList()
25+
26+
fun clear(){
27+
shareCache.clear()
28+
}
29+
30+
fun closeAll(){
31+
shareCache.forEach { it.close() }
32+
}
33+
fun openAll(){
34+
shareCache.forEach { it.open() }
35+
}
2536
}
2637

2738
private var contentView : View? = null
@@ -130,9 +141,20 @@ class SlidingLayout @JvmOverloads constructor(context: Context, attributeSet: At
130141

131142
private var touchX = 0f
132143
private var touchY = 0f
133-
private var result = true
144+
private var result = false
134145
override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
135-
return viewDragHelper.shouldInterceptTouchEvent(ev)
146+
when(ev.action){
147+
MotionEvent.ACTION_DOWN -> {
148+
touchX = ev.x
149+
touchY = ev.y
150+
}
151+
MotionEvent.ACTION_MOVE -> {
152+
val dx = ev.x-touchX
153+
val dy = ev.y-touchY
154+
result = Math.abs(dy) < Math.abs(dx)
155+
}
156+
}
157+
return result || viewDragHelper.shouldInterceptTouchEvent(ev)
136158
}
137159
override fun onTouchEvent(ev: MotionEvent): Boolean {
138160
viewDragHelper.processTouchEvent(ev)
@@ -160,6 +182,7 @@ class SlidingLayout @JvmOverloads constructor(context: Context, attributeSet: At
160182
// touchY = ev.y
161183
}
162184
MotionEvent.ACTION_CANCEL, MotionEvent.ACTION_UP->{
185+
result = false
163186
requestDisallowInterceptTouchEvent(false)
164187
}
165188
}
@@ -178,7 +201,7 @@ class SlidingLayout @JvmOverloads constructor(context: Context, attributeSet: At
178201

179202
override fun onDetachedFromWindow() {
180203
super.onDetachedFromWindow()
181-
shareCache.clear()
204+
if(shareCache.contains(this))shareCache.remove(this)
182205
}
183206

184207
var slideListener: OnSlideListener? = null

0 commit comments

Comments
 (0)