안드로이드 이미지뷰에 이미지를 출력하는 방법은 여러가지이다.
자주 쓰이는 4가지 방법을 알아본다.
1. ImageView.setImageResource(R.drawable.image_sample) : res/drawable/ 폴더의 image_sample 이미지를 load하여 출력한다.
2. ImageView.setImageResource(Uri uri) : Uri에 이미지 파일 경로를 parse하여 image를 load하여 출력한다.
3. ImageView.setImageBitmap(Bitmap bitmap) : 비트맵을 load하여 보여준다.
4. ImageView. setImageDrawable(Drawable drawable) : Drawable형식의 image를 load하여 출력한다.
이 때, 메니페스트에 네트워크로 이미지를 가져와 출력할때는
<uses-permission android:name="android.permission.INTERNET"/>
위와 같은 인터넷 권한을..
스마트폰 메모리카드에서 이미지를 가져와 출력할때는
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
위와 같은 파일 접근 권한을 추가한다.
아래는 위 4가지 방식의 ImageView 출력방법을 사용한 예제 프로젝트 소스를 보여준다.
- 아래 코딩전에 res/drawable 폴더에 image_sample.png 이미지를 미리 추가 시켜놓아야한다.
* image_sample.png
* activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.studio572.sampleimageview.MainActivity">
<ImageView
android:id="@+id/imageView01"
android:layout_width="150dp"
android:layout_height="150dp"
android:adjustViewBounds="true"/>
<ImageView
android:id="@+id/imageView02"
android:layout_width="150dp"
android:layout_height="150dp"
android:adjustViewBounds="true" />
<ImageView
android:id="@+id/imageView03"
android:layout_width="150dp"
android:layout_height="150dp"
android:adjustViewBounds="true"/>
<ImageView
android:id="@+id/imageView04"
android:layout_width="150dp"
android:layout_height="150dp"
android:adjustViewBounds="true"/>
</LinearLayout>
* MainActivity.java
package com.studio572.sampleimageview;
import android.Manifest;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Environment;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import java.io.File;
import java.net.URI;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
private ImageView imageView01, imageView02, imageView03, imageView04;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView01 = (ImageView) findViewById(R.id.imageView01);
imageView02 = (ImageView) findViewById(R.id.imageView02);
imageView03 = (ImageView) findViewById(R.id.imageView03);
imageView04 = (ImageView) findViewById(R.id.imageView04);
// setImageResource - res/drawable 폴더에 있는 image_sample 이미지를 로드한다.
imageView01.setImageResource(R.drawable.image_sample);
// setImageURI - Uri 경로에 따른 SDCard에 있는 이미지 파일을 로드한다.
try {
Uri uri = Uri.parse("file:///" + Environment.getExternalStorageDirectory() + "/572/내그림/image_sample.jpg");
imageView02.setImageURI(uri);
}catch (Exception e){
e.printStackTrace();
}
// setImageBitmap - Bitmap 이미지를 로드한다.
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image_sample);
imageView03.setImageBitmap(bitmap);
// setImageDrawable - drawable형 이미지를 로드한다.
imageView04.setImageDrawable(getResources().getDrawable(R.drawable.image_sample));
}
}
위 setImageURI()에서 "/572/내그림/image_sample01.jpg" 대신 여러분의 스마트폰의 저장된 이미지 경로를 넣어주면 된다.
* AndroidManifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.studio572.sampleimageview">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
여기서는 파일 읽기에 관한 권한을 추가한다.
아래는 위 소스의 출력물이다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[안드로이드] ImageView에 Bitmap 최적화 로딩하기 - OutOfMemoryError 처리 (1) | 2017.08.23 |
---|---|
[안드로이드] ImageView scaleType 속성별 차이 예제 (4) | 2017.08.22 |
[안드로이드] Thread(쓰레드)에서 UI 변경하기 - runOnUiThread 사용하기 (2) | 2017.08.20 |
[안드로이드] Camera Preview - 카메라 프리뷰 만들기 (4) | 2017.08.19 |
[안드로이드] 상태바, 타이틀바 숨기기(제거), 전체화면 - StatusBar,TitleBar , Full Screen (0) | 2017.08.18 |
댓글