Android 날짜&시간 예약 앱(Chronometer & TimePicker & CalendarView)
30814 단어 ExampleCodeExampleCode
1. activity_main.xml 코드
<androidx.appcompat.widget.LinearLayoutCompat
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"
tools:context=".MainActivity">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Chronometer
android:id="@+id/chronometer1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:format="예약에 걸린 시간 %s"
android:textSize="20dp" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnStart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="예약 시작" />
</androidx.appcompat.widget.LinearLayoutCompat>
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/rbCal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="날짜 설정(캘린더뷰)" />
<RadioButton
android:id="@+id/rbTime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="시간 설정" />
</RadioGroup>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<CalendarView
android:id="@+id/calendarView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TimePicker
android:id="@+id/timePicker1"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</FrameLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnEnd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="예약완료" />
<TextView
android:id="@+id/tvYear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0000"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="년"/>
<TextView
android:id="@+id/tvMonth"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="월"/>
<TextView
android:id="@+id/tvDay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="일"/>
<TextView
android:id="@+id/tvHour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="시"/>
<TextView
android:id="@+id/tvMinute"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="분 예약됨"/>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
2. MainActivity.java 코드
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity2";
private Chronometer chronometer1;
private Button btnStart, btnEnd;
private RadioButton rbCal, rbTime;
private CalendarView calendarView1;
private TimePicker timePicker1;
private TextView tvYear, tvMonth, tvDay, tvHour, tvMinute;
int selectYear, selectMonth, selectDay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
initLr();
initData();
}
public void init(){
chronometer1 = findViewById(R.id.chronometer1);
btnStart = findViewById(R.id.btnStart);
btnEnd = findViewById(R.id.btnEnd);
rbCal = findViewById(R.id.rbCal);
rbTime = findViewById(R.id.rbTime);
calendarView1 = findViewById(R.id.calendarView1);
timePicker1 = findViewById(R.id.timePicker1);
tvYear = findViewById(R.id.tvYear);
tvMonth = findViewById(R.id.tvMonth);
tvDay = findViewById(R.id.tvDay);
tvHour = findViewById(R.id.tvHour);
tvMinute = findViewById(R.id.tvMinute);
timePicker1.setVisibility(View.INVISIBLE);
calendarView1.setVisibility(View.INVISIBLE);
}
public void initLr(){
rbCal.setOnClickListener(v -> {
timePicker1.setVisibility(View.INVISIBLE);
calendarView1.setVisibility(View.VISIBLE);
});
rbTime.setOnClickListener(v -> {
timePicker1.setVisibility(View.VISIBLE);
calendarView1.setVisibility(View.INVISIBLE);
});
btnStart.setOnClickListener(v -> {
chronometer1.setBase(SystemClock.elapsedRealtime());
chronometer1.start();
chronometer1.setTextColor(Color.RED);
});
btnEnd.setOnClickListener(v -> {
chronometer1.stop();
chronometer1.setTextColor(Color.BLUE);
});
calendarView1.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView calendarView1,
int year, int month, int dayOfMonth) {
selectYear = year;
selectMonth = month + 1;
selectDay = dayOfMonth;
}
});
}
public void initData(){
tvYear.setText(Integer.toString(selectYear));
tvMonth.setText(Integer.toString(selectMonth));
tvDay.setText(Integer.toString(selectDay));
tvHour.setText(Integer.toString(timePicker1.getCurrentHour()));
tvMinute.setText(Integer.toString(timePicker1.getCurrentMinute()));
}
}
Author And Source
이 문제에 관하여(Android 날짜&시간 예약 앱(Chronometer & TimePicker & CalendarView)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@ruinak_4127/Android-타이머-달력
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<androidx.appcompat.widget.LinearLayoutCompat
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"
tools:context=".MainActivity">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Chronometer
android:id="@+id/chronometer1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:format="예약에 걸린 시간 %s"
android:textSize="20dp" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnStart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="예약 시작" />
</androidx.appcompat.widget.LinearLayoutCompat>
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/rbCal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="날짜 설정(캘린더뷰)" />
<RadioButton
android:id="@+id/rbTime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="시간 설정" />
</RadioGroup>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<CalendarView
android:id="@+id/calendarView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TimePicker
android:id="@+id/timePicker1"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</FrameLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnEnd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="예약완료" />
<TextView
android:id="@+id/tvYear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0000"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="년"/>
<TextView
android:id="@+id/tvMonth"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="월"/>
<TextView
android:id="@+id/tvDay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="일"/>
<TextView
android:id="@+id/tvHour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="시"/>
<TextView
android:id="@+id/tvMinute"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="분 예약됨"/>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity2";
private Chronometer chronometer1;
private Button btnStart, btnEnd;
private RadioButton rbCal, rbTime;
private CalendarView calendarView1;
private TimePicker timePicker1;
private TextView tvYear, tvMonth, tvDay, tvHour, tvMinute;
int selectYear, selectMonth, selectDay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
initLr();
initData();
}
public void init(){
chronometer1 = findViewById(R.id.chronometer1);
btnStart = findViewById(R.id.btnStart);
btnEnd = findViewById(R.id.btnEnd);
rbCal = findViewById(R.id.rbCal);
rbTime = findViewById(R.id.rbTime);
calendarView1 = findViewById(R.id.calendarView1);
timePicker1 = findViewById(R.id.timePicker1);
tvYear = findViewById(R.id.tvYear);
tvMonth = findViewById(R.id.tvMonth);
tvDay = findViewById(R.id.tvDay);
tvHour = findViewById(R.id.tvHour);
tvMinute = findViewById(R.id.tvMinute);
timePicker1.setVisibility(View.INVISIBLE);
calendarView1.setVisibility(View.INVISIBLE);
}
public void initLr(){
rbCal.setOnClickListener(v -> {
timePicker1.setVisibility(View.INVISIBLE);
calendarView1.setVisibility(View.VISIBLE);
});
rbTime.setOnClickListener(v -> {
timePicker1.setVisibility(View.VISIBLE);
calendarView1.setVisibility(View.INVISIBLE);
});
btnStart.setOnClickListener(v -> {
chronometer1.setBase(SystemClock.elapsedRealtime());
chronometer1.start();
chronometer1.setTextColor(Color.RED);
});
btnEnd.setOnClickListener(v -> {
chronometer1.stop();
chronometer1.setTextColor(Color.BLUE);
});
calendarView1.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView calendarView1,
int year, int month, int dayOfMonth) {
selectYear = year;
selectMonth = month + 1;
selectDay = dayOfMonth;
}
});
}
public void initData(){
tvYear.setText(Integer.toString(selectYear));
tvMonth.setText(Integer.toString(selectMonth));
tvDay.setText(Integer.toString(selectDay));
tvHour.setText(Integer.toString(timePicker1.getCurrentHour()));
tvMinute.setText(Integer.toString(timePicker1.getCurrentMinute()));
}
}
Author And Source
이 문제에 관하여(Android 날짜&시간 예약 앱(Chronometer & TimePicker & CalendarView)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ruinak_4127/Android-타이머-달력저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)