我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么在Android应用中实现一个IOS 滚轮选择控件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么在Android应用中实现一个IOS 滚轮选择控件

今天就跟大家聊聊有关怎么在Android应用中实现一个IOS 滚轮选择控件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

代码如下:

public class Util {    public interface TimerPickerCallBack {    void onTimeSelect(String date);  }    public static void alertTimerPicker(Context context, TimePickerView.Type type, final String format, final TimerPickerCallBack callBack) {    TimePickerView pvTime = new TimePickerView(context, type);    //控制时间范围    //    Calendar calendar = Calendar.getInstance();    //    pvTime.setRange(calendar.get(Calendar.YEAR) - 20, calendar.get(Calendar.YEAR));    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));        SimpleDateFormat sdf = new SimpleDateFormat(format);        callBack.onTimeSelect(sdf.format(date));      }    });    pvTime.setTextSize(16);    //弹出时间选择器    pvTime.show();  }    public interface OnWheelViewClick {    void onClick(View view, int postion);  }    public static void alertBottomWheelOption(Context context, ArrayList<?> list, final OnWheelViewClick click) {    final PopupWindow popupWindow = new PopupWindow();    View view = LayoutInflater.from(context).inflate(R.layout.layout_bottom_wheel_option, null);    TextView tv_confirm = (TextView) view.findViewById(R.id.btnSubmit);    final WheelView wv_option = (WheelView) view.findViewById(R.id.wv_option);    wv_option.setAdapter(new ArrayWheelAdapter(list));    wv_option.setCyclic(false);    wv_option.setTextSize(16);    tv_confirm.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View view) {        popupWindow.dismiss();        click.onClick(view, wv_option.getCurrentItem());      }    });    view.findViewById(R.id.btnCancel).setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View view) {        // TODO: 2016/8/11 0011 取消        popupWindow.dismiss();      }    });    view.setOnTouchListener(new View.OnTouchListener() {      @Override      public boolean onTouch(View view, MotionEvent motionEvent) {        int top = view.findViewById(R.id.ll_container).getTop();        if (motionEvent.getAction() == MotionEvent.ACTION_UP) {          int y = (int) motionEvent.getY();          if (y < top) {            popupWindow.dismiss();          }        }        return true;      }    });    popupWindow.setContentView(view);    popupWindow.setOutsideTouchable(true);    popupWindow.setFocusable(true);    popupWindow.setBackgroundDrawable(new BitmapDrawable());    popupWindow.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);    popupWindow.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);    popupWindow.showAtLocation(((ViewGroup) ((Activity) context).findViewById(android.R.id.content)).getChildAt(0), Gravity.CENTER, 0, 0);  }}

单项选择

这里是模拟传入 ArrayList 形式的 String 类型 :

// 单项选择    for (int i = 0; i <= 10; i++) {      mList.add("模拟数据" + i);    }    tv_single_option.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {        Util.alertBottomWheelOption(MainActivity.this, mList, new Util.OnWheelViewClick() {          @Override          public void onClick(View view, int postion) {            Toast.makeText(MainActivity.this, mList.get(postion), Toast.LENGTH_SHORT).show();          }        });      }    });

补充:我们实际项目中用法可能是传入一个实体对象,那么我们到 WheelView 中找到设置显示内容的方法:

