2017-05-23 2 views
2

기본적으로 (처음으로) invisible 인 뷰가있다.애니메이션이있는 뷰의 가시성을 애니메이션으로 바꾼다.

지금 나는이 animationVISIBLE에 가시성을 전환해야합니다

if (myView.getVisibility() == View.INVISIBLE) { 
    myView.setVisibility(View.VISIBLE); 
    myView.animate().translationY(0); 
} 

하지만이 작동하지 않습니다 (스낵바 기본 애니메이션처럼). 기본 애니메이션으로 바뀔 것입니다.

이것을 달성 할 수있는 간단한 방법이 있습니까?

나는 다음과 같이 해제 내보기 애니메이션을하고있어

참고 :

myView.animate().translationY(myView.getHeight()); 

답변

10

이 사용 XML 애니메이션을 할 수 있습니다.

setalpha를 사용하여 slide-up 애니메이션 XML을 만들고 자원 anim 폴더에이 XML을 넣어.

slide_up.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" > 

    <translate 
     android:duration="500" 
     android:fromYDelta="100%" 
     android:toYDelta="0" /> 
</set> 

사용 :

사용 AnimationUtils.loadAnimation()XML에서 애니메이션을로드하고 설정하고 .startAnimation() 방법을 사용하여 애니메이션을 시작합니다. 여기

은 예입니다

ImageView imageView = (ImageView) findViewById(R.id.imageView); 

// slide-up animation 
Animation slideUp = AnimationUtils.loadAnimation(this, R.anim.slide_up); 

if (imageView.getVisibility() == View.INVISIBLE) { 
    imageView.setVisibility(View.VISIBLE); 
    imageView.startAnimation(slideUp); 
} 

희망이 도움이 될 것입니다 ~

+0

답변을 업데이트했습니다. 이제는 snackbar – FAT

+0

답장을 보내 주셔서 감사 드리며, 해결책이 너무 효과적이며, 더 깨끗해 보이기 때문에 받아 들일 것입니다. – DastakWall

+0

다행입니다. 내 대답이 유용하다면, upvote를주십시오. 미리 감사드립니다. – FAT

0

this 답변에 따라이 방법에

, 내가 VISIBLE 내보기의 가시성을 설정할 수 있습니다 slideUp 애니메이션 (스낵바 애니메이션과 유사) :

int getScreenHeight() { 
    DisplayMetrics displaymetrics = new DisplayMetrics(); 
    activity.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
    return displaymetrics.heightPixels; 
} 

public void animateOnScreen(View view) { 
    final int screenHeight = getScreenHeight(); 
    ObjectAnimator animator = ObjectAnimator.ofFloat(view, "y", screenHeight, (screenHeight * 0.8F)); 
    animator.setInterpolator(new DecelerateInterpolator()); 
    animator.start(); 
} 

그러면 다음과 같이 사용할 수 있습니다.

if (myView.getVisibility() == View.INVISIBLE) { 
    myView.setVisibility(View.VISIBLE); 
    animateOnScreen(myView); 
    } 
관련 문제