![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpRVKj%2FbtrtZ7vFZd3%2FPXVhpPooRyB5MJLzfQ7UQk%2Fimg.gif)
Android Kotlin Image Full Screen - 이미지 클릭 시 확대
Notepad96
·2022. 2. 22. 09:10
1. 결 과
# 이 글은 Image 클릭 시 전체 화면으로 전환하여 볼 수 있는 방법을 기술한다. 이를 위해서 makeSceneTransitionAnimation를 사용한다.
2. Main Activity
2-1. activity_main.xml (Layout)
<?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:gravity="bottom"
android:padding="5dp"
tools:context=".MainActivity">
<ImageView
android:id="@+id/main_image01"
android:layout_width="150dp"
android:layout_height="150dp"
android:transitionName="imgTrans"
android:src="@drawable/img01"/>
<ImageView
android:id="@+id/main_image02"
android:layout_width="150dp"
android:layout_height="150dp"
android:transitionName="imgTrans"
android:src="@drawable/img02"/>
<ImageView
android:id="@+id/main_image03"
android:layout_width="150dp"
android:layout_height="150dp"
android:transitionName="imgTrans"
android:src="@drawable/img03"/>
</LinearLayout>
# 레이아웃은 ImageView 3개를 넣어 임의의 이미지를 보여주도록 구성.
2-2. MainActivity.kt
package com.example.imagefullscreen
import android.app.ActivityOptions
import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
main_image01.setOnClickListener { clickEvent(it,1) }
main_image02.setOnClickListener { clickEvent(it,2) }
main_image03.setOnClickListener { clickEvent(it,3) }
}
private fun clickEvent(view: View, pos: Int) {
val intent = Intent(this, ImageActivity::class.java)
intent.putExtra("pos", pos)
val opt = ActivityOptions.makeSceneTransitionAnimation(this, view, "imgTrans")
startActivity(intent, opt.toBundle())
}
}
# clickEvent 함수를 정의해주며 3개의 각 ImageView 클릭 시 실행되도록 구성.
# intent는 엑티비티 전환 하는 방식과 동일하게 사용
# opt는 ActivityOptions.makeSceneTransitionAnimation 값으로 파라미터로 (Activit!, View!, String!)값을 갖음
# 3번 째 String 값은 layout의 ImageView의 추가된 transitionName 값으로 이는 전환 될 Activity의 ImageView에도 똑같이 설정
3. Image Activity
3-1. activity_image.xml (Layout)
<?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"
tools:context=".ImageActivity">
<ImageView
android:id="@+id/image_full"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transitionName="imgTrans"
/>
</LinearLayout>
# ImageView 1개로 구성되며 이는 Main Activity에서 ImageView 클릭 시 전환되어 보여줄 화면
# Main Activity의 ImageView와 마찬가지로 transitionName 값을 imgTrans로 동일한 값을 갖음
3-2. ImageActivity.kt
package com.example.imagefullscreen
import android.app.ActivityOptions
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_image.*
class ImageActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_image)
val img = when(intent.getIntExtra("pos", 1)) {
1 -> R.drawable.img01
2 -> R.drawable.img02
else -> R.drawable.img03
}
image_full.setImageResource(img)
image_full.setOnClickListener {
supportFinishAfterTransition()
}
}
}
# intent로 넘어온 pos값을 사용하여 보여줄 Image를 지정해주며 클릭 시 본래 Finish() 역할을 하는 supportFinishAfterTransition()을 사용하여 마찬가지로 애니메이션을 주며 원래 엑티비티로 돌아감.
4. 전체 코드
GitHub - Notepad96/BlogExample
Contribute to Notepad96/BlogExample development by creating an account on GitHub.
github.com
'Android' 카테고리의 다른 글
Android Kotlin coil - 이미지 로딩 라이브러리 (0) | 2022.04.28 |
---|---|
Android Kotlin Permission - registerForActivityResult (0) | 2022.04.26 |
Android Loading Animation - ContentLoadingProgressBar (0) | 2022.02.10 |
Android Kotlin Number Picker Dialog - 숫자 선택 창 (0) | 2022.02.07 |
Android Kotlin Permission Check - 권한 요청 및 설정 (0) | 2022.02.04 |