트와이스 앱 만들기
그치만 트와이스 사진이 ㅂㄹ 땡기지 않음.. bts한번 만들어보니까 사진은 걍 내 맘에 드는거 쓰면 될듯
뉴>뉴프로젝트>엠티 뷰 엑티비티로 새 프로젝트 생성
먼저 스플래시 화면을 표현해 줄거다
그러러면 새로운 엑티비티 파일이 필요하다
생성을 해주면 일단 메인 엑티비티가 먼저 보이게 되어있다 이 설정부터 먼저 해주겠다
app 폴더 아래 manifast 파일로 이동해준다
메인 액티비티 아래에 intent filter라는 태그가 있는데 이를 잘라서 바로 스플래시에 붙여넣어준다
android:exported
true 로 되어있으면 앱에서 접근이 가능하고 false면 접근이 불가능하단다.. 자꾸 오류가 나서 우울했는데 이유를 앎
main 의 exported 속성을 false 로 해줬는데 실행 잘 되니까 일단 나둬보겟삼
실행했는데 앱이 두개가 설치돼서 당황티비
처음에 intent filter를 스플래시 아래에 적어주고 메인에 적혀 있던걸 안지워서 그랬다.ㅋㅋ
미안미안~
이제 스플래시액티비티에서 메인 엑티비티로 이동해주어야한다,
이 코드 구현은 코틀린 코드로 스플래시 액티비티 코드에서 해주면 된다
핸들러를 추가해준다
이렇게 빨간 글씨로 뜨면 import가 필요한 상태이기 때문에 alrt+ enter 키 사용!
3초 뒤에 메인 액티비티를 실행시키고 꺼주는 역할이라 생각..
handler에 가로줄이 있는데 경고 표시임.. 어노테이션을 추가해주면 가로줄이 사라지는데 뭐 있어도 문제는 없다..
지금은 constraint layout으로 되어 있는데 이걸 Linear 레이아웃으로 바꿔준다
제일 큰 배경 linear layout 위에 세새의 linear layout을 쌓아주고 그 안에 사진들을 삽입해준다.
근데 그냥 이렇게만 삽입해주면 linear 레이아웃이 가로로 세개 쌓여서 보이지 않게 된다. 따라서 세로로 정렬해주는 문장을 삽입한다.
레이아웃 엑티비티 이미지뷰 태그 안에서 마진과 패딩을 조절할 수 있음
이제 클릭하면 화면이 크게보이는 효과를 줘야한다.
각 이미지 뷰에 아이디를 부여해 준 다음 메인 엗티비티에서 버튼을 생성하고 그 안에 intent문장을 삽입한다.
val intent = Intent(this, insideActivity::class.java)
startActivity(intent)
}
근데 이제 사진 보여지는 기능 뿐만 아니라 데이터까지 같이 넘겨 줄 것이다.
클릭 이벤트가 발생했을 때 넘겨주는 데이터에 따라 inside엑티비티에서 보여지는 화면이 달라지도록 해주겟다.
intent.putExtra("data","1")
intent에서 데이터를 넘겨주는 방법!
데이터라는 이름으로 1의 값이 전달된다
이제 데이터를 받아오는 차례이다
inside 엑티비티 파일로 넘어가서
intent.getStringExtra("data")
로 데이터를 받아온다.
Toast.makeText(this,getData,Toast.LENGTH_LONG).show()
받아온 데이터를 확인하기 위해 데이터를 토스트 메세지로 출력한다.
이제 각 사진마다 다른 사진을 띄워줄거다
레이아웃 inside파일에서 이미지 뷰 화면을 크게 생성해주고 일단 hiro1의 이미지를 삽입해주었다
인사이드 엑티비티 코틀린 파일로 넘어가서 아까 받은 데이터 값을 비교하여 각 경우의 수 마다 레이아웃의 이미지를 변경해 주었다.
아까 레이아웃 파일에서 생성해준 이미지뷰의 이름이 imageArea 인데 그걸 변수로 저장해준다.
val memberImage =findViewById<ImageView>(R.id.memberImageArea)
get데이터의 값을 if문으로 비교하여 이 member image의 이미지를 바꿔준다
if(getData=="1"){
memberImage.setImageResource(R.drawable.hiro1)
}
memberImage.setImageResource(R.drawable.hiro1)
바꿀 이미지 영역 저장 변수. 이미지 리소스 변경 함수 (바꿀 이미지 파일)
궁금해서 한번 해봤는데 까먹어서 왜 오류가 났나 했네 미친
intent.putExtra("data","9")
startActivity(intent)
인텐트로 데이터 전달을 먼저 한 다음에 엑티비티를 스타트 해줘야한다. 반대 순서로 하니까 오류가 난다.