안드로이드 개발 질문/답변
(글 수 45,052)
현제 나온 전광판 효과 어플을보면
문장을 입력하고 실행하면 화면 처음에서 끝으로 이동하고나서
문장이 다지나가면 다시 처음부터 2~3초안으로 다시 시작되던데..
이런 효과를 어떻게 줘야하나요??
지금 제가 만든것= 애니메이션 xml에 시작값 100% 와 도착값 -12000%로 문장이 길어서 이렇게 설정해서
움직이고 있습니다..
이런방법을 사용하지않고
setText 를 이용하여 문장을 넣으면 해당문장만큼 딱 맞게 이동하는 방법이 없을가요?
2011.08.02 11:31:25
Paint.getTextWidths() 메소드로 각문자별 길이를 pixel로 가져올수 있습니다.
String str = "가나다라 마바사 아자차카타파하";
float[] widths = new float[str.length()];
Paint p = new paint();
p..getTextWidths(str, 0, s.length(), widths);
int strSize = 0;
for(float i : widths)
strSize += (int)i;
요런식으로 사용하시면 strSize에 문자열의 길이를 담을 수 있고요.
문장 시작위치 지정과 속도는 상기함수로 얻은 문자열 길이를 이용해 전광판 영역을 커스텀뷰로 만드시면 될듯 합니다.
onDraw()에서 문자시작위치는 지정하시면 될것이고, Thread를 하나 넣어 화면갱신하면서 sleep으로 속도 조절하시면 되겠지요.




흐름효과는 애니메이션으로 안하고 속성으로 하는 방법이 있는데요..
xml에 textview에 아래 속성 추가해주시고요.
android:ellipsize="marquee"
android:singleLine="true"
java에서는
m_text.setSelected(true); 속성 추가해주심 됩니다.
이 방법은 문장이 뷰의 길이보다 길때만 흘러요~