안드로이드 스튜디오 FrameLayout, GridLayout, LinearLayout 사용해서 앱 만들기
GridLayout은 TableLayout과 비슷하게 위젯을 표 형식으로 배치할 때 사용하는 Layout인데
TableLayout은 할 수 없는 행 병합을 할 수 있어서 더 다양하게 만들 수 있습니다.
GridLayout은 android:rowCount="", android:columnCount="" 속성을 사용해서 row와 column을 미리 지정할 수 있습니다.
GridLayout에 포함되어 있는 위젯에 android:layout_row="" android:layout_column="" 속성을 지정해줘서 해당 위젯)가
몇 번째 행, 몇 번째 column에 위치할 지 지정해 줄 수 있습니다.
android:layout_rowSpan="" , android:layout_columnSpan="" 을 사용해서 몇 개의 행, 열을 합쳐서 사용할지 지정하고
android:layout_columnWeight="", android:layout_rowWeight="" 를 통해 행과 열의 비율을 지정해서 사용할 수 있습니다.
FrameLayout은 위젯을 겹처서 사용하고 싶을때 사용하는 layout입니다.
버튼이 클릭될때 화면이 전환되는 것처럼 보여주기 위해 FrameLayout안에 DatePicker, TimePicker, LinearLayout, GridLayout을 넣고
위젯의 visibility가 상황에 따라 변하게 설정해 주었습니다.
LinearLayout은 위젯을 수직 혹은 수평으로 배치할 수 있는 layout입니다.
수직으로 배치하고 싶으면 android:orientation="vertical" ,
수평으로 배치하고 싶으면 android:orientation="horizontal" 을 사용하면 됩니다.
위의 앱은 GridLayout, FrameLayout, LinearLayout을 사용했습니다.
TextView, EditText, Button 외에도 Switch, Chronometer, DatePicker, TimePicker를 사용했습니다.
Switch는 두 개의 상태를 표시하는 버튼입니다.
자바 파일에서 .setOnCheckedChangeListener() 이벤트 설정을 통해 상태에 따른 효과를 다르게 줄 수 있습니다.
Chronometer는 시간을 측정하는 위젯입니다.
자바 파일에서 .start()를 통해 Count를 시작 할 수 있고 .stop()을 통해 정지 시킬 수 있습니다.
만약 다시 00:00으로 reset하고 싶으면 .setBase(SystemClock.elapsedRealtime()) 를 사용합니다.
DatePicker는 날짜를 표시하는 위젯입니다.
선택된 정보를 가져오기 위해서는 getYear(), getMonth(), getDayOfMonth()를 사용하는데
DatePicker에서 선택된 정보는 int로 반환되기 때문에 String으로 사용하고 싶다면 형 변환을 해야합니다.
String year = Integer.toString(datePicker.getYear());
String month = Integer.toString(datePicker.getMonth() + 1);
String day = Integer.toString(datePicker.getDayOfMonth());
TimePicker는 시간을 표시하는 위젯입니다.
TimePicker에서 선택된 정보도 int로 반환되기 때문에 String으로 사용하고 싶다면 형 변환을 해야합니다.
String hour = Integer.toString(timePicker.getCurrentHour()) ;
String minute = Integer.toString(timePicker.getCurrentMinute());
아마 TimePicker의 getCurrentHour()와 getCurrentMinute()의 중앙에 밑줄이 그어져 있을텐데
이유는 API 23이후에는 getCurrentHour(), getCurrentMinute()가 사라지고 getHour()와 getMinute()으로 대체되기 때문입니다
저는 API 16을 기준으로 앱을 만들었기 때문에 그냥 getCurrentHour(), getCurrentMinute() 를 사용했습니다.
Button이 실행 중 작동하지 않게 하게 하려면 .setEnabled(false) 다시 작동하게 하려면 Button에 .setEnabled(true)을 사용합니다.
그리고 .setEnabled(false)로 설정된 버튼이 다시 작동하게 하기 위해서는 .setEnabled(true) 값을 설정해 주면 됩니다.
위 앱의 모든 코드는 GitHub에서 볼 수 있습니다!
https://github.com/Ywook/Android.Practice2_2
'Android Studio' 카테고리의 다른 글
안드로이드 옵션 메뉴 (OptionMenu) 사용해서 앱 만들기 (0) | 2017.03.26 |
---|---|
안드로이드 RelativeLayout 사용하기 (0) | 2017.03.22 |
안드로이드 스튜디오 TableLayout 사용해서 학점 계산 앱 만들기 (0) | 2017.03.19 |
안드로이드 스튜디오 기본 위젯(Widget)을 사용한 앱 만들기 (2) (0) | 2017.03.12 |
안드로이드 스튜디오 기본 위젯(Widget)을 사용한 앱 만들기 (1) (0) | 2017.03.12 |