SpannableString 클래스의 SetSpan을 이용한 안드로이드 이미지 파싱
setSpan 메소드를 사용하여 문자열 사이사이에 이미지를 넣을수 있습니다.
메신져를 사용하다 보면 글자와 이모티콘을 동시에 사용할 수 있습니다.
예를 들면 네이트온에서 /짱/ 이라고 입력하면 그에 해당하는 이미지가 출력되고 있습니다.
이것은 스트링을 이미지로 파싱한 결과인데요.
안드로이드에서 다음과 같은 기능을 어떻게 구현하는지 알아보겠습니다.
-image Parsing 메소드 구현부
public SpannableString ImageParsing(Resources res, String text) { int Emoticoncount = 0; int EmoticonStringLen = 0; SpannableString result = new SpannableString(text); while(EmoticonCount < this.mIconNumber) { int EmoticonCurrentIndex = 0; while(true) { //Emoticon Search EmoticonCurrentIndex = text.indexOf(mEmoticons[EmoticonCount], EmoticonCurrentIndex+EmoticonStringLen); //Image Parsing if(-1 < EmoticonCurrentIndex ) { EmoticonStringLen = mEmoticons[Emoticoncount].length(); Bitmap bm = EmoticonResourceBinder.getBitmapFromResourceId(res, mIconId[EmoticonCount]); result.setSpan(new ImageSpan(bm), EmoticonCurrentIndex, EmoticonCurrentIndex+mEmoticons[EmoticonCount].length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } else break; } EmoticonCount++; } return result; } |
상용화된 코드가 아니라 리펙토링도 되지 않고 고도화도 되지 않아 이래저래 길고,
while 문도 중첩되어 버렸지만 가장 중요한 부분은 아래 부분입니다.
result.setSpan(new ImageSpan(bm), EmoticonCurrentIndex, EmoticonCurrentIndex+mEmoticons[EmoticonCount].length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); |
setSpan 메소드를 사용하여 문자열 사이사이에 이미지를 넣을수 있습니다.
간편하게 "글자 + 이미지 + 글자" 형식을 만들 수 있습니다.
'안드로이드' 카테고리의 다른 글
Conversion to Dalvik format failed: Unable to execute dex: null ZIP3 (0) | 2011.02.09 |
---|---|
ClipboardManager 사용예제 (0) | 2011.02.08 |
TextView - SpannableStringBuilder 를 이용한 스타일 설정 [출처] TextView - SpannableStringBuilder 를 이용한 스타일 설정 |작성자 김동학 (0) | 2011.02.08 |
onUserInteraction(), onUserLeaveHint() (0) | 2011.02.07 |
startActivityForResult() (0) | 2011.02.07 |