1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android 年月日时分秒控件 Android 年月日时分秒时间选择器

android 年月日时分秒控件 Android 年月日时分秒时间选择器

时间:2019-04-05 05:34:47

相关推荐

android 年月日时分秒控件 Android 年月日时分秒时间选择器

项目开发中 如果你需要一个年月日时分秒类型时间选择器 用DataPicker和TimePicker联动去实现得话 会非常得不方便 会碰到布局不协调得问题 灵活性很低 可实现的布局也就两种 所以为了更好的效果 个人建议你使用 numberPicker 数字选择器 去实现 本人思路是 numberpicker结合PopupWindow 去实现 简单实现代码奉上 欢迎各位大神指正

第一步 popupwindow 的布局效果(底部有图)及xml文件

可根据自己得需要布局 底部效果图 是本案样例

第二步 自定义PopupWindow java 代码

public SPopupWindow(Context context, View.OnClickListener clickListener){

// 填充试图 实例化空间

this.view = LayoutInflater.from(context).inflate(R.layout.popupwindow,null);

day = (NumberPicker) view.findViewById(R.id.day);

hour = (NumberPicker) view.findViewById(R.id.hour);

minte = (NumberPicker) view.findViewById(R.id.minte);

time = (NumberPicker) view.findViewById(R.id.time);

quxiao = (Button) view.findViewById(R.id.quxiao);

year = (NumberPicker) view.findViewById(R.id.year);

month = (NumberPicker) view.findViewById(R.id.month);

// 按钮点击事件

this.setOutsideTouchable(true);

quxiao.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

dismiss();

}

});

queren = (Button) view.findViewById(R.id.queren);

queren.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

int yearValue = year.getValue();

int monthValue = month.getValue();

int dayValue = day.getValue();

int timeValue = time.getValue();

int hourValue = hour.getValue();

int minteValue = minte.getValue();

String time = ""+yearValue+monthValue+dayValue+timeValue+hourValue+minteValue;

if (onClickButton!=null){

onClickButton.OnClickButton(time);

}

dismiss();

}

});

this.view.setOnTouchListener(new View.OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

int height = view.findViewById(R.id.pop_layout).getTop();

int y = (int) event.getY();

if (event.getAction() == MotionEvent.ACTION_UP) {

if (y < height) {

dismiss();

}

}

return true;

}

});

/* 设置弹出窗口特征 */

// 设置视图

this.setContentView(this.view);

// 设置弹出窗体的宽和高

this.setHeight(RelativeLayout.LayoutParams.WRAP_CONTENT);

this.setWidth(RelativeLayout.LayoutParams.MATCH_PARENT);

// 设置弹出窗体可点击

this.setFocusable(true);

// 实例化一个ColorDrawable颜色为半透明

ColorDrawable dw = new ColorDrawable(0xb0000000);

// 设置弹出窗体的背景

this.setBackgroundDrawable(dw);

// 获取当前时间 取出年月日时分 作为当前得时间基点

long t = System.currentTimeMillis();

SimpleDateFormat df1 = new SimpleDateFormat("yyyy");

SimpleDateFormat df2 = new SimpleDateFormat("MM");

SimpleDateFormat df3 = new SimpleDateFormat("dd");

SimpleDateFormat df4 = new SimpleDateFormat("HH");

SimpleDateFormat df5 = new SimpleDateFormat("mm");

String y = df1.format(t);

final String m = df2.format(t);

final String d = df3.format(t);

final String h = df4.format(t);

final String mi = df5.format(t);

Log.d("tag", "SPopupWindow: BBB---"+y+m+d+h+mi);

final String[] noons = {"上午","下午"};

day.setMaxValue(31);

day.setMinValue(1);

time.setDisplayedValues(noons);

day.setValue(Integer.valueOf(d));

time.setMaxValue(noons.length-1);

time.setMinValue(0);

time.setValue(0);

hour.setMaxValue(12);

hour.setMinValue(1);

hour.setValue(Integer.valueOf(h));

minte.setMaxValue(60);

minte.setMinValue(1);

minte.setValue(Integer.valueOf(mi));

year.setMinValue(Integer.valueOf(y));

year.setMaxValue(Integer.valueOf(y)+20);

year.setValue(Integer.valueOf(y));

month.setMinValue(1);

month.setMaxValue(12);

month.setValue(Integer.valueOf(m));

// numberpicker 内容的变化监听 时间得逻辑处理可在此处

day.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

Log.d(“tt”, “onValueChange: day–>”+newVal);

day.setValue(newVal);

if (oldVal!=newVal){

hour.setValue(1);

}else {

hour.setValue(Integer.valueOf(h));

}

}

});

time.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

Log.d(“tt”, “onValueChange: tiem–>”+noons[newVal].toString());

time.setValue(newVal);

}

});

hour.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

Log.d("tt", "onValueChange: hour-->"+ newVal);

hour.setValue(newVal);

if (oldVal!=newVal){

minte.setValue(1);

}else {

minte.setValue(Integer.valueOf(mi));

}

}

});

minte.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

}

});

month.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

month.setValue(newVal);

if (oldVal!=newVal){

day.setValue(1);

}else {

day.setValue(Integer.valueOf(d));

}

}

});

year.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

year.setValue(newVal);

if (oldVal!= newVal){

month.setValue(1);

}else {

month.setValue(Integer.valueOf(m));

}

}

});

}

// 定义按钮得点击接口

public interface OnClickButton{

void OnClickButton(String s);

}

// 设置按钮点击方法

public void setOnCilckButton(OnClickButton onClickButton){

this.onClickButton= onClickButton;

}

第三步 在需要activity 中实例化popupwindow 并调用

takePhotoPopWin = new SPopupWindow(this,this);

// 设置Popupwindow显示位置(从底部弹出)

takePhotoPopWin.showAtLocation(findViewById(R.id.main_view), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);

params = getWindow().getAttributes();

//当弹出Popupwindow时,背景变半透明

params.alpha=0.7f;

getWindow().setAttributes(params);

//设置Popupwindow关闭监听,当Popupwindow关闭,背景恢复1f

takePhotoPopWin.setOnDismissListener(new PopupWindow.OnDismissListener() {

@Override

public void onDismiss() {

params = getWindow().getAttributes();

params.alpha=1f;

getWindow().setAttributes(params);

}

});

takePhotoPopWin.setOnCilckButton(new SPopupWindow.OnClickButton() {

@Override

public void OnClickButton(String s) {

Log.d(“tt”, “OnClickButton:———– “+s);

text.setText(s);

}

效果图

});

xml布局效果

此时 属于你自己的时间选择器 就完成了 超级简单

喜欢得可以点个赞

下载链接 /download/naide_s/9992028

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。