2013년 1월 30일 수요일

[Android] 모형 자르기(Clip Drawable)

<?xml version=”1.0” encoding=”utf-8”?>
<clip
    xmlns:android=”http://schemas.android.com/apk/res/android”
    android:drawable=”@drawable/drawable_resource”
    android:clipOrientation=[”horizontal” | ”vertical”]
    android:gravity=[”top” | ”bottom” | ”left” | ”right” | ”center_vertical” |
                     ”fill_vertical” | ”center_horizontal” | ”fill_horizontal” |
                     ”center” | ”fill” | ”clip_vertical” | ”clip_horizontal”] />


  • android:drawable : Drawable resource을 참조하여 이미지를 설정한다.
  • android:clipOrientation : 이미지를 자르기 위해 이동하는 방향.
    • 자를 대고 이미지를 자른다고 생각하고 자가 이동하는 방향을 나타낸다.(좌,우,위,아래)
  • android:gravity: 자의 위치가 어느 방향으로 이동할지를 나타낸다.
    • android:clipOrientation이랑 틀린 점은 android:clipOrientation은 자가 움직일 수 있는 방향만을 제시했다면 android:gravity에서는 오른쪽에서 왼쪽으로 또는 왼쪽에서 위쪽으로 등과 같이 어디를 기준으로 setLevel() method에서 정해준 수치많큼 이동할 수 있는 방향을 제시한다.


<clip />에서는 자르는 방법을 제공하지 않고 자바 프로그램에서 setLevel()메서드를 이용하여 자르기 된다.
아래는 '안드로이드 개발자 사이트'에 있는 예제 소스이다.

<?xml version=”1.0” encoding=”utf-8”?>
<clip xmlns:android=”http://schemas.android.com/apk/res/android”
    android:drawable=”@drawable/android”
    android:clipOrientation=”horizontal”
    android:gravity=”left” />

<ImageView
    android:id=”@+id/image”
    android:background=”@drawable/clip”
    android:layout_height=”wrap_content”
    android:layout_width=”wrap_content” />

ImageView imageview = (ImageView) findViewById(R.id.image);
ClipDrawable drawable = (ClipDrawable) imageview.getDrawable();
drawable.setLevel(drawable.getLevel() + 1000);

<참고>
android:cliporientation="horizontal" 이므로 자르는 위치가 좌우로 움직인다.
android:gravity="left" 이므로 자는 왼쪽으로 움직인다.
위에서도 언급 했듯이 <clip />에서는 자르는 명령이 없다.
자바코드에서 잘라줘야 된다.

drawable.setLevel(drawable.getLevel() + 1000);

이 부분이 자르는 곳이다. <clip />에서 자를 좌우로 움직이며 왼쪽으로 움직이라고 설정해 놨으므로 이 기준을 가지고 위의 자바 코드에서 자를 수 있다.
위에 나온 1000이라는 수치를 자르기 레벨이라 하며 0 ~ 10,000 까지 제공한다. 반을 자를려면 5000을 주면 된다.


관련글

댓글 없음:

댓글 쓰기