2012-05-22 4 views
0

ListView에서 항목의 일부인 TextView를 페이드 인/페이 아웃하는 일종의 우아한 솔루션을 찾으려고합니다.ListView 항목에서보기가 흐리게 표시됩니다.

컨텍스트를 제공하기 위해 listview에는 농구 경기의 플레이어 목록이 표시됩니다. 사용자는 이름을 두드리고 대화 상대 (예 : 해당 플레이어의 샷 또는 파울)를 기록하는 대화 상자가 제공됩니다. 대화 상자가 닫히고 나면 사용자는 목록보기로 돌아오고 방금 기록 된 이벤트에 대한 피드백을 제공하고자합니다.

내가하고 싶은 방법은 방금 털어 낸 항목 (플레이어)의 화면에서 약 5 초 동안 작은 문자열을 표시하는 것입니다. 작은 문자열은 "제 3 파울"또는 "4 턴 오버"와 같은 것을 표시합니다.

단순한 구현은 간단합니다. 뷰의 텍스트를 필요한 문자열로 변경 한 다음 뷰를 페이드 인하는 애니메이션을 시작하고 잠시 동안 유지 한 다음 페이드 아웃합니다. 그러나 동일한 선수의 두 번째 이벤트가 첫 번째 이벤트 직후에 기록 될 때 문제가 발생합니다. 이상적인 첫 번째 피드백 문자열은 할당 된 5 초 동안 머무를 수 있어야하고 두 번째 문자열은 다음 5 초 내에 페이드 인/아웃해야합니다.

이 큐 및 애니메이션의 텍스트 변경은 플레이어별로 이루어 지므로 구현 방법을 잘 모릅니다. 또한, 저는 애니메이션과 Activity의 라이프 사이클 사이의 상호 작용에 관심이 있습니다. 활동이 백그라운드로 보내지거나 멈추거나 메모리에서 제거되는 경우 대기중인 애니메이션에 어떤 일이 발생합니까? 또는 아이템이리스트 뷰 뒤의 ArrayAdapter에서 제거되면?

생각하십니까?

마누

답변

1

활동의 수명에 대해서는 걱정하지 마십시오. 부작용은 없습니다. 그러나 애니메이션이 진행되는 동안 활동이 백그라운드로 들어가면 애니메이션이 실행되고 볼 수 없습니다. 다음에 대해 하나 개의 애니메이션 대기를 haveing에 관해서는

, 단순히 이렇게 :

// here we will keep track of any listView and when the last animation took place. 
// The keys will be your listView identifiers. Here I assumed an integer, but use whatever is a good ID for your listView 
private HashMap<Integer, Long> listViewLastAnimations; 

// the length of the animation in milliseconds 
private static long ANIMATION_LENGTH_MS = 5000; 

// put this code where you would start your animation 
// get when the last event animation occurred 
Long lastAnimation = listViewLastAnimations.get(YOUR_LIST_ITEM_IDENTIFIER); 
Date new = new Date(); 
if (lastAnimation == null || 
    new.currentTimeMillis() - lastAnimation > ANIMATION_LENGTH_MS){ 
listViewLastAnimations.put(YOUR_LIST_ITEM_IDENTIFIER, new.currentTimeMillis()); 
// perform animation as normal 
}else{ 
// set a delay to your animation with 
long delay = ANIMATION_LENGTH_MS - (new.currentTimeMillis() - lastAnimation); 
listViewLastAnimations.put(YOUR_LIST_ITEM_IDENTIFIER, new.currentTimeMillis() + delay); 
setStartOffset(delay) ; 
} 
+0

당신의 대답을 당신에게 카일 감사합니다! 나는 그 단순함을 좋아한다! 앞으로 며칠 이내에 희망적으로 구현할 것입니다. 내가 알려 주마! – manu3d

관련 문제