2017-05-22 1 views
0

아래 주어진 코드 스 니펫을 사용하여 RecyclerView 내에서 클릭시 뷰를 표시하거나 숨 깁니다. 문제는 첫 번째 표시/숨기기주기 후에보기가 잠시 나타난다는 것입니다. 활동을 다시 시작할 때까지 계속됩니다.가시성 변경시 애니메이션보기

public void changeVisibility(final View view, boolean makeVisible) 
{ 
    if (makeVisible) 
    { 
     view.setVisibility(View.VISIBLE); 
     view.setAlpha(0.0f); 

     view.animate().alpha(1.0f); 
    } 
    else 
    { 
     view.animate() 
       .alpha(0.0f) 
       .setListener(new AnimatorListenerAdapter() 
       { 
        @Override 
        public void onAnimationEnd(Animator animation) 
        { 
         super.onAnimationEnd(animation); 
         view.setVisibility(View.GONE); 
        } 
       }); 

    } 
} 
+0

xml에서 가시성을 설정하려고 했습니까? – DEADMC

+0

@DEADMC 뷰의 가시성은 xml에서 기본적으로 GONE입니다. – Asim

+0

나는 당신이 setAlpha (0.0f); 먼저 객체를 사라지게 한 다음 가시적으로 만든다. 아마도 그 순간이다. – DEADMC

답변

1

왜냐하면보기의 표시/숨기기 첫 번째 라운드 이후에 onAnimationEnd을 설정했기 때문입니다.

더 이상 필요하지 않은 경우 listener을 제거해야합니다. 추가 :

view.setListener(null); 

귀하의 if (makeVisible) 블록이 작동해야합니다. ;)