Android 보기 애니메이션

4314 단어 android
안녕하세요 세계!,
애니메이션이 없는 Android 앱은 불완전해 보이며 아키텍처 Android의 급속한 성장으로 인해 애니메이션이 누락되었지만 몇 가지 핵심 뿌리를 기억할 수 있습니다.

이것은 애니메이션의 4가지 주요 범주로 구성됩니다.
  • 스케일 애니메이션 - 보기 크기 변경
  • 애니메이션 회전 - 보기를 시계 방향 및 시계 반대 방향으로 회전합니다
  • .
  • 애니메이션 변환 - 레이아웃에서 x 및 y 위치 변경
  • 알파 애니메이션 - 투명도 변경

  • 나는 번역 애니메이션을 다루고 이 블로그에서 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)
    


    프로세스가 완료되면 다음과 같은 애니메이션을 얻을 수 있습니다.

    좋은 웹페이지 즐겨찾기