Skip to content

Commit

Permalink
增加点击动画,更改图片
Browse files Browse the repository at this point in the history
  • Loading branch information
wanglu1209 committed Sep 17, 2018
1 parent ffba166 commit 5a12223
Show file tree
Hide file tree
Showing 8 changed files with 58 additions and 12 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

<img src="https://raw.githubusercontent.com/wanglu1209/WPopup/master/img/undo.gif" width="200" height="350" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<img src="https://raw.githubusercontent.com/wanglu1209/WPopup/master/img/friend_circle.gif" width="200" height="350" />
<img src="https://raw.githubusercontent.com/wanglu1209/WPopup/master/img/anim_gif.gif" width="200" height="350" />

</div>

Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/wanglu/wpopup/ListActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import com.wanglu.lib.WPopup
import com.wanglu.lib.WPopupAnim
import com.wanglu.lib.WPopupDirection
import com.wanglu.lib.WPopupModel
import com.wanglu.wpopup.R.id.mRv
import kotlinx.android.synthetic.main.activity_list.*

class ListActivity: AppCompatActivity() {
Expand Down Expand Up @@ -53,6 +52,7 @@ class ListActivity: AppCompatActivity() {
.setData(friendCircleData)
.setAnim(WPopupAnim.ANIM_FRIEND_CIRCLE)
.setIconDirection(WPopupDirection.LEFT)
.setEnableChangeAnim(true)
.setPopupOrientation(WPopup.Builder.HORIZONTAL)
.setOnItemClickListener(object : WPopup.Builder.OnItemClickListener {
override fun onItemClick(view: View, position: Int) {
Expand Down
Binary file added img/anim_gif.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
31 changes: 31 additions & 0 deletions lib/src/main/java/com/wanglu/lib/WCommonAnim.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.wanglu.lib

import android.animation.AnimatorSet
import android.animation.ObjectAnimator
import android.view.View

class WCommonAnim(private val view: View) {

private val animSet: AnimatorSet = AnimatorSet()
private var scaleXAnim: ObjectAnimator? = null
private var scaleYAnim: ObjectAnimator? = null



init {
animSet.duration = 200
}

fun start() {
if (animSet.isRunning)
animSet.cancel()

if (scaleXAnim == null) {
scaleXAnim = ObjectAnimator.ofFloat(view, View.SCALE_X, 1.2f, 1f)
scaleYAnim = ObjectAnimator.ofFloat(view, View.SCALE_Y, 1.2f, 1f)
animSet.playTogether(scaleXAnim, scaleYAnim)
}
animSet.start()
}

}
3 changes: 2 additions & 1 deletion lib/src/main/java/com/wanglu/lib/WPopParams.kt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ data class WPopParams(
var commonItemTextSize = 14
var commonPopMargin = 1
var commonIconDirection = WPopupDirection.LEFT // 传入的图片的位置
var commonDraablePadding = 5
var commonDrawablePadding = 5
var commonIsEnableChangeAnim = false // 切换时是否启用动画
var longClickView: View? = null //长按点击事件的View
var animRes = WPopupAnim.ANIM_ALPHA // 动画
}
10 changes: 8 additions & 2 deletions lib/src/main/java/com/wanglu/lib/WPopup.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ class WPopup(popParams: WPopParams) : BasePopup(popParams) {
commonAdapter.setDirection(popParams.commonIconDirection)
commonAdapter.setTextColor(popParams.commonItemTextColor)
commonAdapter.setTextSize(popParams.commonItemTextSize)
commonAdapter.setDrawablePadding(popParams.commonDraablePadding)
commonAdapter.setDrawablePadding(popParams.commonDrawablePadding)
commonAdapter.setIsEnableChangeAnim(popParams.commonIsEnableChangeAnim)
recyclerView = getContentView().findViewById(R.id.mRvCommon)
commonRootLayout = getContentView().findViewById(R.id.mCommonRootLayout)
recyclerView.adapter = commonAdapter
Expand Down Expand Up @@ -294,7 +295,12 @@ class WPopup(popParams: WPopParams) : BasePopup(popParams) {
}

fun setDrawablePadding(padding: Int): Builder{
popParams.commonDraablePadding = padding
popParams.commonDrawablePadding = padding
return this
}

fun setEnableChangeAnim(isEnable: Boolean): Builder{
popParams.commonIsEnableChangeAnim = isEnable
return this
}

Expand Down
18 changes: 13 additions & 5 deletions lib/src/main/java/com/wanglu/lib/WPopupAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class WPopupAdapter(private val popup: WPopup) : RecyclerView.Adapter<WPopupAdap
private var drawablePadding = 10
private var key = 0
private val views = hashMapOf<Int, Int>()
private var isAnim: Boolean = false

fun setData(data: List<WPopupModel>) {
mData = data
Expand Down Expand Up @@ -67,6 +68,10 @@ class WPopupAdapter(private val popup: WPopup) : RecyclerView.Adapter<WPopupAdap
notifyDataSetChanged()
}

fun setIsEnableChangeAnim(isEnable: Boolean) {
isAnim = isEnable
}

fun setItemClickListener(wItemClickListener: WPopup.Builder.OnItemClickListener) {
this.mWItemClickListener = wItemClickListener
}
Expand Down Expand Up @@ -104,6 +109,8 @@ class WPopupAdapter(private val popup: WPopup) : RecyclerView.Adapter<WPopupAdap
text = mData!![position].text
views[key] = 0
}
if (isAnim)
WCommonAnim(holder.tv).start()
holder.tv.text = text
showImg(holder, drawable)
}
Expand All @@ -116,18 +123,17 @@ class WPopupAdapter(private val popup: WPopup) : RecyclerView.Adapter<WPopupAdap
popup.dismiss()
}
}
handler.sendEmptyMessageDelayed(1, 100)
handler.sendEmptyMessageDelayed(1, 220)
mWItemClickListener!!.onItemClick(holder.view, position)
}
}

// 如果可以切换的text不是空,那么则判断是否切换过
if (mData!![position].switchText.isNotEmpty()) {
val text: String
if (views[key] == 0) {
text = mData!![position].text
val text: String = if (views[key] == 0) {
mData!![position].text
} else {
text = mData!![position].switchText
mData!![position].switchText
}
holder.tv.text = text
} else {
Expand All @@ -148,6 +154,7 @@ class WPopupAdapter(private val popup: WPopup) : RecyclerView.Adapter<WPopupAdap
showImg(holder, drawable)
holder.tv.compoundDrawablePadding = Utils.dp2px(holder.tv.context, drawablePadding)
}

}

private fun showImg(holder: ViewHolder, drawable: Drawable) {
Expand All @@ -158,6 +165,7 @@ class WPopupAdapter(private val popup: WPopup) : RecyclerView.Adapter<WPopupAdap
WPopupDirection.LEFT -> holder.tv.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)
WPopupDirection.RIGHT -> holder.tv.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null)
}

}


Expand Down
4 changes: 2 additions & 2 deletions lib/src/main/res/layout/adapter_common_item.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
Expand All @@ -16,4 +16,4 @@
android:paddingTop="10dp"
android:textColor="#fff"
android:textSize="14sp"/>
</FrameLayout>
</RelativeLayout>

0 comments on commit 5a12223

Please sign in to comment.