Android自定義view仿QQ的Tab按鈕動畫效果(示例代碼)
話不多說 先上效果圖
實現其實很簡單,先用兩張圖
一張是背景的圖,一張是笑臉的圖片,笑臉的圖片是白色,可能看不出來。實現思路:主要是再觸摸view的時候同時移動這兩個圖片,但是移動的距離不一樣,造成的錯位感,代碼很簡單:
import android.content.Context import android.graphics.* import android.util.AttributeSet import android.view.MotionEvent import android.view.View import com.example.dawnmvvm.R import com.example.dawnmvvm.util.LogUtil class MyDrawBitmap @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0) : View(context, attrs, defStyleAttr, defStyleRes) { private var dx = 0f private var dy = 0f private var dx1 =0f private var dy1 = 0f private val bitmap: Bitmap by lazy { BitmapFactory.decodeResource(resources, R.drawable.bg_tab);//背景 } private val bitmap2: Bitmap by lazy { BitmapFactory.decodeResource(resources, R.drawable.img_smile);//笑臉 } override fun draw(canvas: Canvas?) { super.draw(canvas) LogUtil.e("MyDrawBitmap===x===${dx}") LogUtil.e("MyDrawBitmap===y===${dy}") if(dx<0){ dx=0f } if(dy<0){ dy=0f; } canvas?.drawBitmap(bitmap, dx, dy, null);//移動背景 canvas?.drawBitmap(bitmap2, dx1, dy1, null);//移動笑臉 } override fun onTouchEvent(event: MotionEvent): Boolean { when (event.action) { MotionEvent.ACTION_UP-> { dx = 0f dy = 0f dx1 = 0f dy1 = 0f } else->{ dx = event.x/20f dy = event.y/20f dx1 = event.x/10f dy1 = event.y/10f } } invalidate() return true; } }
是不是很簡單,不過不是很完美
到此這篇關於Android自定義view仿QQ的Tab按鈕動效效果(示例代碼)的文章就介紹到這瞭,更多相關Android仿QQ的Tab按鈕動效內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Android自定義有限制區域圖例角度自識別塗鴉工具類中篇
- android實現多點觸摸效果
- Android實現微信朋友圈圖片和視頻播放
- Android自定義View實現星星評分效果
- Android實現控件拖動效果