Android-Layout
- activity_main.xml은 주로 화면상으로 보여지는 layout개발을 할 때 쓰여진다.
- 반면 MainActivity.java는 기능과 관련된 이벤트 처리 소스를 개발할 때 쓰인다.
- ex) 버튼을 눌렀을 때 네이버 홈페이지로 가게 하는 등등
Layout의 종류
-
layout종류는 주로 4가지로 나뉜다. (ConstraintLayout, LinerLayout, FrameLayout, RelativeLayout)
- 안드로이드 스튜디오는 디폴트값으로 제약 레이아웃으로 설정되어있다.
LinearLayout
- 가장 간단하면서 가장 자주 쓰인다.
- 리니어 레이아웃은 상자를 쌓듯이 뷰를 하나씩 쌓을 수 있는 레이아웃입니다.
- 화면에서 뷰가 차지하는 영역을 상자라고 보고 이 상자를 한쪽 방향으로 쌓을 수 있게 해 줍니다. 그래서 방향을 꼭 지정해야한다.
- 상자를 위로도 쌓을 수 있고, 바닥에 어느 한방향의 일렬로 놓을 수도 있다고 생각하면 쉽습니다.
- 화면에서는 뷰를 아래쪽으로 쌓거나 오른쪽으로 쌓을 수 있도록 해주는데 어느 방향으로 쌓을 것인지를 먼저 결정해야 합니다.
- 방향 속성인 orientation 속성을 이용해 가로 방향은 Horizontal, 세로 방향은 Vertical로 지정합니다.
- 그다음에는 단순히 쌓기만 하면 됩니다.
- 아주 쉬운 레이아웃이지만 리니어 레이아웃 안에 다시 리니어 레이아웃을 여러 개 집어넣고 안에 들어간 리니어 레이아웃 각각에 서로 다른 orientation 속성을 설정하여 아주 복잡한 화면도 만들 수 있습니다.
RelativeLayout
- 제약 레이아웃이랑 거의 비슷해서 잘 안쓰임.
- 제약 레이아웃이 최근에 생긴거라 이제 얘는 거의 안쓰일듯
- 아래와 같이 상대적인 위치로 뷰를 배치한다.
FrameLayout
- 가장 상위에 있는 뷰나 뷰그룹만 보이게 하는 레이아웃
- 여러 개의 뷰가 들어가면 중첩됨
- 많은 뷰를 중첩시켜놓고 화면을 전환시키는 용도로 많이 쓰인다.
- 한 번에 하나의 뷰만 보여준다. 사실 배치라고 할것도 없다.
뷰 속성값들
- layout_weight → 값을 할당해줘서 가로 또는 세로의 비율만큼 가져간다.
- ex) 예를들어 버튼1한테 2 주고 버튼2한테 1주면 버튼1이 전체 레이아웃의 3분의2만큼 공간을 가져가는 형식
- 공간분할의 역할
- layout-gravity → 뷰 정렬
- gravity → 텍스트 정렬
- layout_margin - 뷰 마진
- padding - 뷰 내부에서 텍스트 패딩
상태 드로어블
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/ic_thumb_up_selected" />
<item android:drawable="@drawable/ic_thumb_up" />
</selector>
- 위와 같은 xml 파일을 drawable폴더에 넣으면 동작함.
쉐이프 드로어블
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#BE55DA" />
<solid android:color="#00000000" />
</shape>
</item>
<item android:top="1dp" android:bottom="1dp" android:right="1dp" android:left="1dp">
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#BE55DA"/>
<solid android:color="#00000000" />
</shape>
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#7288DB"
android:centerColor="#3250B4"
android:endColor="#254095"
android:angle="90"
android:centerY="0.5"
/>
<corners android:radius="2dp" />
</shape>
댓글남기기