Android에서 좋은 상호작용을 얻을 수 있는 애니메이션 라이브러리 (by Kotlin)

7258 단어 AndroidKotlin
공개됐습니다.
kidach1/AndroidSwayAnimation
https://github.com/kidach1/AndroidSwayAnimation

gif라면 아직 멀어 보여서 따로 영상을 봐요.
Sample / Sample with RecyclerView

Download


build.gradle
dependencies {
    compile 'com.kidach1:AndroidSwayAnimation:1.0.8'
}

Usage


애니메이션 디스플레이 영역(animatedZone), 터치 영역(touchZone), Context만 전달SwayAnimation.ready()할 수 있습니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    RelativeLayout animatedZone = (RelativeLayout) findViewById(R.id.animatedLayout);
    RelativeLayout touchZone = (RelativeLayout) findViewById(R.id.touchedLayout);
    SwayAnimation.ready(animatedZone, touchZone, this);
}

애니메이션 소재 사용자 정의

SwayAnimation.setDrawables(Arrays.asList(
        R.drawable.ic_favorite_pink_300_48dp,
        R.drawable.ic_tag_faces_amber_300_48dp,
        R.drawable.ic_thumb_up_blue_a200_48dp
));
SwayAnimation.ready(animatedZone, touchZone, this);

Kotlin 관련


기본적으로 바삭바삭하게 썼는데, 대략 2점 정도이다.

(Java를 통해 액세스 가능) static 메서드

  • static 방법은companionobject
  • 를 포함한다
  • 자바에서도 액세스할 수 있도록 @JvmStatic
  • class SwayAnimation {
        companion object {
            @JvmStatic fun ready(animatedZone: ViewGroup, ...) {
                touchedZone.setOnTouchListener { v, event ->
                  // ...
                }
            }
        }
    }
    
    Calling Kotlin from Java - Kotlin Programming Language
    https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html#static-methods

    Backing Fields


    kotlin은 내부에서setter/getter를 자동으로 생성합니다.예를 들어 withActionBar라는 필드가 존재할 때 다음에 직접 필드에 접근하는 방법을 언뜻 봐도 실제로는 setter를 거친다.
    withActionBar = true
    
    그래서 setter를 스스로 정의하고 싶을 때
    // @JvmStaticを付与するためにカスタムsetterを定義
    var withActionBar: Boolean = false
        @JvmStatic set(bool) {
            withActionBar = bool
        }
    
    이렇게 쓰면 setter를 무한정 계속 호출하여 StackOverFlow를 생성합니다.
    이 솔루션은 "백업장"이라는 특수 필드를 사용합니다.
    말하자면 간단하다. 단지 대입지를 field이identifier로 바꾸는 것이다.
    var withActionBar: Boolean = false
        @JvmStatic set(bool) {
            field = bool
        }
    
    Properties and Fields - Kotlin Programming Language
    https://kotlinlang.org/docs/reference/properties.html#backing-fields

    총결산


    kotlin은 좋은 물건이에요.

    좋은 웹페이지 즐겨찾기