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

노래방과 같은 txt 변화 방식 도움좀 주세요.ㅠ

0 추천
안녕하세요. 안드로이드 초보 개발자 입니다.

제가 노래방에서 가사 나오는 것처럼 시간에 맞게 글씨가 칠해지는 효과를 얻고 싶은데요ㅠ

글씨위에 새롭게 글씨를 쓰려고도 해봤고 있는 글씨에 색깔만 변하게도 해봤지만

역시 같은 곳에서 막히더라고요.ㅠ

보통 setText를 하면 글씨가 한번에 표출이 되자나요...

서서히 글씨가 일직선으로 그려지듯이 나타내는 방법은 없나요;;

그리는 방법만 알면 endtime에서 starttime을 빼고 duration을 나누면

어느정도 원하는 속도로 그릴 수 있을 것같긴 한데...

실제 구현은 어떤식으로 해야할지 감이 안오네요.ㅠ

고수님들 작은 힌트라도 좋으니 답변 부탁드립니다.ㅠ
다갖춘남자 (220 포인트) 님이 2014년 1월 3일 질문
혹시나 필요하신 분들 있을 듯해서 늦게나마 구현한 방식만 설명할께요.

우선 text자체를 canvas를 이용하여 그려서 표현했어요.

 Bitmap bitmap = Bitmap.createBitmap(1280,800,Bitmap.Config.ARGB_8888);
            Canvas exerCanvas = new Canvas(bitmap);

이렇게 해서 bitmap에 글씨를 쓰게했고요.

bitmap이 좋은점이 getPixel과 setPixel 값으로 픽셀의 색깔을 알수 있고. 지정해 줄수 있더라고요.

아직 다 구현은 못했지만 쓰레드 돌려서 하면 완성할 수 있을 것같습니다.

노래방 text처럼 다이나믹하게 색깔이 바뀌는 효과는 줄 수 있을 것 같네요.

3개의 답변

0 추천
텍스트뷰를 싱글라인 주시고 텍스트뷰 자체의 크기를 조정 하시면 될거 같은데요????
ThisPlus (46,920 포인트) 님이 2014년 1월 3일 답변
답변 감사합니다.
그런데 의문점이 크기조정 자체도 한글자씩 되는거 아닌가요?
현재 진행상황이 customTextView를 하나 만들어 표현해서
글씨에 테두리가 씌어진채로 표현되게 됩니다.
이것이 물 흐르듯 시간에 맞게 색이 변하는 효과를 주고 싶어요.
한글자씩 말고 한글자내에서도 천천히 변하는 모습이요.
0 추천
MMORPG 게임에서 글자가 한자 한자씩 쭉 표시되는거 말씀하시조?

이거 핸들러 이용하면 굉장히 쉽게 구현이 됩니다.

예를 들어, 한글자 표시를 200ms 마다 표시 하겠다고 하시면

글자수를 나타내는 변수 하나 잡아주시고, int count = 0;

mHandler.sendEmptyMessageDelayed( msg.what, 200);

이렇게 주시고, handleMessage에서 count++ 해주시고, setText에서는 count 만큼 표시해주시면 됩니다. 그리고,

다시 sendMessageDelayed를 호출해야 겠조,,, 글자수 길이만큼 게속 루프
이스트플랙 (2,510 포인트) 님이 2014년 1월 3일 답변
핸드러를 사용해서 원하는 문구를 원하는 시간에
띄우는 것까진 구현했습니다.
딜레이를 주면 문구가 천천히 가로로 써지는 것을 볼 수 있나요?
이건 실험해보고 말씀드릴께요. 답변 감사합니다.
말씀하신대로 해봤는데요. 원하는 시간동안 천천히 글을 그리는게
아니고 원하는 시간만큼 딜레이만 될뿐 글은 한번에 나타나더라고요.
그래도 답변 감사했습니다. handler에 딜레이message가 있다는 것도
처음알았네요 ^^
0 추천
노래방에 노래부를 때 보면 가사가 한글자 한글자 색칠 되는 것 말씀하시는거죠?

 

이건 커스텀으로 가셔야 됩니다.

기본으로 지원되는 메소드가 아니기 때문에

캔버스쪽이나 내부에서 제어하면 구현할 수 있습니다.
adb (830 포인트) 님이 2014년 1월 4일 답변
답변 감사합니다.
제가 필요한 기능이 말씀해주신 그 기능인데요.ㅠ
글씨가 가로로 원하는 시간대로 색칠이 되는 것이
생각보다 어렵네요.ㅠ 한줄의 글을 나타내면 시간에 맞게
그 글을 색칠해 나가야 하는데 조금 더 힌트 없을까요?ㅠ
mask를 한번 찾아보심이 어떨가요??
프리미어 방식과 동일한 방식으로 하면 되더라고요
...