■ 안드로이드 고급 위젯
1) 날짜/시간 관련 위젯 : 아날로그 시계, 디지털 시계, 크로노미터(Chronometer), 타임피커, 데이터피커, 캘린더뷰
2) 기타 위젯 : 자동완성 텍스트뷰, 멀티자동완성 텍스트뷰, 프로그래스바, 시크바, 래이팅바
아래 예제는 고급 위젯을 이용하는 예제입니다.
♤ 예제
[ activity_main.xml ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140 |
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.mijinpark.a0530widget.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:orientation="vertical">
<Chronometer
android:id="@+id/chronometer"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:format="예약에 걸린 시간 %s"
android:gravity="center"/>
<Button
android:id="@+id/buttonStart"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="예약 시작"/>
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2">
<RadioButton
android:id="@+id/radioCalendar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="날짜 설정"/>
<RadioButton
android:id="@+id/radioTime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="시간 설정"/>
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="5">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<CalendarView
android:id="@+id/calendar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible"></CalendarView>
<TimePicker
android:id="@+id/timep"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible"></TimePicker>
</FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/reservationLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<Button
android:id="@+id/btnComplete"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="예약완료"/>
<TextView
android:id="@+id/yy"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:text="0000"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:text="년"/>
<TextView
android:id="@+id/mm"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:text="00"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:text="월"/>
<TextView
android:id="@+id/dd"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:text="00"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:text="일"/>
<TextView
android:id="@+id/hour"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:text="00"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:text="시"/>
<TextView
android:id="@+id/minute"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:text="00"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:text="분 예약됨"/>
</LinearLayout>
</LinearLayout>
|
cs |
[ MainActivity.java ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 |
package com.example.mijinpark.a0530widget;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CalendarView;
import android.widget.Chronometer;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.TimePicker;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
Chronometer chronometer;
Button btnStart;
Button btnComplete;
RadioGroup radioGroup;
RadioButton rdCalenar;
RadioButton rdTime;
CalendarView calView;
TimePicker timep;
TextView yy;
TextView mm;
TextView dd;
TextView hour;
TextView minute;
LinearLayout reservationLayout;
Calendar calendar = Calendar.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chronometer = (Chronometer) findViewById(R.id.chronometer);
btnStart = (Button) findViewById(R.id.buttonStart);
btnComplete = (Button) findViewById(R.id.btnComplete);
radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
rdCalenar = (RadioButton) findViewById(R.id.radioCalendar);
rdTime = (RadioButton) findViewById(R.id.radioTime);
calView = (CalendarView) findViewById(R.id.calendar);
timep = (TimePicker)findViewById(R.id.timep);
yy = (TextView) findViewById(R.id.yy);
mm = (TextView) findViewById(R.id.mm);
dd = (TextView) findViewById(R.id.dd);
hour = (TextView) findViewById(R.id.hour);
minute = (TextView) findViewById(R.id.minute);
reservationLayout = (LinearLayout) findViewById(R.id.reservationLayout);
calView.setVisibility(View.INVISIBLE);
timep.setVisibility(View.INVISIBLE);
radioGroup.setVisibility(View.INVISIBLE);
reservationLayout.setVisibility(View.INVISIBLE);
//버튼 클릭하면 chronometer 시작
btnStart.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
chronometer.setBase(SystemClock.elapsedRealtime()); //이거 안해주면?
chronometer.start();
radioGroup.setVisibility(View.VISIBLE);
reservationLayout.setVisibility(View.VISIBLE);
}
});
rdCalenar.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
calView.setVisibility(android.view.View.VISIBLE);
timep.setVisibility(View.INVISIBLE);
}
});
rdTime.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
timep.setVisibility(android.view.View.VISIBLE);
calView.setVisibility(View.INVISIBLE);
}
});
//예약 완료 버튼 누르면 캘린더와 타이머에서 설정한 값 받아오기
btnComplete.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
chronometer.stop();
//calendar에 선택되어있는 날짜를 getDate로 받아오면 1970년도 1월 1일 00:00:00 이후로 지나온 시간을 초단위로 환산해서 받아옴
// 이렇게 받아온 숫자를 java.util.Calendar를 이용해서 사용할 수 있도록 바꿈
//calendar 날짜 설정 -> calView에 설정되어있는 값을 받아옴
calendar.setTimeInMillis(calView.getDate());
//calendar.get() -> int형으로 반환
yy.setText(calendar.get(Calendar.YEAR)+"");
mm.setText(calendar.get(Calendar.MONTH)+"");
dd.setText(calendar.get(Calendar.DATE)+"");
//hour.setText(timep.getHour()+""); ->아래 코드랑 뭐가 다른지?? .getHour()과 getCurrentHour()은 반환형이 int, Integer인 것 빼고는 getCurrentHour()를 반환하는 건 똑같은데
hour.setText(timep.getCurrentHour().toString());
minute.setText(timep.getCurrentMinute().toString());
}
});
}
} |
cs |
실행 화면
예약시작 버튼 클릭 ->
날짜 설정 클릭 -> 시간 설정 클릭 ->
예약 완료 클릭 ->
■ 뷰 컨테이너
스크롤뷰 : 단 하나의 위젯을 넣어 화면을 수직으로 스크롤하는 기능 ( 수평 스크롤은 따로 있음 )
슬라이딩드로어 : 위젯을 서랍처럼 열어서 보여주거나 닫아서 감춤
뷰플리퍼 : 여러 개의 위젯을 배치한 후, 필요에 따라 화면을 왼쪽 오른쪽으로 밀어서 하나의 위젯을 화면에 보여주는 방식의 뷰 컨테이너
탭 호스트 : 여러 탭을 두고 각 탭을 클릭할 때마다 해당 화면이 나오도록 설정하는 뷰 컨테이너
액션바 : 태블릿과 같은 대형화면에서 여러 화면을 사용하기 위해서 고안되었으며 다양한 크기의 화면을 디자인 하는데 활용
프래그먼트 : 액티비티보다 작은 단위의 화면
'Android > Android' 카테고리의 다른 글
Android(5)_Intent (0) | 2016.05.31 |
---|---|
Android 계산기 (0) | 2016.05.31 |
Android(3)_Layout (0) | 2016.05.27 |
Android(2)_Activity (0) | 2016.05.26 |
Android(1)_Structure (0) | 2016.05.26 |