본문 바로가기
안드로이드

안드로이드 2주차

by 기록을안하면바보 2024. 9. 16.

조금 재밋을 것 같다 기대된다.ㅋㅋ

 

bts앱을 만들어야 한다.. 하지만 난 방탄을 그렇게 조아하지 않는다.. 그럼 멀 만들까

아 강의 자료에 넣어 두셧다.. 하지마 ㄴ쓰기 싫타 하지만 해봐야겟다..

아 웃겨

 

!! 여태 레이아웃 페이지가 보이지 않았던 것은 empty 로 새 프로젝트를 생성해서 그럼.. empty view로 선택해 줘야 레이아웃이 보인다!!

드디어 보이게 된... 감격스럽다

메인 엑티비티에는 주요 코드를 작성하고 xml파일은 대충 화면이 보여지는 곳임

 

일단 방탄의 사진이 이 프로젝트 안에 존재 해야 한다.

사진을 넣어줄 건데 res 아래에 drawable폴더가 있다.

 

 

드래그앤 드롭으로 넣어 줄 수 있다

 

지금 래이아웃은 ConstraintLayout 인데 이걸 다른 걸로 바꿔준다.

 

Linear Layout

매우 직관적인 형태이다.

우리가 일반적으로 생각하는 형태와 비슷하다.

옆에 빈 공간에 아이템이 생성되거나 아래에 생성된다.

 

 

 

Relative Layout

기존 상태와 관계 없이 생성되어 겹치듯이 설정해 줄 수 있는 레이아웃(좌표 기준으로.. )

 

 

 

Constraint Layout 

각각의 항목을 비례하여 정렬 가능하다

디바이스의 크기가 커지는 경우 용이하다

 

 

 

 

 

그냥 LinearLayout으로 작성해도 괜찮다

 

 

이미지를 넣을 거니까 이미지 태그를 작성해 주고 그 아래 안드로이드 src: "@drawable/사진 이름" 을 입력해 사진 이미지를 받았다.

 

 

 

 

이미지 태그를 여러개 더 만들어 주면 사진을 더 불러 올 수 있다,

 

 

이대로 계속 사진을 넣어주면 옆으로 사진이 쌓이고 보이지는 않는다..

아랫줄로 사진을 내려야한다!

 

첫 줄에 보여질 사진 세개를 하나의 Linear layout으로 묶고 ...각 줄 별로 linear layout으로 묶어준다.!!

 

 

응? 그런데 화면에 사진이 뜨지 않는다.. linear lay out이 가로로 정렬되고 있다..

세로로 정렬해주는 속성을 추가한다..

 

실행이 오래걸리고 발열 이슈로 나중에 이어서 쓰겠다

 

 

이제 사진에 클릭 이벤트를 추가해준다!!

이를 위해서는...

 

1. 화면 클릭 이벤트를 프로그램이 인식해야함.

2. 화면 클릭시 다음 화면으로 넘어가 사진을 크게 보여줘야함.

 

이미지 클릭 인식을 어떻게 알까?

> 먼저 이미지마다 이름을 붙여주자.. 이 이름을 id라 부른다

 

android:id="@+id/img_1"

img_1 이 이름이고 그 외 부분은 id를 부여해주는 문장!

 

 

이제 레이아웃 코드에서 전체 이름 부여를 완료해 줬고 , 메인코드로 돌아가 함수를 작성해준다.

 

메인 엑티비티에서 이미지를 받을 변수를 생성해준다. val 변수로 image 1이라는 이름의 변수를 생성해주고 이를 id를 통해 변수를 찾는 함수 findviewbyid<imgview(이미지뷰에서 자겨올 것임)>(B.id.이미지명) 이라는 의미이다.

 

 

이미지 1번에 온클릭 이벤트가 발생 했을 때 코스트 메세지를 출력해준다(토스트 메세지가 뭐지.?)

드디어 성공 

하나 알아낸게 있다. 안드로이드 가상기기에서 앱에 오류가 있으면 앱이 아예 실행되지 않는다는것,,, 오류 코드문장도 안알려주는듯  , 문장 하나를 빼먹어서 일어난 일잉 였따..

이제 사진을 클릭했을 때 사진이 크게 보이게 하는 이벤트를 넣어주겠다.

사진을 클릭하면 다음화면으로 넘러가 사진을 보이도록 해주겠다.

 

자동으로 생성되는 메인 엑티비티 외에 또 다른 엑티비티를 하나 더 만들어주겠다. 

 

 

메인 엑티비티가 들어있는 파일 위를 우클릭 new를 누른다.

 

 

처음에는 우클릭했는데 옆에 메뉴가 안나타났는데 한 30초 기다리니까 나타났따...

 

 

이렇게 해주면 bts1 엑티비티랑 레이아웃에 bts1.xml파일이 생성된다.

 

xml 파일에 이미지 뷰를 생성해준다.

match parent 는 최대한 크기로 맞춰주겠다는 의미이다.

 

 

여기에 src를 를추가해 이미지를 넣어준다.

이제는 bts activity 1에 1번째 사진이 크게 해주었다.

이제 작은 레이아웃 이미지를 클릭했을 때 토스트 메세지가 아닌 이 bts1 엑티비티 화면으로 이동해주게 연결해주면 된다.

 

 

메인 액티비티에

 val intent = Intent(this, NewActivity::class.java)
    startActivity(intent)
}

라는 문장을 추가해준다

 

지금 빨간 글씨로 화면에 나타나는데 이건 기능이 선언되지 않았기 때문이다.

alt-Enter 키를 눌러주면 import 메세지가 뜰 것임 그리고 bts activity 1 화면으로 전환해 줄 것이기 때문에 new activity 를 bts1 activity로 바꿔준다.

아랫줄에

startActivity(intent)

 

문장을 넣어서 액티비티를 실행해준다 

후후

 

ㅁㅊ 자꾸 가상 머신만 되고 내 핸드폰과는 연결이 안되서 봤는데 usb를 연결하고 midi모드로 설정해 주니까 연결이 됐다..하

 

내가 한 것 처럼 하기 보다는 변수들 쭈욱 선언해주고 온클릭 이벤트들 쭈욱 설정해주고 하는게 더 보기 좋은 듯 하다.

 

 

 

똑같은 문장들을 넣어서 다른 사진들도 크게 볼 수 있도록 해주었다

근데 의문인 점. 레이아웃에서 엑티비티 파일을 생성해줬더니 같은 이름의 코틀린 파일이 생성됨.

원래 여기서 생성하는게 아니였나.?

아 응 레이아웃 이아니라 메인 엑티비티가 들어있는 파일에서 생성해줘야 했네 그치만 됐으니까 ㄱㅊ아..

 

 

 

 

사진이 100개면 엑티비티가 100개여야하나요.?

아니요. 다른 방법이 있긴 합니다 그치만 나는 처음이니까 이렇게 해봅니다..

 

아 앱을 완성 했다! 

뿌듯뿌듯

그치만 자랑할 거리는 아닌듯 ㅋㅋ

'안드로이드' 카테고리의 다른 글

?!  (0) 2024.11.15
ListView  (9) 2024.11.15
안드로이드 주사위 만들기  (0) 2024.09.20
안드로이드 3강  (1) 2024.09.17
안드로이드 1주차  (1) 2024.09.13