  private String getContentText(Object item) {    String contentText = item.toString();    try {      Class<?> clz = item.getClass();      Method m = clz.getMethod(GETPICKERVIEWTEXT);      contentText = m.invoke(item, new Object[0]).toString();    } catch (NoSuchMethodException e) {    } catch (InvocationTargetException e) {    } catch (IllegalAccessException e) {    } catch (Exception e){    }    return contentText;  }

根据以上代码,可以看到如果是一个实体对象,那么就是通过对象内部定义的一个方法名为 GETPICKERVIEWTEXT(静态常量=”getPickerViewText”)的返回值来作为显示内容,

所以在创建对象的时候,要注意在对象内部添加一个 getPickerViewText()方法,代码如下:

public class TypeBean {  private int id;  private String name;  public TypeBean(int id, String name) {    this.id = id;    this.name = name;  }  public int getId() {    return id;  }  public void setId(int id) {    this.id = id;  }  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  //这个用来显示在PickerView上面的字符串,PickerView会通过反射获取getPickerViewText方法显示出来。  public String getPickerViewText() {    //这里还可以判断文字超长截断再提供显示    return name;  }}

日期选择

这里是传入 选择日期类型,和 回调时间格式 就能直接得到想要的结果,

@Override  public void onClick(View v) {    String format = "";    TimePickerView.Type type = null;    switch (v.getId()) {      case R.id.btn_ymdhm:        type = TimePickerView.Type.ALL;        format = "yyyy-MM-dd HH:mm";        break;      case R.id.btn_ymdh:        type = TimePickerView.Type.YEAR_MONTH_DAY_HOUR;        format = "yyyy-MM-dd HH";        break;      case R.id.btn_ymd:        type = TimePickerView.Type.YEAR_MONTH_DAY;        format = "yyyy-MM-dd";        break;      case R.id.btn_mdhm:        type = TimePickerView.Type.MONTH_DAY_HOUR_MIN;        format = "MM-dd HH:mm";        break;      case R.id.btn_hm:        type = TimePickerView.Type.HOURS_MINS;        format = "HH:mm";        break;      case R.id.btn_ym:        type = TimePickerView.Type.YEAR_MONTH;        format = "yyyy-MM";        break;    }    Util.alertTimerPicker(this, type, format, new Util.TimerPickerCallBack() {      @Override      public void onTimeSelect(String date) {        Toast.makeText(TestActivity.this, date, Toast.LENGTH_SHORT).show();      }    });  }

条件选择

private ArrayList<ProvinceBean> options1Items = new ArrayList<ProvinceBean>();private ArrayList<ArrayList<String>> options2Items = new ArrayList<ArrayList<String>>();private ArrayList<ArrayList<ArrayList<String>>> options3Items = new ArrayList<ArrayList<ArrayList<String>>>();OptionsPickerView pvOptions;private void showOptions(){    //选项选择器    pvOptions = new OptionsPickerView(this);    // 初始化三个列表数据    DataModel.initData(options1Items, options2Items, options3Items);    //三级联动效果    pvOptions.setPicker(options1Items, options2Items, options3Items, true);    //设置选择的三级单位//    pwOptions.setLabels("省", "市", "区");    pvOptions.setTitle("选择城市");    pvOptions.setCyclic(false, false, false);    //设置默认选中的三级项目    //监听确定选择按钮    pvOptions.setSelectOptions(1, 1, 1);    pvOptions.setTextSize(18);    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);        tvOptions.setText(tx);        vMasker.setVisibility(View.GONE);      }    });    //点击弹出选项选择器    tvOptions.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {        pvOptions.show();      }    });  }

看完上述内容,你们对怎么在Android应用中实现一个IOS 滚轮选择控件有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么在Android应用中实现一个IOS 滚轮选择控件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在Android应用中实现一个IOS 滚轮选择控件

今天就跟大家聊聊有关怎么在Android应用中实现一个IOS 滚轮选择控件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。代码如下:public class Util { /**
2023-05-31

Android 实现IOS 滚轮选择控件的实例(源码下载)

Android 实现IOS 滚轮选择控件的实例 最近根据项目需要,整理了一个相对比较全面的 WheelView 使用控件,借用之前看到的一句话来说,就是站在巨人肩膀上,进行了一些小调整。 这里先贴上效果图一般常用的时间选择格式,,单项选择
2022-06-06

怎么在Android应用中实现㝉滑动选择控件

这篇文章给大家介绍怎么在Android应用中实现㝉滑动选择控件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。实现步骤这里分解为3个动作:Down、Move、Up来进行分析,博主文采不好,大家直接看流程图吧!!代码分析前
2023-05-31

android开发中怎么实现一个日期选择控件

android开发中怎么实现一个日期选择控件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。效果如下:具体实现方法为:先新建一个安卓项目DoubleDatePicker,在res
2023-05-31

怎么在Android应用中利用ListView实现一个选择模式

怎么在Android应用中利用ListView实现一个选择模式?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。ListView 定义了choiceMode属性,描述是这样的:用于
2023-05-31

使用c#怎么实现一个颜色选择控件

使用c#怎么实现一个颜色选择控件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。代码://颜色拾取框using System;using System.ComponentMode
2023-06-14

怎么在Android应用中利用控件实现一个对话框功能

怎么在Android应用中利用控件实现一个对话框功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、自定义提示对话框DialogM.Builder builder = new
2023-05-31

怎么在Android应用中实现一个选项卡功能

怎么在Android应用中实现一个选项卡功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。选项卡(TabHost)方便的在窗口上设置多个标签页,每个标签页相当于获得一个与外
2023-05-31

怎么在Android中实现一个自定义控件

今天就跟大家聊聊有关怎么在Android中实现一个自定义控件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先定义一个layout实现按钮内部布局:
2023-05-31

怎么在Android应用中利用RecyclerView实现一个分页滚动功能

怎么在Android应用中利用RecyclerView实现一个分页滚动功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、需求分析最近公司项目要实现一个需求要满足以下功能
2023-05-31

怎么在Android中实现一个双重选择框功能

这期内容当中小编将会给大家带来有关怎么在Android中实现一个双重选择框功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。原理:定义四个RadioGroup,通过第一个RadioGroup的选择来控制其
2023-05-30

怎么在Android应用中利用CoordinatorLayout实现一个标题滚动效果

本篇文章为大家展示了怎么在Android应用中利用CoordinatorLayout实现一个标题滚动效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在Material Design里,Coordi
2023-05-31

怎么在Android应用中利用TextSwitcher实现一个上下滚动功能

本篇文章为大家展示了怎么在Android应用中利用TextSwitcher实现一个上下滚动功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android 上下滚动TextSwitcher实例详解1
2023-05-31

怎么在Android中实现一个滚动条广告

这篇文章将为大家详细讲解有关怎么在Android中实现一个滚动条广告,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。ViewSwitcher的介绍ViewSwitcher 设置动画ViewSw
2023-05-30

如何在Android应用中实现一个无限循环轮播

如何在Android应用中实现一个无限循环轮播?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、自定义控件属性新建自定义控件SliderLayout继承于Rel
2023-05-31

Android中怎么使用Spinner实现一个列表选择框

本篇文章为大家展示了Android中怎么使用Spinner实现一个列表选择框,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android Spinner列表选择框的应用Spinner 是 Andr
2023-05-30

怎么在Android中利用ImageView控件实现一个圆角功能

今天就跟大家聊聊有关怎么在Android中利用ImageView控件实现一个圆角功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.创建CustomImageView 类在你的项目
2023-05-31

Android中怎么实现一个瀑布流控件

本篇文章给大家分享的是有关Android中怎么实现一个瀑布流控件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体如下:public class FlowLayout exte
2023-05-30

Android中怎么利用RadioButton控件实现多选一功能

Android中怎么利用RadioButton控件实现多选一功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、将多个RadioButton放在一个RadioGroup里面<
2023-05-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录