메소드는 스레드를 통해서 동작시키는 메소드 : run()
run 오버라이드 해서 스레드가 동작할 때 어떤 처리를 할지 정해줄 수 있다.
왜냐면 이미 어플리케이션이 실행됬을 때 메인액티비티끝나고 별도의 스레드가 접근해서 ui에 대한 변경을 대신에 매인 그안에서 작업들이 하나씩 순차적으로 처리가 되는 만들면 된다.
ui 변경시킬수가 있다.
메세지를 보내주는 역할 : 핸들러
스레드에서 작업을 다 한다음에 그 값들을 핸들러에게 주는 거고 메인스레드 쪽에 전달해가지구 화면에 대한 변경사항들을 처리할 수 있게 된다.
이 부분들을 진행해봤고 처음 다뤄봤던 부분에 대한 설명
뷰를 화면상에 xml 에 배치하고 나서 on create 안에서 findbyid 연결했다.
갯수가 많아지면 코드가 많아지게 된다. 일정한 규칙을 가진 view 들에 대해서는 일일히 작성하지 않고 반복문으로 구현할 수 있다. 어떻게 처리를 하냐면 getResources().getIdenfier 로 접근해서 find 에게 인자값으로 넘겨줄 수 있다.
이미지뷰라는 이름은 동일하다 보시면 1부터 9까지 순차적으로 증가하는 걸 볼 수 있다. 코드로 이 아이디 값들을 넘겨줄 수 있다.
그러면 이제 프레그먼트에 대해서 이야기 나눠보겠다.
Fragment
이 예시들을 보게 되면 별도의 activity 를 실행시키는 구조가 아니라 클릭을 하게 되면 새로운 activity 가 실행되는게 아니라 화면만 바뀌게 되는걸 볼 수 있다.
전환이 일어나는 기술이 적용이 된다. 평소에 많이 이용하고 있는 fragment 라는 기술이 이용되고 있다.
fragment 기존의 activity 굉장히 효율적으로 사용할 수 있다.
activity 속성과 메소드가 굉장히 많은데 혹은 activity 안에서 굉장히 무거워 진다.
부분화면을 주어 액티비티처럼 독립적 동작을 구성하는 것이 Fragment
고정되는 부분이 있다. 이 어플에도 그러한 형태로 기술을 접목해보자 한게 Fragment
굉장히 많이 사용되고 있는 부분이다.
화면부분을 독립적으로 다뤄볼 수 있다.
화면 실행상 독립적 vs 화면상의 독립적
액티비티 자체가 시스템에서 관리한다면 액티비티 위에서 동작하는 것이 fragment 이다.
액티비티 끼리 전환할 때는 intent 사용했는데 activity 내에서 fragment manager : fragment 를 관리해주는 객체
추가하거나 교체하거나 삭제해버리거나 시스템에서 관리를 하냐 activity 내에서 관리를 하냐 그 차이로 볼 수 있다.
여러개의 화면을 관리할 수 있는 게 fragment 이다.
저희가 fragment 구축을 해 볼껀데 activity 위에 있기 때문에 하나의 activity 가 필요하다.
계속 얘기 하지만 독립적인 화면이라고 보면 될 것 같다.
독립적인 어플리케이션 보다는 페이지 개념으로 이해하면 된다.
독립적으로 만들어서 관리를 할 수 있는 게 fragment 이다.
[activity_main.xml]
fragment 구현은 어떻게 하냐면 mainactivity.xml 에서
빨간색 : fragment * 4개
파란색 : 네비게이션바
Palette - Containers - BottomNavigationView
화면에 꽉차게 된다면 4개의 버튼이 보여지게 만들것이다.
추가적으로 별도의 xml 이 필요하다.
xml 은 보통 레이아웃에서 정의하는데 BottomNavigationView 별도의 폴더를 만들기
res - Android Resource Directory
Resource type - menu
menu - 우클릭 - menu Resource - menu_bottom 이름 지정해주고 ok
palette - Menu Item - 4개 붙이기
일단은 나중에 이 버튼을 클릭했을 때 구분할 수 있는 값이 좀 필요하다. 이 아이템에는 어떤 값을 지정해야 될까요?
id 를 지정해야 한다.
Common Attributes
id
title : 보여지고 있는 text
icon : 보여지는 이미지
icon 이미지해도 지금은 안보이고 BottomNaviatonView 로 연결했을 때 보일 것이다.
id-title
(tab1-메인) (tab2-카메라) (tab3-#뉴스) (tab4-환경설정)
Menu foler 에 xml 을 불러오는 속성이 있다.
[MainActivity]
layout-height : wrap_content 로 바꾸기
new - fragment - fragment (black)
fragment 올라가게 되면 oncreateview 가 실행이 된다. 이벤트를 주거나 하는 부분은 여기에서 정의가 된다.
어뎁터는 액티비티가 아니죠. 가지고 view 형태로 보여줄수 있게끔 해주는 역할을 한다.
inflater 다.
그래서 여기에서 inflater 도 똑같은 역할을 해요 . fragment 가 activity 위에 보여줄 수 있도록 변환해주는 역할.
어떤 화면을 view 형태로 변환할 건지가 정의되어 있죠.
get View 생각하면 convert view 라는 변수가 있었다.
거기에 inflater.inflate 별도의 변수를 만들어서 넣어주면된다. fragment 라는 변수를 가지고 findbyid 를 할 수 있다.
fragment 로 변경해줘야 한다.
[fragment_1]
화면이 몇개 필요하죠? 총 4개가 필요하죠. 3개를 더 생성해줄거에요.
어떻게 할거냐면 fragment1 은 만들었으니까. 이 fragment
복사 붙여넣기 한다
그렇게 해서 fragment activity 1234 만든다
구조를 만들었다고 보시면 됩니다.
이번에는 fragment 3, 4를 킬게요
fragment 4 환결설정 화면을 키운 다움에 여기에서 그걸 만들어 볼게요
버튼 하나를 만들어 볼게요.
id 는 btnBg, text 는 배경색 변경
fragment3 로 넘어왔을 때 layout
'안드로이드스튜디오 (Android Studio)' 카테고리의 다른 글
안드로이드 스튜디오 - volley 라이브러리 (0) | 2021.04.06 |
---|---|
안드로이드 스튜디오 - 파이어 베이스 (0) | 2021.03.29 |
안드로이드 스튜디오 (0) | 2021.03.26 |
안드로이드 스튜디오 - fragment (0) | 2021.03.26 |