안드로이드의 패스위의 텍스트

수년전에 오렐리라는 출판사에서 나온 자바의 2D API를 보면서… 이 API를 이용해 2D GIS 엔진을 자바로 만들면 정말 환상이겠구나… 라는 생각을 했던 적이 있었습니다. 그런데.. 안드로이드를 살펴보면서 또 다시 이런 생각이 다시 듭니다.. 안드로이드가 내세우는 주요 개발 언어가 자바라는 점과 이러한 생각은 우연이 일치이겠지만 말입니다. 또 다시 이러한 생각을 들게 만드는 안드로이드의 기능은 아래와 같은 기능 때문입니다. 즉, Path을 따라 사용자가 표현하고자 하는 텍스트를 자연스럽게 회전시켜주는 기능입니다.

사용자 삽입 이미지
참으로.. 아름답습니다! 그럼 어떻게 이렇게 하는지 안드로이드 맛보기 겸해서 코드를 잠시 살펴보도록 하겠습니다. 물론 안드로이드를 잘 아시는 분들은 걍.. 살짝 패스해주셔도 됩니다!

먼저 간단히 View를 하나 만듭니다. View 클래스는 안드로이드에서 위젯(UI 컨트롤)을 나타내는데 유용한 부모클래스입니다..

public class MyView extends View {
    public MyView(Context context) {
        super(context);
    }
 
    public void onDraw(Canvas canvas) {
        Path path = new Path();
        canvas.drawColor(Color.BLACK);
  
        Paint Pnt = new Paint();
        Pnt.setAntiAlias(true);
        Pnt.setStrokeWidth(1);
        Pnt.setColor(Color.GREEN);
        Pnt.setStyle(Paint.Style.STROKE);

        path.moveTo(10, 10);
        path.cubicTo(80, 150, 100, 220, 310, 410);
        
        Pnt.setColor(Color.GREEN);
        canvas.drawPath(path, Pnt);
  
        Pnt.setTextSize(40);
        Pnt.setStrokeWidth(1);
        Pnt.setStyle(Paint.Style.FILL);
        Pnt.setColor(Color.WHITE);
        Pnt.setAntiAlias(true);
        canvas.drawTextOnPath("안드로이드의 패스위 문자열 표현", path, 0, 0, Pnt);
    }
}

즉, 문자열이 표시될 방향을 결정할 Path 객체를 만들어주고.. Canvas의 drawTextOnPath 매서드를 통해 원하는 문자열을 표시해주기만 하는.. 매우 효율적인 API를 제공합니다. 이제 이 View를 실제로 사용하는 Activity를 정의합니다.

public class UseMyView extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        MyView vw = new MyView(this);
        setContentView(vw);
    }
}

안드로이드에서 Activity는 실제로 화면에 표시되지는 않지만 화면을 구성하는 가장 핵심이 되는 단위로.. View를 컨트롤하여 화면에 개발자가 원하는 컨텐츠를 표시할 수 있습니다. 안드로이드의 2D 그래픽스…. 많은 모바일 API를 경험해 보지는 않았으나… 정말 이 정도로 뛰어난 2D 그래픽 API를 제공하는 모바일 개발 플랫폼이 있을까… 싶습니다..

국내 첫 안드로이드폰, “모토로이”

국내에서 처음으로 정식 출시되는 안드로이드폰의 소식이 들어왔습니다. 개인적으로 매우 반갑습니다. 모토롤라에서 제작하고 SK에서 올해 2월초부터 판매한다고 합니다. 전반적인 사양을 정리하면 다음과 같습니다. 비단 SK 뿐만 아니라 애플폰을 판매하고 있는 KT에서도 안드로이드 폰을 판매한다고 합니다. 올해에 약 20가지 종류의 안드로이드 폰이 출시된다고 하니… 사용자 입장에서 무엇을 골라야하나 머리가 좀 아플것같네요..

사용자 삽입 이미지

  • 지상파 DMB 지원
  • 3.7인치 WVGA 480×854
  • 안드로이드 OS 2.0 지원
  • 풀 터치 화면 그리고 UI
  • 800만 화소 카메라
  • 720p HD 캠코더 기능
  • MP3 플레이어
  • 구글맵, G-Mail 등과 같은 구글 서비스와 강력한 연계
  • 외부 메모리로써 8기가 바이트 제공(32GB 까지 확장 가능)
  • HDMI를 지원하는 출력 지원(모니터 또는 빔프로젝터, TV)
  • 멀티 테스킹 지원
  • WiFi를 통한 무선인터넷 그리고 웹브라우징
  • 근접 센서 기능(스크린에 가까이 접근하면 발생하는 이벤트)
  • 마이크로소프트 오피스 및 PDF 뷰어
  • 광학 문자 인식 기능

구글의 안드로이드 폰, “넥서스 폰”

애플폰이 나오기 전에.. 애플폰이 출시만 되면 사려고 했지만.. 구글의 안드로이드폰의 국내 출시가 올해 초나 중반기에 나온다는 소식에 애플폰을 지르지 않았습니다. 아직까지는 국내의 출시 소식은 아니지만.. 어제인가.. 오늘 새벽인가.. 해외에서 넥서스 폰이 출시가 되었습니다. 하루 빨리 국내에서도 출시가 될 날만을 기다리는 사람으로써 이 넥서스 폰의 특징 몇가지를 뽑아 봅니다.

사용자 삽입 이미지

  • 최신 안드로이드 2.1 탑재
  • 폰의 가격면에서 매우 저렴(애플폰과 T옴니아에 비교할때)
  • 두께 11.5mm, 무게 130g 매우 가벼움
  • CPU 1GHz
  • AMOLED 3.7 인치, 해상도 480×800
  • 멀티 태스킹 지원(당연한 항목이지만 애플폰의 경우 않된다기에…)
  • 어플리케이션 시장으로 안드로이드 마켓이 존재(애플폰의 경우 애플 앱스토어가 있음)
  • 카메라 기능
  • 음성인식기능
  • GPS 기능
  • 후면의 두개의 마이크를 이용한 외부소음 차단
  • 구글맵과 구글어스 실행
  • 멀티 터치 기능 지원 하지 않음
  • 내장 메모리가 512MB로 애플폰과 T옴니아에 비교해 매우 작음