美文网首页
仿ios滚轮日期筛选

仿ios滚轮日期筛选

作者: it奔跑在路上 | 来源:发表于2018-11-01 17:28 被阅读0次
    效果图

    仿ios滚轮,根据 type 可自主选择时间显示的类型,具体见 MainActivity 代码注释

    依赖两个包,可以 点我下载,需要解压

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    
    
        private TimePickerView pvTime;
        /**
         * 可自主选择时间显示的类型
         * 只显示年则设置成 true, false, false, false, false, false 即可
         * 设置成 true, true, true, true, true, true 则年月日时分秒都显示
         */
        boolean[] type = {true, true, true, true, true, true};
        private TextView tv;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            initTimePicker();
            Button btn_Time = (Button) findViewById(R.id.btn_Time);
            tv = findViewById(R.id.tv);
            btn_Time.setOnClickListener(this);
        }
    
        private void initTimePicker() {//Dialog 模式下,在底部弹出
    
            pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
                @Override
                public void onTimeSelect(Date date, View v) {
                    tv.setText(getTime(date));
                }
            })
                    .setTimeSelectChangeListener(  new OnTimeSelectChangeListener() {
                        @Override
                        public void onTimeSelectChanged(Date date) {
                        }
                    })
                    .setType(type)
                    .build();
        }
    
        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.btn_Time && pvTime != null) {
                pvTime.show(v);//弹出时间选择器
            }
        }
    
        private String getTime(Date date) {//可根据需要自行截取数据显示
            return DateUtil.getPickedYear(date)+"年"+DateUtil.getPickedMonth(date)+"月"+
                    DateUtil.getPickedDay(date)+"日"+DateUtil.getPickedHour(date)+":"
                    +DateUtil.getPickedMinute(date)+":"+DateUtil.getPickedSecond(date);
        }
    }
    
    /**
     * 时间处理
     */
    public class DateUtil {
    
        /**
         * 格式化日期:比如:2018-08-07 13:50:10
         *
         * @param time
         * @return
         */
        public static String formatTime(String time) {
            if (!TextUtils.isEmpty(time)) {
                time = time.trim();
                if (time.contains(" ")) {
                    String[] timeArray = time.split(" ");
                    return timeArray[0];
                }else {
                    return time;
                }
            }
            return "";
        }
    
        /**
         * 保留两位小数
         *
         * @return
         */
        public static String formatFloat(String numStr) {
            if (!TextUtils.isEmpty(numStr)) {
                DecimalFormat df = new DecimalFormat("0.00");
                float f = Float.parseFloat(numStr);
                return df.format(f);
            }
            //numStr不合法则返回默认值
            return "0.00";
        }
    
        /**
         * 获取现在时间
         *
         * @return返回字符串格式 yyyy-MM-dd HH:mm:ss
         */
      public static String formatDate(Date date) {
          if (date == null){
              return "";
          }
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          return sdf.format(date);
      }
    
        /**
         * 获取选择的年:日期格式是固定的
         * @param date
         * @return
         */
        public static String getPickedYear(Date date){
            String time = formatDate(date);
            String splitDate = time.split(" ")[0];
            return splitDate.substring(0,splitDate.indexOf("-"));
        }
    
        /**
         * 获取选择的月:日期格式是固定的
         * @param date
         * @return
         */
        public static String getPickedMonth(Date date){
            String time = formatDate(date);
            String splitDate = time.split(" ")[0];
            return splitDate.substring(splitDate.indexOf("-") + 1,splitDate.lastIndexOf("-"));
        }
    
        /**
         * 获取选择的日:日期格式是固定的
         * @param date
         * @return
         */
        public static String getPickedDay(Date date){
            String time = formatDate(date);
            String splitDate = time.split(" ")[0];
            return splitDate.substring(splitDate.lastIndexOf("-")+1);
        }
    
        /**
         * 获取选择的时:日期格式是固定的
         * @param date
         * @return
         */
        public static String getPickedHour(Date date){
            String time = formatDate(date);
            String splitDate = time.split(" ")[1];
            return splitDate.substring(0,splitDate.indexOf(":"));
        }
    
        /**
         * 获取选择的分:日期格式是固定的
         * @param date
         * @return
         */
        public static String getPickedMinute(Date date){
            String time = formatDate(date);
            String splitDate = time.split(" ")[1];
            return splitDate.substring(splitDate.indexOf(":") + 1,splitDate.lastIndexOf(":"));
        }
    
        /**
         * 获取选择的秒:日期格式是固定的
         * @param date
         * @return
         */
        public static String getPickedSecond(Date date){
            String time = formatDate(date);
            String splitDate = time.split(" ")[1];
            return splitDate.substring(splitDate.lastIndexOf(":")+1);
        }
    }
    

    activity_main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="vertical">
    
        <TextView
            android:id="@+id/tv"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="center"
            android:text=""/>
    
        <Button
            android:id="@+id/btn_Time"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_margin="10dp"
            android:text="时间选择器"/>
    </LinearLayout>
    

    记得依赖包 implementation project(':pickerview_library')

    相关文章

      网友评论

          本文标题:仿ios滚轮日期筛选

          本文链接:https://www.haomeiwen.com/subject/cjixxqtx.html