안드로이드에서 내부 리소스를 이용해 이미지를 다루는 방법에 대해 알아 보겠습니다. 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);
}
}
▼ 위의 소스를 적용한 화면입니다.
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) Thread 대신해서 AsyncTask 클래스 구현하기 (0) | 2024.11.09 |
---|---|
안드로이드 콘솔에서 adb shell 패키지 접근 권한 Permission denied 에러 해결 (1) | 2024.04.11 |
안드로이드 개발 Intent 이용한 전화 걸기 (5) | 2024.03.23 |
안드로이드(Android) scale 이용해서 애니메이션(Animation) 구현하는 방법 (2) | 2024.03.07 |
안드로이드(Android) ProgressDialog(프로그레스 다이얼로그) 구현 방법 (9) | 2024.03.06 |
안드로이드 개발 ContentProvider, ContentResolver 이용해서 연락처 가져오는 방법 (3) | 2024.02.09 |
안드로이드 스튜디오 개발 APK 파일 찾는 방법 (0) | 2023.07.10 |
안드로이드(Android) ImageView scale type 별로 이미지 배치 하는 방법 (0) | 2023.01.24 |