1. 방탄사진첩
- 사진은 drawble에 넣는다.
- 이미지를 변수로 지정하기 + Toast 띄우기 + 액티비티 할당 및 전환하기
val image1 = findViewById<ImageView>(R.id.btsImage1)
image1.setOnClickListener{
Toast.makeText(this, "1번 클릭 완료", Toast.LENGTH_LONG).show()
// 2. 화면이 클릭되면 다음화면으로 넘어가서 사진을 크게 보여준다.
val intent = Intent(this, Bts1Activity::class.java)
startActivity(intent)
}
2. 트와이스사진첩
- splashActivity 적용하기
> 일단 splashActivity 생성 + xml(뷰) 도 같이 생성
> 문제가뭐냐면 애뮬레이터로 앱을 돌릴 때 기본 액티비티가 MainActivity로 설정되어 있다는거임
> app/manifests/AndroidManifest.xml 파일에서 바꿔줘야함(위에 것을 아래로!)
<activity android:name=".ImageInsideActivity"/>
<activity android:name=".SplashActivity">
</activity>
<activity
android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ImageInsideActivity"
android:exported="false" />
<activity
android:name=".SplashActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"></activity>
> 중요한것은 intent-filter를 MainActivity에서 SplashActivity로 옮겨줘야 한다.
> 저 exported에 대한 설명은 해당글을 참고해주세용 읽었는데도 모르겠어요.
https://m.blog.naver.com/websearch/221668354461
>옮겼으면 SplashActivity에 코드 추가해주면 댐
Handler().postDelayed({
startActivity(Intent(this, MainActivity::class.java))
finish()
}, 3000)
> Handler와 postDelayed를 이용하여 액티비티 전환 및 종료 그리고 딜레이(3초)를 준다.
> xml코드는 그냥 대문짝만하게 넣어주면댐
<ImageView
android:src="@drawable/splash"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
>>>> 그러면 대문짝만하게 사진뜨고 3초뒤에 MainActivity로 전환댐
- 방탄은 사진클릭했을 때 따로 만들어진 activity와 xml로 intent하는 방식이었다.
activity파일과 xml파일이 현저히 많아지는 현상 발생
트와이스는 splashActivity와 Main을 제외한 하나의 ImageActivity만 만들면댐
> 여기서 중요한것은 Main에서 작은사진 클릭했을 때 그 데이터를 ImageActivity로 보내주는것
요약 : 작은사진 클릭 (twice1)
val btn1 = findViewById<ImageView>(R.id.member1)
해당 데이터 "1" 을 ImageActivity로 보내줄거임
btn1.setOnClickListener{
val intent = Intent(this, ImageInsideActivity::class.java)
intent.putExtra("data", "1")
startActivity(intent)
}
클릭 - intent에 ImageActivity담고 , putExtra로 "data" 로서 "1"을 담고 액티비티 전환 실행
전환 후 ImageActivity 코드
val getData = intent.getStringExtra("data")
val memberImage = findViewById<ImageView>(R.id.memberImageArea)
if(getData == "1") {
memberImage.setImageResource(R.drawable.member_1)
Handler().postDelayed({
finish()
}, 3000)
}
중요한것은 data 가 "1"일 때 setImageResource 이미지 리소스를 member_1로 정한다
if(getData == "2") {
memberImage.setImageResource(R.drawable.member_2)
}
if(getData == "3") {
memberImage.setImageResource(R.drawable.member_3)
}
등등등
xml 코드는
<ImageView
android:id="@+id/memberImageArea"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
끝
코드참고
https://github.com/KIMHYEONGJIN5925/kotlin-practice
'kotlin' 카테고리의 다른 글
[kotlin] recyclerView + shallowCopy & deepCopy (0) | 2022.07.20 |
---|---|
[kotlin] databinding, log, Random, Random.nextInt, if, when (0) | 2022.06.14 |