Please Enable JavaScript!
Gon[ Enable JavaScript ]

안드로이드(Android) Activity 에서 이미지 리소스 drawable 다루는 방법

 

환경 : Eclipse Mars, Android 4.2.2

 

안드로이드에서 내부 리소스를 이용해 이미지를 다루는 방법에 대해 알아 보겠습니다. drawable 은 그래픽이미지 자원(리소스)를 관리하는 곳입니다. 응용프로그램에서 이용할 이미지들은 이곳에 넣어두고 사용하시면 됩니다.

 

1. 이미지 등록하는 방법

 

이미지를 관리하는 리소스 폴더는 drawable 입니다. /res 폴더 아래에 있으며 기기의해상도에 따라 폴더가 분류되어 있습니다. 각 해상도 별로 가져다 쓰는 이미지 폴더가 다르다는 것이죠. 기기의 해상도에 맞게 이미지를 제작해서 각 폴더에 넣어 줘야 겠죠.

 

drawable-hdpi(high) : 고화질 ~240 dpi

drawable-ldpi(low) : 저화질 ~120 dpi

drawable-mdpi(medium) : 중간화질 ~160 dpi

drawable-xhdpi(extra-high) : ~320dpi

drawable-xxhdpi(extra-extra-high) : ~480dpi

xxxhdpi (extra-extra-extra-high) ~640dpi

 

 

2. 이미지를 표현할 XML 구성

 

리소스에 사용할 이미지를 넣었다면 화면 레이아웃을 구성하는 XML 에 이미지 위젯을 추가해야합니다. 위젯에 추가한 이미지를 보여주기 위해서 입니다. 레이아웃 XML 을 만들고 디자인뷰로 이동합니다. 


 왼쪽 팔레트에서 Widgets > ImageView 위젯을 선택하고 드래그해서 오른쪽 디자인 영역에 올려 놓습니다. 

 

ImageView 위젯을 레이아웃으로 드래그해서 가져가면 리소스에 있는 이미지들 중에 하나를 선택할 수 있는 대화상자가 뜹니다. 위에서 추가한 이미지들중 하나를 선택합니다.


이렇게 위자드를 이용해서 완성한 화면 레이아웃 XML 입니다. ImageView 추가되어 있고 src 속성값에 이미지명이 들어가 있는 것을 볼수 있습니다. 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.sampleandroidinfo.MainActivity" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="110dp"
        android:src="@drawable/chrysant" />

</RelativeLayout>

 

3. Activity 클래스에서 이미지 가져오기

 

화면 레이아웃 XML 에 추가한 이미지를 화면에 보여주는 Activity 소스 입니다. 이미 XML 에 이미지가 추가 되어 있기 때문에 setContentView() 까지만 구현 해도 됩니다. 하지만 다른 리소스 이미지로 교체하고 싶을 때 사용할수 있는 소스를 넣었습니다. 먼저 drawable 폴더에 있는 이미지 리소스 정보를 가져오기 위해 getResources().getDrawable() 함수를 사용했습니다. 인수로 리소스 아이디를 넘기시면 됩니다. 그렇게 리턴받은 Drawable 객체는 ImageView 위젯의 setImageDrawable() 함수의 인수로 넘기시면 화면에 표시가 됩니다. 

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.ImageView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// drawable 리소스 객체 가져오기
		Drawable drawable = getResources().getDrawable(
				R.drawable.chrysant);

		// XML 에 있는 ImageView 위젯에 이미지 셋팅 
		ImageView imageView = (ImageView) findViewById(R.id.imageView1);
		imageView.setImageDrawable(drawable);
	}
}

 

위의 소스를 적용한 화면입니다. 

 


Posted by 녹두장군

댓글을 달아 주세요

  1. 안녕하세요 2016.01.23 20:21  댓글주소  수정/삭제  댓글쓰기

    res/drawable-hdpi-v4/app_icon.png 이게 무슨소리인지 알려주실수 있나요? 그리고 경로는 어디로 통해서 들어가야하죠?? 제가 어플 실행을 할 떄 이렇게 떠서,,

    • Favicon of https://mainia.tistory.com 녹두장군 2016.01.24 14:58 신고  댓글주소  수정/삭제

      res 는 리소스 폴더를 말합니다. 왼쪽 탐색기에 찾아보시면 있습니다. 외부 네트워크를 통한 이미지 연결이 아니면 res 폴더에 넣어놓고 사용합니다.

  2. Favicon of https://honeystip.tistory.com 미니타임 2017.12.16 17:46 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요.. 덕분에 하나 알아갑니다 감사합니다!!