본문 바로가기

안드로이드스튜디오 (Android Studio)

안드로이드 스튜디오 - fragment

반응형

메소드는 스레드를 통해서 동작시키는 메소드 : 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 

 

 

 

 

 

 

 

 

 

 

 

반응형