작성한 부스트코스 후기입니다.
여러분들의 성원에 더 노력하는 부스트코스가 되겠습니다.
감사합니다.
******************************************
1)링크: https://blog.naver.com/zhfptm12/221797641413
2)작성날짜: 20/02/05
리니어 레이아웃과 상대 레이아웃을 잘 조합하면 대부분의 화면을 만들 수 있습니다.
만약 어떤 버튼을 눌렀을 때 보이지 않던 뷰가 보이게 하고 싶다면, 프레임 레이아웃을 사용하면 편리하게 만들 수 있습니다.
프레임 레이아웃은 부들을 중첩하는 특징이 있기 때문입니다.
이번에 알아볼 레이아웃은 프레임 레이아웃입니다.
그럼 프레임 레이아웃, 뷰의 중첩, 뷰의 가시성 속성을 중점적으로 알아보겠습니다.
프레임 레이아웃(FrameLayout)
프레임 레이아웃은 레이아웃 안에 여러 개의 뷰가 있더라도 하나의 뷰만 보여줍니다.
그래서 가장 나중에 추가한 뷰만 보이게 됩니다.
이런 특성 때문에 여러 개의 뷰를 중첩시켜 놓고 하나의 뷰만을 보여줄 때 주로 사용합니다.
아래쪽의 뷰를 화면에 띄우고 싶다면, 위쪽으로 뷰를 올릴 수도 있고, 다른 뷰들을 안 보이게 해서 보여줄 수도 있습니다.
뷰의 중첩 | 뷰의 가시성
중첩된 부들 중에서 하나의 뷰만을 보여주고 싶다면 가시성(visibility)을 사용하면 됩니다.
가시성의 속성 값으로는 visible, invisible, gone 이 있습니다.
만약 보여주고 싶다면 속성 값을 visible 을 주면 되고, 그렇지 않다면 invisible, gone으로 설정하면 됩니다.
뷰의 중첩과 가시성을 활용한 예제를 보겠습니다.
버튼을 눌렀을 때, 이미지가 바뀌도록 해보겠습니다.
이 과정엔 나중에 배우게 될 내용이 있어서 간략하게만 써보려고 합니다.
프레임 레이아웃 안에 이미지 뷰 2개를 만들어 보여줄 이미지를 만듭니다.
둘 중에 하나만 visible로 해놓고 나머지 하나는 invisible로 속성값을 줍니다. 그 이유는 초기 화면에 두 개의 이미지가 보여선 안되기 때문입니다.
메인 액티비티에서 버튼을 눌렀을 때 각 이미지 뷰의 속성값을 visible, invisible로 바꾸도록 하게끔 만들어주면 됩니다. 이 부분은 나중에 다시 할 것이기 때문에 더 자세히 말하지는 않겠습니다.
<생각해보기>
1. 뷰를 중첩시키고 보였다 안 보였다 하는 또 다른 예는 어떤 것이 있을까요?
- sns의 좋아요 버튼과 같은 예가 있을 것 같습니다.
2. 화면의 일부분이 바뀌면서 보이는 것 말고 전체 화면이 다른 화면으로 바뀌면서 보이도록 만들 수도 있을까요?
- 버튼의 속성값을 바꾸게 하는 것이 아니라 버튼을 눌렀을 때, 레이아웃을 가져오게 한다면 가능할 것 같습니다.
3. 이렇게 하기 위해서는 새로운 화면을 또 추가해야 하는 걸까요?
- 질문이 정확히 이해하진 못했지만 화면전환을 하려고 하는 것이라면 두 가지의 화면을 만들어야 하기 때문에 필요할 것 같습니다.
[출처] [부스트 코스] 안드로이드 - 프레임 레이아웃 01주 차|작성자 zhfptm12