마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Api 21이하에서 Material 관련 메서드를 쓰면 어떻게 되나요?

0 추천

제가 만들고 있는 앱은 최소버전이 16 부터입니다.

액션바에 검색버튼을 누르면 검색 EditText가 위에 표시되면서 검색어가 아래에 나열되는 형태를 고심하다가.

오픈API가 있기에 그것을 붙였습니다.

처음엔 이게 메터리얼 관련 애니메이션인지 모르고 붙였는데...

구글 개발자 페이지에서 메터리얼 관련 문서를 읽다가 이것이 메터리얼 관련 애니메이션 메소드라는것을

알게 되었습니다. 해당 메소드는 ViewAnimationUtils.createCircularReveal() 입니다.

일단 이 에니메이션만 빼도 되긴 한데, 만약에 API 21 이하에서 쓰면 어떤 문제가 발생하는지 알고 싶습니다...

해당 메소드에 들어가보니 

private final static boolean LOLLIPOP_PLUS = SDK_INT >= LOLLIPOP;
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static SupportAnimator createCircularReveal(View view,
                                            int centerX,  int centerY,
                                            float startRadius, float endRadius) {

    if(LOLLIPOP_PLUS){
        return new SupportAnimatorLollipop(android.view.ViewAnimationUtils
                .createCircularReveal(view, centerX, centerY, startRadius, endRadius));
    }

    if(!(view.getParent() instanceof RevealAnimator)){
        throw new IllegalArgumentException("View must be inside RevealFrameLayout or RevealLinearLayout.");
    }

    RevealAnimator revealLayout = (RevealAnimator) view.getParent();
    revealLayout.setTarget(view);
    revealLayout.setCenter(centerX, centerY);

    Rect bounds = new Rect();
    view.getHitRect(bounds);

    ObjectAnimator reveal = ObjectAnimator.ofFloat(revealLayout, "revealRadius", startRadius, endRadius);
    reveal.addListener(getRevealFinishListener(revealLayout, bounds));

    return new SupportAnimatorPreL(reveal);
}

 

이렇게 되어있긴 하더군요... 상관 없을까요? 일단 제 폰은 API가 19인데 잘 작동하는것을 보니 

괜찮긴 한것 같은데... 아직 마켓올리기 전이라 그런건가 (관련없나) 싶기도 하고요.

그리고 덧붙여서, 조금 욕심이 나는게 요즘 메터리얼 디자인이 대세던데요.

만약 메터리얼 디자인을 최소버전이 16인 앱에서 동작하게 하려면 어떻게 해야하나요??

 

슈퍼꽃붕어 (1,600 포인트) 님이 2015년 7월 7일 질문

1개의 답변

0 추천
metrial 말고 appcompat 으로 적용하는걸로 바꿔보세요
쎄미 (162,410 포인트) 님이 2015년 7월 7일 답변
사실 애니메이션에 대해서는 무지하여서..... 애니메이션은 적용하고 싶고,,, 그렇다고 저 메소드를 쓰기엔 메터리얼인게 걸리고 해서요. 혹시 이 메소드를 그냥 써도 괜찮긴 한가 싶은거에요 ㅎ
...