Android 보기 애니메이션
4314 단어 android
애니메이션이 없는 Android 앱은 불완전해 보이며 아키텍처 Android의 급속한 성장으로 인해 애니메이션이 누락되었지만 몇 가지 핵심 뿌리를 기억할 수 있습니다.
이것은 애니메이션의 4가지 주요 범주로 구성됩니다.
나는 번역 애니메이션을 다루고 이 블로그에서 imageViews가 위로 이동하는 방향으로 뷰를 이동하는 것을 다루고 싶습니다.
애니메이션 레이어: 뷰가 생성되고 애니메이션될 조각 위에 있는 간단한 프레임 레이아웃입니다.
<FrameLayout
android:id="@+id/animation_holder"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
이 레이아웃 클래스에는 기본 3가지 기능이 포함되어 있습니다.
생성: 여기서는 imageView를 생성하고 animation_holder에 연결합니다.
fun create(): FrameLayout? {
val imageView = ImageView(activity)
imageView.setImageBitmap(mBitmap)
val minWidth = mBitmap!!.width
val minHeight = mBitmap!!.height
imageView.measure(
View.MeasureSpec.makeMeasureSpec(minWidth, View.MeasureSpec.AT_MOST),
View.MeasureSpec.makeMeasureSpec(minHeight, View.MeasureSpec.AT_MOST)
)
var params = imageView.layoutParams
if (params == null) {
params = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT,
Gravity.TOP
)
imageView.layoutParams = params
}
val xPosition = mDrawLocation[0]
val yPosition = mDrawLocation[1]
params.width = minWidth
params.height = minHeight
params = params as FrameLayout.LayoutParams
params.leftMargin = xPosition
params.topMargin = yPosition
imageView.layoutParams = params
val animationLayer = FrameLayout(activity)
val topLayerParam = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT,
Gravity.TOP
)
animationLayer.layoutParams = topLayerParam
animationLayer.addView(imageView)
attachingView!!.addView(animationLayer)
mCreatedAnimationLayer = animationLayer
return mCreatedAnimationLayer
}
applyAnimation: 여기에서 imageView에서 애니메이션을 시작합니다. 추가됨
fun applyAnimation(animation: Animation?) {
if (mCreatedAnimationLayer != null) {
val drawnImageView = mCreatedAnimationLayer!!.getChildAt(0) as ImageView
drawnImageView.startAnimation(animation)
}
}
setBitmap: 여기서 비트맵을 위에서 참조한 전역 변수로 설정합니다.
fun setBitmap(bitmap: Bitmap?, location: IntArray?): AnimationLayer {
var location = location
if (location == null) {
location = intArrayOf(0, 0)
} else if (location.size != 2) {
throw AnimationLayerException("Requires location as an array of length 2 - [x,y]")
}
mBitmap = bitmap
mDrawLocation = location
return this
}
이제 필요한 속성으로 애니메이션을 만들 수 있습니다.
// here destination is part where we want to fly the view //upto in x & y for us it is height of the layout
val animation = TranslateAnimation(
0F,
destinationX, 0f, DestinationY
)
//amount of time to travel the distance
animation.duration = duration.toLong()
//animation will start after this much time
animation.startOffset = 0L
// create instance of above layer and apply animation
val layer = AnimationLayer()
val animationLayer = layer.with(activity)
.attachTo(parentView)
.setBitmap(scaledBitmap, startingPoints)
.create()
// after all the part is ready we can call applyanimation
layer.applyAnimation(animation)
프로세스가 완료되면 다음과 같은 애니메이션을 얻을 수 있습니다.
Reference
이 문제에 관하여(Android 보기 애니메이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/himanshut0305/animating-android-views-1nki텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)