Android 개발 사용자 정의 날짜 선택 대화 상자 (확장 기능)
6438 단어 안 드 로 이 드 개발
먼저 레이아웃 인터페이스 를 써 야 합 니 다: 이 인터페이스의 XML 코드 는 다음 과 같 습 니 다.
레이아웃 이름: datetime. xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<DatePicker
android:id="@+id/datepicker"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TimePicker
android:id="@+id/timepicker"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
상기 코드 분석: 레이아웃 에 두 시간 을 넣 고 공간 을 선택 합 니 다. 하 나 는 날 짜 를 표시 하고 하 나 는 시간 을 표시 합 니 다.
그리고 우 리 는 사용자 정의 시간 선택 기의 종 류 를 쓰기 시 작 했 습 니 다. 코드 는 다음 과 같 습 니 다.
클래스 이름: DateTimePickerDialog
package com.jinbi.app.ui;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.content.DialogInterface;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
import com.jinbi.R;
public class DateTimePickerDialog implements OnDateChangedListener,OnTimeChangedListener{
private DatePicker datePicker;
private TimePicker timePicker;
private AlertDialog ad;
private String dateTime;
private String initDateTime;
private Activity activity;
/**
*
* @param activity: activity
*/
public DateTimePickerDialog(Activity activity) {
this.activity = activity;
}
public void init(DatePicker datePicker,TimePicker timePicker) {
Calendar calendar = Calendar.getInstance();
initDateTime = calendar.get(Calendar.YEAR)+"-"+calendar.get(Calendar.MONTH)+"-"+
calendar.get(Calendar.DAY_OF_MONTH)+" "+
calendar.get(Calendar.HOUR_OF_DAY)+":"+
calendar.get(Calendar.MINUTE)+
calendar.get(Calendar.SECOND);
datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), this);
timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));
timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE));
}
public AlertDialog dateTimePickDialog(final EditText dateTimeTextEdite,int type) {
Calendar c = Calendar.getInstance();
switch (type) {
case 1:
new DatePickerDialog(activity,
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
Calendar calendar = Calendar.getInstance();
calendar.set(datePicker.getYear(), datePicker.getMonth(),datePicker.getDayOfMonth());
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd");
dateTime = sdf.format(calendar.getTime());
dateTimeTextEdite.setText(dateTime);
}
},
c.get(Calendar.YEAR),
c.get(Calendar.MONTH),
c.get(Calendar.DATE)).show();
return null;
case 2:
new TimePickerDialog(activity,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,Calendar.MONTH,Calendar.DAY_OF_MONTH,
timePicker.getCurrentHour(),timePicker.getCurrentMinute());
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
dateTime = sdf.format(calendar.getTime());
dateTimeTextEdite.setText(dateTime);
}
},
c.get(Calendar.HOUR_OF_DAY),
c.get(Calendar.MINUTE),
true).show();
return null;
default:
LinearLayout dateTimeLayout = (LinearLayout)activity.getLayoutInflater().inflate(R.layout.datetime, null);
datePicker = (DatePicker)dateTimeLayout.findViewById(R.id.datepicker);
timePicker = (TimePicker)dateTimeLayout.findViewById(R.id.timepicker);
init(datePicker,timePicker);
timePicker.setIs24HourView(true);
timePicker.setOnTimeChangedListener(this);
ad = new AlertDialog.Builder(activity).setTitle(initDateTime).setView(dateTimeLayout).setPositiveButton(" ",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog,
int whichButton)
{
dateTimeTextEdite.setText(dateTime);
}
}).setNegativeButton(" ",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog,
int whichButton)
{
dateTimeTextEdite.setText("");
}
}).show();
onDateChanged(null, 0, 0, 0);
return ad;
}
}
@Override
public void onTimeChanged(TimePicker arg0, int arg1, int arg2) {
onDateChanged(null, 0, 0, 0);
}
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
Calendar calendar = Calendar.getInstance();
calendar.set(datePicker.getYear(), datePicker.getMonth(),
datePicker.getDayOfMonth(),timePicker.getCurrentHour(),
timePicker.getCurrentMinute());
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
dateTime = sdf.format(calendar.getTime());
ad.setTitle(dateTime);
}
}
이로써 이 컨트롤 은 작성 이 완 료 된 셈 이다.이 컨트롤 을 사용 하 는 방법 은 다음 과 같 습 니 다.
dietTime.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
DateTimePickerDialog dateTimePicKDialog = new DateTimePickerDialog(
RecordActivity.this);
dateTimePicKDialog.dateTimePickDialog(dietTime, 0);
}
});
프로젝트 는 휴대 전화 에 직접 배치 되 어 있 기 때문에 캡 처 하 는 것 이 불편 합 니 다. 지금 은 캡 처 를 하지 않 고 나중에 기회 가 있 으 면 다시 사진 을 찍 겠 습 니 다.
잘 모 르 시 면 참고 자 료 를 제공 하 세 요.
사용자 정의 날짜 와 시간 데모
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 개발 에 사용 되 는 MT 난수 생 성기이전의 AS3 이식 판 을 약간 고 쳐 서 현재 jkanji 에 사용 하고 있 습 니 다.테스트 를 좀 해 봤 는데 버그 가 별로 없 는 것 같 아 요.가장 간단 한 동전 테스트 를 해 봤 는데 같은 씨앗 의 경우 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.