Android

[Android-]ImageView

연나연 2024. 1. 22. 14:02

ImageView

이미지를 사용자에게 보여주고자 하는 목적으로 제공되는 View 이다.
1. ImageView의 주요 속성

- srcCompat : 보여줄 이미지를 지정한다. 안드로이드 4 버전까지는 src 였는데 백터 방식의 이미지(SVG, PSD 등)을 처리할 수 있는 기능을 추가혀여 srcCompat로 변경하였다.

2. ImageView의 주요 메서드

- setImageResource : res 폴더에 있는 이미지를 설정한다.
- setImageBitmap : Bitmap 객체로 만들어진 이미지를 설정한다.
- setImageDrawable : Drawable 객체로 만들어진 이미지를 설정한다.
package kr.co.lion.android15_imageview

import android.graphics.BitmapFactory
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.core.graphics.drawable.toDrawable
import kr.co.lion.android15_imageview.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    lateinit var activityMainBinding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(activityMainBinding.root)

        activityMainBinding.apply{
            button.setOnClickListener {
                // 웹서버가 제공하는 이미지를 보여주고자 할 때
                // imageView2.setImageURI(사이트의 주소를 관리하는 URI 객체)
                // 프로젝트의 res/drawable, res/maipmap 폴더에 있는 이미지를
                // 보여주고자 할 때
                // imageView2.setImageResource(R.drawable.img_android)

                // Bitmap : Bitmap 타입의 데이터를 관리하는 이미지 객체
                // Bitmap 데이터 타입 : 각 픽셀의 색상값이 저장되어 있는 형태
                // Drawable : Bitmap 타입의 데이터를 관리하는 이미지 객체
                // Drawable 은 이미지 데이터에 대한 변경작업이 가능한 이미지 객체
                // Bitmap이나 Drawable 객체로 만들어 쓰는 이미지는 res 폴더 내부가 아닌 곳에 존재하는
                // 이미지를 가져다 사용할 때 이 타입의 객체로 만들어 사용한다.
                // Bitmap과 Drawable 둘 다 제공하는 작업인 경우 Bitmap을 추천한다.
                val bitmap = BitmapFactory.decodeResource(resources, R.drawable.img_android)
                // imageView2.setImageBitmap(bitmap)

                val drawable = bitmap.toDrawable(resources)
                imageView2.setImageDrawable(drawable)
            }
        }
    }
}