當前位置:ag真人国际官网-ag旗舰厅官方网站 » 安卓系統 » android自定義日期

android自定義日期-ag真人国际官网

發布時間: 2024-11-10 19:28:24

1. 安卓 怎樣自定義一個時間選擇器

實現的效果就是在同一個布局上顯示日期選擇和時間選擇。

自定義一個類:
/datetimepicker/src/com/wwj/datetimepicker/datetimepickdialogutil.java
package com.wwj.datetimepicker;

import java.text.simpledateformat;
import java.util.calendar;

import android.app.activity;
import android.app.alertdialog;
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;

/**
* 日期時間選擇控制項 使用方法: private edittext inputdate;//需要設置的日期時間文本編輯框 private string
* initdatetime="2012年9月3日 14:44",//初始日期時間值 在點擊事件中使用:
* inputdate.setonclicklistener(new onclicklistener() {
*
* @override public void onclick(view v) { datetimepickdialogutil
* datetimepickdialog=new
* datetimepickdialogutil(sinvestigateactivity.this,initdatetime);
* datetimepickdialog.datetimepickdialog(inputdate);
*
* } });
*
* @author
*/
public class datetimepickdialogutil implements ondatechangedlistener,
ontimechangedlistener {
private datepicker datepicker;
private timepicker timepicker;
private alertdialog ad;
private string datetime;
private string initdatetime;
private activity activity;

/**
* 日期時間彈出選擇框構造函數
*
* @param activity
* :調用的父activity
* @param initdatetime
* 初始日期時間值,作為彈出窗口的標題和日期時間初始值
*/
public datetimepickdialogutil(activity activity, string initdatetime) {
this.activity = activity;
this.initdatetime = initdatetime;

}

public void init(datepicker datepicker, timepicker timepicker) {
calendar calendar = calendar.getinstance();
if (!(null == initdatetime || "".equals(initdatetime))) {
calendar = this.getcalendarbyinintdata(initdatetime);
} else {
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);
}

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));
}

/**
* 彈出日期時間選擇框方法
*
* @param inputdate
* :為需要設置的日期時間文本編輯框
* @return
*/
public alertdialog datetimepickdialog(final edittext inputdate) {
linearlayout datetimelayout = (linearlayout) activity
.getlayoutinflater().inflate(r.layout.common_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) {
inputdate.settext(datetime);
}
})
.setnegativebutton("取消", new dialoginterface.onclicklistener() {
public void onclick(dialoginterface dialog, int whichbutton) {
inputdate.settext("");
}
}).show();

ondatechanged(null, 0, 0, 0);
return ad;
}

public void ontimechanged(timepicker view, int hourofday, int minute) {
ondatechanged(null, 0, 0, 0);
}

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("yyyy年mm月dd日 hh:mm");

datetime = sdf.format(calendar.gettime());
ad.settitle(datetime);
}

/**
* 實現將初始日期時間2012年07月02日 16:45 拆分成年 月 日 時 分 秒,並賦值給calendar
*
* @param initdatetime
* 初始日期時間值 字元串型
* @return calendar
*/
private calendar getcalendarbyinintdata(string initdatetime) {
calendar calendar = calendar.getinstance();

// 將初始日期時間2012年07月02日 16:45 拆分成年 月 日 時 分 秒
string date = splitestring(initdatetime, "日", "index", "front"); // 日期
string time = splitestring(initdatetime, "日", "index", "back"); // 時間

string yearstr = splitestring(date, "年", "index", "front"); // 年份
string monthandday = splitestring(date, "年", "index", "back"); // 月日

string monthstr = splitestring(monthandday, "月", "index", "front"); // 月
string daystr = splitestring(monthandday, "月", "index", "back"); // 日

string hourstr = splitestring(time, ":", "index", "front"); // 時
string minutestr = splitestring(time, ":", "index", "back"); // 分

int currentyear = integer.valueof(yearstr.trim()).intvalue();
int currentmonth = integer.valueof(monthstr.trim()).intvalue() - 1;
int currentday = integer.valueof(daystr.trim()).intvalue();
int currenthour = integer.valueof(hourstr.trim()).intvalue();
int currentminute = integer.valueof(minutestr.trim()).intvalue();

calendar.set(currentyear, currentmonth, currentday, currenthour,
currentminute);
return calendar;
}

