android 时间选择器demo

这几天写了一个类似日程的项目,看到小米的日程里面的时间选择器挺好看的,想要简单模仿一下。奈何能力有限,没有写成想象中那么完美,但是还好没让自己太失望,做成了一个还算能用的时间选择器。

一、下面就是我做的时间选择器的相关界面,这个时间选择器实现起来是很简单的:

android 时间选择器demo_第1张图片

二、会用到的layout和style

1、style里面的代码:(先打开下图文件,再把代码复制到里面)

android 时间选择器demo_第2张图片

    
    

2、新建lauout_30dp



 

三、下面就是实现的相关代码了:

1、layout代码:


        
            
                
            
            
            

            
                
                    
                    

                

                
                    
                    
                

            


            

2、对应的java代码:

public class enSchedule extends AppCompatActivity implements View.OnClickListener{

    private TextView textview3,textview4,start,end;
    private TimePickerView pvTime, pvCustomTime, pvCustomLunar;
    private int i ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.en_richeng);

        initTimePicker();
        textview3 = (TextView)findViewById(R.id.richeng_textview3);
        textview4 = (TextView)findViewById(R.id.richeng_textview4);
        start = (TextView)findViewById(R.id.start);
        end = (TextView)findViewById(R.id.end);

        textview3.setOnClickListener(this);
        textview4.setOnClickListener(this);
 }

        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.richeng_textview3 && pvTime != null) {
                pvTime.show(v);//弹出时间选择器,传递参数过去,回调的时候则可以绑定此view
                i = 0;
            }else if(v.getId() == R.id.richeng_textview4){
                pvTime.show(v);
                i = 1;
            }
}

        private void initTimePicker() {//Dialog 模式下,在底部弹出
            pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
                @Override
                public void onTimeSelect(Date date, View v) {
                    if(i == 0){
                        String mStartTime = getTime(date);
                        start.setText(mStartTime);
                    }else if(i == 1){
                        String mEndTime = getTime(date);
                        end.setText(mEndTime);
                    }
                }
            })
                    .setTimeSelectChangeListener(new OnTimeSelectChangeListener() {
                        @Override
                        public void onTimeSelectChanged(Date date) {
                            Log.i("pvTime", "onTimeSelectChanged");
                        }
                    })
//dialog的格式设置
                    .setType(new boolean[]{true, true, true, true, true, false})
//这里的数组是可以自己定义的,每一位表示的分别是年,月,日,时,分,秒,我现在的设置是没有显示秒
                    .isDialog(true) //默认设置false ,内部实现将DecorView 作为它的父控件。
                    .build();
            Dialog mDialog = pvTime.getDialog();
            if (mDialog != null) {
                FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
                        ViewGroup.LayoutParams.MATCH_PARENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT,
                        Gravity.BOTTOM);
                params.leftMargin = 0;
                params.rightMargin = 0;
                pvTime.getDialogContainerLayout().setLayoutParams(params);
                Window dialogWindow = mDialog.getWindow();
                if (dialogWindow != null) {
                    dialogWindow.setWindowAnimations(com.bigkoo.pickerview.R.style.picker_view_slide_anim);//修改动画样式
                    dialogWindow.setGravity(Gravity.BOTTOM);//改成Bottom,底部显示
                }
            }
        }

    private String getTime(Date date) {//可根据需要自行截取数据显示
        Log.d("getTime()", "choice date millis: " + date.getTime());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        return format.format(date);
    }
}

这样就完成了时间选择器的显示,可以运行到虚拟机或者真机上测试了。

 

 

 

你可能感兴趣的:(android,studio)