栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android 滚动时间选择的示例代码

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android 滚动时间选择的示例代码

效果图 复制代码直接用!!!!


1.导入依赖

implementation 'com.bigkoo:pickerview:2.1.0'

2.三个bean类
PickerViewData

public class PickerViewData implements IPickerViewData {
  private String content;

  public PickerViewData(String content) {
    this.content = content;
  }

  public void setContent(String content) {
    this.content = content;
  }

  @Override
  public String getPickerViewText() {
    return content;
  }
}

ProvinceBean

public class ProvinceBean implements IPickerViewData {
  private long id;
  private String name;
  private String description;
  private String others;

  public ProvinceBean(long id,String name,String description,String others){
    this.id = id;
    this.name = name;
    this.description = description;
    this.others = others;
  }

  public long getId() {
    return id;
  }

  public void setId(long id) {
    this.id = id;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getDescription() {
    return description;
  }

  public void setDescription(String description) {
    this.description = description;
  }

  public String getOthers() {
    return others;
  }

  public void setOthers(String others) {
    this.others = others;
  }

  //这个用来显示在PickerView上面的字符串,PickerView会通过IPickerViewData获取getPickerViewText方法显示出来。
  @Override
  public String getPickerViewText() {
    return name;
  }
}

TimeBean

public class TimeBean implements IPickerViewData {
  private String time;

  public TimeBean(String time) {
    this.time = time;
  }

  public String getTime() {
    return time;
  }

  public void setTime(String time) {
    this.time = time;
  }

  @Override
  public String getPickerViewText() {
    return time;
  }
}

3,布局文件activity_main


  
  

  

4.MainActivity

public class MainActivity extends Activity {


  private ArrayList options1Items = new ArrayList<>();
  private ArrayList> options2Items = new ArrayList<>();
  private ArrayList>> options3Items = new ArrayList<>();
  private TextView tvTime, tvOptions;
  TimePickerView pvTime;
  OptionsPickerView pvOptions;
  View vMasker;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    vMasker=findViewById(R.id.vMasker);
    tvTime=(TextView) findViewById(R.id.tvTime);
    tvOptions=(TextView) findViewById(R.id.tvOptions);
    //时间选择器
    pvTime = new TimePickerView(this, TimePickerView.Type.MONTH_DAY_HOUR_MIN);
    //控制时间范围
//    Calendar calendar = Calendar.getInstance();
//    pvTime.setRange(calendar.get(Calendar.YEAR) - 20, calendar.get(Calendar.YEAR));//要在setTime 之前才有效果哦
    pvTime.setTime(new Date());
    pvTime.setCyclic(false);
    pvTime.setCancelable(true);
    //时间选择后回调
    pvTime.setonTimeSelectListener(new TimePickerView.onTimeSelectListener() {

      @Override
      public void onTimeSelect(Date date) {
 tvTime.setText(getTime(date));
      }
    });
    //弹出时间选择器
    tvTime.setonClickListener(new View.onClickListener() {

      @Override
      public void onClick(View v) {
 pvTime.show();
      }
    });


    //选项选择器
    pvOptions = new OptionsPickerView(this);
    //选项1
    options1Items.add(new TimeBean("现在"));
    options1Items.add(new TimeBean("今天"));
    options1Items.add(new TimeBean("明天"));
    options1Items.add(new TimeBean("后天"));


    //选项 1 2
    ArrayList options2Items_01=new ArrayList<>();
    options2Items_01.add("--");

    //22
    ArrayList options2Items_02=getTodayHourData();
    //32
    ArrayList options2Items_03=getHourData();
    //32
    ArrayList options2Items_04=getHourData();

    options2Items.add(options2Items_01);
    options2Items.add(options2Items_02);
    options2Items.add(options2Items_03);
    options2Items.add(options2Items_04);

    //选项3
    ArrayList> options3Items_01 = new ArrayList<>();
    ArrayList> options3Items_02 = new ArrayList<>();
    ArrayList> options3Items_03 = new ArrayList<>();
    ArrayList> options3Items_04 = new ArrayList<>();