/**
* 截取子串
*
* @param srcstr
* 源串
* @param pattern
* 匹配模式
* @param indexorlast
* @param frontorback
* @return
*/
public static string splitestring(string srcstr, string pattern,
string indexorlast, string frontorback) {
string result = "";
int loc = -1;
if (indexorlast.equalsignorecase("index")) {
loc = srcstr.indexof(pattern); // 取得字元串第一次出現的位置
} else {
loc = srcstr.lastindexof(pattern); // 最後一個匹配串的位置
}
if (frontorback.equalsignorecase("front")) {
if (loc != -1)
result = srcstr.substring(0, loc); // 截取子串
} else {
if (loc != -1)
result = srcstr.substring(loc 1, srcstr.length()); // 截取子串
}
return result;
}

}

/datetimepicker/src/com/wwj/datetimepicker/datetimepickeractivity.java
package com.wwj.datetimepicker;

import android.app.activity;
import android.os.bundle;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.edittext;

/**
* 時間拾取器界面
*
* @author wwj_748
*
*/
public class datetimepickeractivity extends activity {
/** called when the activity is first created. */
private edittext startdatetime;
private edittext enddatetime;

private string initstartdatetime = "2013年9月3日 14:44"; // 初始化開始時間
private string initenddatetime = "2014年8月23日 17:44"; // 初始化結束時間

@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);

// 兩個輸入框
startdatetime = (edittext) findviewbyid(r.id.inputdate);
enddatetime = (edittext) findviewbyid(r.id.inputdate2);

startdatetime.settext(initstartdatetime);
enddatetime.settext(initenddatetime);

startdatetime.setonclicklistener(new onclicklistener() {
public void onclick(view v) {

datetimepickdialogutil datetimepickdialog = new datetimepickdialogutil(
datetimepickeractivity.this, initenddatetime);
datetimepickdialog.datetimepickdialog(startdatetime);

}
});

enddatetime.setonclicklistener(new onclicklistener() {

public void onclick(view v) {
datetimepickdialogutil datetimepickdialog = new datetimepickdialogutil(
datetimepickeractivity.this, initenddatetime);
datetimepickdialog.datetimepickdialog(enddatetime);
}
});
}
}

自定義界面:
/datetimepicker/res/layout/common_datetime.xml

android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

android:id="@ id/datepicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:calendarviewshown="false" />

android:id="@ id/timepicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

2. android中xml中有些控制項的屬性裡面有 "app:.." ,此處的app:是什麼意思和一般的android:有什麼區別

區別是:這兩個是聲明的不同的命名空間,android的是系統的,app是自定義的。


android自定義控制項的屬性,在xml中使用自己自定義的attr的時候,其中有一步就是要自定義一個xml的命名空間後然後再給自定義屬性賦值,現在發現不知道什麼時候開始android把這個改了,現在發現可以統一用
xmlns:app="http://schemas.android.com/apk/res-auto"
而不是原來的:
xmlns:app="http://schemas.android.com/apk/app的package名"
還有人提到在作為lib被使用的時候,也應該用res-auto

所以說區別就是如果你http://schemas.android.com/apk/後面寫的是res/包名,那就是相關包名下的自定義屬性,而res-auto就是所有的自定義包名。

熱點內容
接龍源碼 發布:2024-11-19 10:14:48 瀏覽:33
驅動軟體哪個安卓版好 發布:2024-11-19 10:08:28 瀏覽:703
伺服器一鍵搭建java環境 發布:2024-11-19 10:08:27 瀏覽:729
布丁少兒編程 發布:2024-11-19 09:57:11 瀏覽:98
vb資料庫數組 發布:2024-11-19 09:23:40 瀏覽:828
安卓游戲數據保存在哪裡找 發布:2024-11-19 09:22:02 瀏覽:310
解壓出來的文件亂碼 發布:2024-11-19 09:15:40 瀏覽:940
北航ftp是多少 發布:2024-11-19 09:15:32 瀏覽:822
瀏覽保存密碼如何取消 發布:2024-11-19 09:10:17 瀏覽:90
安卓怎麼關簡訊重復提醒 發布:2024-11-19 09:02:00 瀏覽:636
网站地图