2013년 11월 13일 수요일

Android Span, SpannableStringBuilder

이전 블로그에서 이전 함 (원본 글 2013/11/13 작성)

TextView에 입력되는 글자의 style을 바꾸거나 bitmap 등을 추가하고 싶을 경우
Style Span을 사용하여 해결 할 수 있음.

일단 Android developers site에서 확인하면 
CharSequence를 상속받은 Spanned interface가 있고 이것을 상속받는 놈들 중 대표적인 것은 markup 처리를 위한 Spannable interface, text 처리를 위한 Editable interface 가 있다. (사실 자세한 차이를 모르겠다. textview에 html을 입력할때와 일반 character sequence를 입력할 때를 내부적으로 구분해서 처리하는 것 같은데.. 뭐 app 개발자는 SpannableString만 사용하면 되니..)

[Spanned]
 : Spanned interface에 대한 설명, 그리고 Span 생성 시 사용되는 Constants 설명이 있음.

그리고 일반적으로 SpannableString을 만들기 위해서 SpannableStringBuilder가 있다.

[SpannableStringBuilder]

일단 StringBuilder로 text style을 설정하는 간단한 예제는 다음과 같음.

String dispStr = "I'm the first line\nI'm the second line";
        TextView tv = (TextView) findViewById(R.id.textView1);
        int startSpan = dispStr.indexOf("first");
        int endSpan = dispStr.indexOf("line");
        Spannable spanRange = new SpannableString(dispStr);
        TextAppearanceSpan tas = new TextAppearanceSpan(this, android.R.style.TextAppearance_Large);
        spanRange.setSpan(tas, startSpan, endSpan, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        tv.setText(spanRange);

아래는 bitmap 추가하는 예제
SpannableStringBuilder sp = new SpannableStringBuilder("strings, strings");
Bitmap bp = DrawableBitmapCache.getBitmap(url, 500, 500);
sp.setSpan(new ImageSpan(context, bp), 5, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);


사용할 수 있는 style span들은 아래 링크에 나열 되어 있음.
모든 Span에 대해서 설명은 없지만 googling 해보면 다 나올 듯.


AbsoluteSizeSpan 
AlignmentSpan.Standard 
BackgroundColorSpan 
BulletSpan 
CharacterStyleThe classes that affect character-level text formatting extend this class. 
ClickableSpanIf an object of this type is attached to the text of a TextView with a movement method of LinkMovementMethod, the affected spans of text can be selected. 
DrawableMarginSpan 
DynamicDrawableSpan 
EasyEditSpanProvides an easy way to edit a portion of text. 
ForegroundColorSpan 
IconMarginSpan 
ImageSpan 
LeadingMarginSpan.StandardThe standard implementation of LeadingMarginSpan, which adjusts the margin but does not do any rendering. 
LocaleSpanChanges the Locale of the text to which the span is attached. 
MaskFilterSpan 
MetricAffectingSpanThe classes that affect character-level text formatting in a way that changes the width or height of characters extend this class. 
QuoteSpan 
RasterizerSpan 
RelativeSizeSpan 
ReplacementSpan 
ScaleXSpan 
StrikethroughSpan 
StyleSpanDescribes a style in a span. 
SubscriptSpan 
SuggestionSpanHolds suggestion candidates for the text enclosed in this span. 
SuperscriptSpan 
TabStopSpan.StandardThe default implementation of TabStopSpan. 
TextAppearanceSpanSets the text color, size, style, and typeface to match a TextAppearance resource. 
TypefaceSpanChanges the typeface family of the text to which the span is attached. 
UnderlineSpan 
URLSpan 

좀 더 자세한 실 예제는 아래를 참고하면 된다.

[TextView - SpannableStringBuilder 를 이용한 스타일 설정 |작성자 김동학]

[Introduction to Spans]

2013년 11월 2일 토요일

RD tabs - Ubuntu xrdp 원격접속 프로그램 추천

이전 블로그에서 이전 함 (원본 글 2013/11/02 작성)

Ubuntu를 Windows에서 원격 접속하고자
Ubuntu에 xrdp를 설치하고 윈도우즈 '원격 데스크탑 연결'을 사용하였으나 

원격 데스크탑 사용 후 윈도우즈 어플리케이션을 사용하려고 하다보면
윈도우즈키, alt, ctrl 키가 눌려있는 상태로 전환이 되는 경우가 있어
갑자기 화면이 사라지거나 윈도우즈 상태표시줄의 프로그램들이 실행되는 경우가 있음.

그래서 다시 RDP client를 찾던 중 

RD Tab이라는 것을 찾게 되어 사용하고 있는데 
원격 데스크탑 연결의 대부분의 기능을 지원하고 탭으로 여러 remote client를 관리할 수 있고
위에서 겪었던 현상이 없어서 사용하는데 꽤 괜찮음.

RD Tabs