안드로이드/개념
[Android] Do It! 안드로이드 도전 03. 두 개의 이미지뷰에 이미지 번갈아 보여주기
Do It! 안드로이드 p.150 도전 03. 문제 app:layout_constraintHorizontal_chainStyle="packed" 라는 속성이 있다. 이 속성값은 제약 레이아웃에서 뷰 두개를 가운데로 모아주는 역할을 해 주는 속성이다. init() 메서드로 전역 변수로 선언한 수평스크롤 뷰 2개를 초기화 해준다. 그리고 upBtn과 downBtn 메서드를 구현해서 버튼 온클릭 리스너로 xml파일에서 정해줬다.
[Android] 스크롤 뷰, Scroll View
스크롤 뷰는 한 화면에 뷰가 모두 보이지 않을 때 사용한다. 단순하게 스크롤 뷰만 추가하면 스크롤이 생긴다. 스크롤 뷰의 방향은 디폴트는 수직 방향이다. 수평 방향의 스크롤 뷰는 HorizontalScrollView를 사용하면 된다. 이렇게 HorizontalScrollView 안에 ScrollView를 넣으면 가로 세로 모두 화면의 크기를 벗어날 경우 스크롤이 생기게 된다. 자바 소스 파일에서 setContentView 메서드로 레이아웃 파일을 지정해 준다. 그리고 init()이라는 초기화 메서드에서 img와 srcView를 초기화 해주고 srcView에 수평방향의 스크롤을 할 수 있도록 setHorizontalScrollBarEnabled(true)를 호출한다. 그리고 BitmapDrawable 자료..
[Android] 프레임 레이아웃, Frame Layout
프레임 레이아웃은 중첩(Overlay) 기능이 있어서 뷰가 추가된 순서대로 차곡차곡 쌓이는 레이아웃이다. 만일 특정 뷰만 보여지게 하고 싶다면 visibility라는 속성을 이용하면 된다. visible : 뷰가 보여진다. 디폴트 값이다. invisible : 뷰를 보진 못하지만 뷰가 그 공간을 차지한다. gone : 뷰를 보지도 못하고 뷰가 그 공간을 차지하지도 않는다. 다음과 같이 이미지뷰를 두 개 생성해 놓고 먼저 생성한 이미지 뷰는 invisible 속성을 준다. 그러면 나중에 생성한 이미지 뷰만 보이게 된다. 이제 이미지를 클릭했을 때 다른 이미지가 보이도록 해 보겠다. xml파일이 아닌 소스 코드에서 소스를 수정하면 된다. 소스 코드가 어려운 구조는 아니다. xml에서 onClick 메서드를 ..
[Android] 테이블 레이아웃, Table Layout
테이블 레이아웃은 표, 엑셀 형태의 격자 모양의 화면을 구성하는 레이아웃이다. 테이블 레이아웃은 TableRow라는 태그가 여러 개 들어가는데 한 행을 의미한다. 이 행에는 여러 개의 뷰가 들어갈 수 있고, 하나의 뷰가 각각의 열이 된다. 테이블 레이아웃은 최상위 레이아웃으로 쓰는 것이 아니라, 부모 컨테이너 안에서 사용하는 레이아웃이다. 이 때, TableRow의 layout_height가 match_parent로 되어있는데, 내부적으로 항상 wrap_content로 설정되어있다. 그리고 layout_width는 내부적으로 항상 match_parent로 설정되어있다. 각 테이블 레이아웃에 버튼들을 추가하면 다음처럼 화면이 구성된다. 뷰들의 layout_width와 layout_height가 match_..
[Android] 상대 레이아웃, Relative Layout
상대 레이아웃으로 만들 수 있는 것들은 제약 레이아웃(Constraints Layout)으로 만들 수 있으므로 상대 레이아웃 사용은 권장되지는 않는다. 그러나 상대 레이아웃으로 만들어진 코드를 이해해야 하려면 알고 있어야 한다. 상대 레이아웃은 부모 컨테이너 혹은 다른 뷰와의 상대적인 위치를 통해 뷰의 위치를 결정할 수 있다. 이 때 뷰들의 id를 통해 상대적인 위치를 결정한다. layout_alignParent 속성과 layout_above, layout_below 등의 속성을 사용한다. 제약 레이아웃에 익숙해져 있어서 조금 낯설게 느껴졌지만 비슷하다. 제약 레이아웃이 더 많은 기능을 지원하므로 제약 레이아웃을 쓰는 것을 권장한다고 한다.
[Android] 리니어 레이아웃, Linear Layout
리니어 레이아웃 방향 설정 리니어 레이아웃은 한 쪽 방향으로 뷰를 쌓는다. 따라서 리니어 레이아웃에는 필수 속성으로 방향을 설정해 주어야 한다. orientation 속성을 사용하고 가로 방향으로 쌓을 때는 horizontal, 세로 방향으로 쌓을 때는 vertical로 설정한다. 디폴트 값은 horizontal인 것 같다. 그래도 가독성을 위해서는 써 주는게 좋을 것 같다. ※ 최상위 레이아웃을 바꾸고 싶을 경우 xml 코드를 바꿔서 수정할 수도 있지만 Convert view를 사용해서 쉽게 바꿀 수 있다. 뷰의 크기 관련 속성 layout_width와 layout_height는 dp로 크기를 지정할 수도 있지만 match_parent, wrap_content로 지정할 수 있다. 이 때, match_p..
[Android] 레이아웃의 종류
레이아웃의 종류 제약(Constraint) 레이아웃 : 제약 조건 기반, 연결선을 제약조건으로 한다. 안드로이드 스튜디오 디폴트 레이아웃 리니어(Linear) 레이아웃 : 한 쪽 방향으로 차례대로 뷰를 추가한다. 뷰가 차지하는 사각형 영역을 나타낸다. 리니어 레이아웃은 어느 쪽 방향으로 뷰를 추가할 지에 대한 orientation 속성이 필수이다. 상대(Relative) 레이아웃 : 제약 레이아웃을 사용하면서 권장하지 않는다. 부모 컨테이너 혹은 다른 뷰와의 상대적 위치로 화면을 구성한다. 프레임(Frame) 레이아웃 : 싱글 모델. 가장 상위에 있는 하나의 뷰 또는 뷰 그룹만 보여준다. 여러 개의 뷰가 들어가면 중첩하여 쌓이게 된다. 테이블(Table) 레이아웃 : 격자(Grid) 모델. HTML에서 ..