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;
}
}
쉽 지 는 않 지만 완벽 하 지 는 않 아 요.안 드 로 이 드 사용자 정의 view 가 QQ 를 모방 하 는 Tab 단추 의 효과(예시 코드)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 안 드 로 이 드 가 QQ 를 모방 하 는 Tab 단추 의 효과 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.