    ArrayList options3Items_01_01=new ArrayList<>();
    options3Items_01_01.add(new PickerViewData("--"));
    options3Items_01.add(options3Items_01_01);
    options3Items_02 =getmD2();
    options3Items_03 =getmD();
    options3Items_04 =getmD();



    options3Items.add(options3Items_01);
    options3Items.add(options3Items_02);
    options3Items.add(options3Items_03);
    options3Items.add(options3Items_04);


    //三级联动效果
    pvOptions.setPicker(options1Items, options2Items, options3Items, true);
    //设置选择的三级单位
//    pwOptions.setLabels("省", "市", "区");
    pvOptions.setTitle(" ");
    pvOptions.setCyclic(false, false, false);
    //设置默认选中的三级项目
    //监听确定选择按钮
    pvOptions.setSelectOptions(0, 0, 0);
    pvOptions.setonoptionsSelectListener(new OptionsPickerView.onOptionsSelectListener() {

      @Override
      public void onOptionsSelect(int options1, int option2, int options3) {
 //返回的分别是三个级别的选中位置
 String tx = options1Items.get(options1).getPickerViewText()
     + options2Items.get(options1).get(option2)
     + options3Items.get(options1).get(option2).get(options3).getPickerViewText();
 tvOptions.setText(tx);
 vMasker.setVisibility(View.GONE);
      }
    });
    //点击弹出选项选择器
    tvOptions.setonClickListener(new View.onClickListener() {

      @Override
      public void onClick(View v) {
 pvOptions.show();
      }
    });
  }

  public static String getTime(Date date) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    return format.format(date);
  }

  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
      if(pvOptions.isShowing()||pvTime.isShowing()){
 pvOptions.dismiss();
 pvTime.dismiss();
 return true;
      }
      if(pvTime.isShowing()){
 pvTime.dismiss();
 return true;
      }
    }
    return super.onKeyDown(keyCode, event);
  }

  
  private ArrayList getTodayHourData(){
    int max =currentHour();
    if (max<23&¤tMin()>45){
      max=max+1;
    }
    ArrayList lists=new ArrayList<>();
    for (int i=max;i<24;i++){
      lists.add(i+"点");
    }
    return lists;
  }

  
  private ArrayList getHourData(){
    ArrayList lists=new ArrayList<>();
    for (int i=0;i<24;i++){
      lists.add(i+"点");
    }
    return lists;
  }

  
  private ArrayList getMinData(){
    ArrayList dataArrayList=new ArrayList<>();
    for (int i=0;i<6;i++){
      dataArrayList.add(new PickerViewData((i*10)+"分"));
    }
    return dataArrayList;
  }
  
  private ArrayList> getmD(){
    ArrayList> d=new ArrayList<>();
    for (int i=0;i<24;i++){
      d.add(getMinData());
    }
    return d;
  }

  
  private ArrayList> getmD2(){
    //14
    int max =currentHour();
    if (currentMin()>45){
      max=max+1;
    }
    int value =24-max;
    ArrayList> d=new ArrayList<>();
    for (int i=0;i getTodyMinData(){

    int min = currentMin();
    int current=0;
    if (min>35&&min<=45){
      current =0;
    }else if (min>45&&min<=55){
      current=1;
    } else if (min>55){
      current=2;
    }else if (min<=5){
      current=2;
    }else if (min>5&&min<=15){
      current=3;
    }else if (min>15&&min<=25){
      current=4;
    }else if (min>25&&min<=35){
      current=5;
    }
    int max =currentHour();
    if (max>23&& min>35){
      current=5;
    }

    ArrayList dataArrayList=new ArrayList<>();
    for (int i=current;i<6;i++){
      dataArrayList.add(new PickerViewData((i*10)+"分"));
    }
    return dataArrayList;
  }

  private int currentMin(){
    Calendar cal = Calendar.getInstance();
    return cal.get(Calendar.MINUTE);
  }


  private int currentHour(){
    Calendar cal = Calendar.getInstance();
    return cal.get(Calendar.HOUR_OF_DAY);
  }
}

到此这篇关于Android 滚动时间选择的示例代码的文章就介绍到这了,更多相关Android 滚动时间选择内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/153678.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号