[Tip] 항상 흐르는 텍스트 뷰 만들기 (무한 marquee)
안드로이드에서 흐르는 텍스트를 만드는 방법은 무척 간단하다.
Layout 리소스 XML 의 TextView (또는 TextView 가 들어간 위젯) 속성에 다음과 같이 세 줄만 추가해 주면 된다.
<TextView
android:ellipsize="marquee"
android:singleLine="true"
android:marqueeRepeatLimit="marquee_forever"
<!-- 중략 -->
하지만 위와 같은 방법으로 사용할 경우 포커스가 위치해 있을 경우만 흐르게 된다.
항상 흐르는 텍스트 뷰를 만들기 위해서 다음과 같이 TextView를 상속받는 커스텀 클래스를 만들어야 한다.
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.TextView;
public class MarqueeTextView extends TextView{
public MarqueeTextView(Context context) {
super(context);
}
public MarqueeTextView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect
previouslyFocusedRect) {
if(focused)
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
@Override
public void onWindowFocusChanged(boolean focused) {
if(focused)
super.onWindowFocusChanged(focused);
}
@Override
public boolean isFocused() {
returntrue;
}
}
그리고 다시 Layout 의 XML 로 돌아와서 흐르는 기능이 적용된 TextView를 위의 커스텀 TextView 클래스로 교체하면 끝!
<com.test.MarqueeTextView
android:id="@+id/textViewTitleOnDrawBar"
android:layout_width="fill_parent"
android:layout_height="fill_parent""
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
android:text="흐르는 텍스트~~~~~~~~~"/>
버튼과 텍스트 뷰에 항상 흐르는 텍스트를 적용한 예제 프로젝트 (이클립스 기반으로 작성하였습니다.)