Git Product home page Git Product logo

addappcn / android-pickers Goto Github PK

View Code? Open in Web Editor NEW
1.3K 19.0 229.0 15.64 MB

安卓选择器类库,包括日期及时间选择器(可设置范围)、单项选择器(可用于性别、职业、学历、星座等)、城市地址选择器(分省级、地级及县级)、数字选择器(可用于年龄、身高、体重、温度等)等……可以切换不同的模式(目前有普通模式,3d滚轮模式)

Home Page: http://addapp.cn

Java 100.00%

android-pickers's Introduction

概要

API 14+

安卓选择器类库,包括日期及时间选择器(可设置范围)、单项选择器(可用于性别、职业、学历、星座等)、城市地址选择器(分省级、地级及县级)、数字选择器(可用于年龄、身高、体重、温度等)等…… 欢迎大伙儿在Issues提交你的意见或建议。 欢迎Fork & Pull requests贡献您的代码,大家共同学习【android-pickers交流群 : 456738690】。 查看更新日志

安装

“app”是Sample;“android-pickers”是library 包括WheelPicker、SinglePicker、DatePicker、TimePicker、LinkagePicker、AddressPicker、NumberPicker、CarNumberPicker等。

demo下载

点我

远程加载JitPack包

加载的仓库: 第一步,在项目根目录下的build.gradle里添加 maven { url "https://jitpack.io" } 引用:

allprojects {
    repositories {
        maven { url "https://jitpack.io" }//必须添加这行
    }
}

第二步,在项目的app模块下的build.gradle里加:

dependencies {
    implementation  'com.github.addappcn:android-pickers:2.0.0'
}

ProGuard

由于地址选择器使用了fastjson来解析,混淆时候需要加入以下类似的规则,不混淆Province、City等实体类。

-keepattributes InnerClasses,Signature
-keepattributes *Annotation*

-keep class cn.addapp.pickers.entity.** { *;}

注意事项

  1. 联动设置对时间,地址选择器无效,加这个只是针对不需要联动的数据,如不满足你的开发需求 请自定义picker。

Sample (具体用法详见demo项目)

继承自定义扩展选择器:

       CustomPicker picker = new CustomPicker(this);
               picker.setOffset(1);//显示的条目的偏移量,条数为(offset*2+1)
               picker.setGravity(Gravity.CENTER);//居中
               picker.setOnItemPickListener(new OnItemPickListener<String>() {
                   @Override
                   public void onItemPicked(int position, String option) {
                       showToast("index=" + position + ", item=" + option);
                   }
               });
               picker.show();

内嵌视图选择器:

        final TextView textView = findView(R.id.wheelview_tips);
                WheelListView wheelListView = findView(R.id.wheelview_single);
                wheelListView.setItems(new String[]{"少数民族", "贵州穿青人", "不在56个少数民族之列", "第57个民族"}, 1);
                wheelListView.setSelectedTextColor(0xFFFF00FF);
                LineConfig config = new LineConfig();
                config.setColor(Color.parseColor("#26A1B0"));//线颜色
                config.setAlpha(100);//线透明度
                config.setThick(ConvertUtils.toPx(this, 3));//线粗
                wheelListView.setLineConfig(config);
                wheelListView.setOnWheelChangeListener(new WheelListView.OnWheelChangeListener() {
                    @Override
                    public void onItemSelected(boolean isUserScroll, int index, String item) {
                        textView.setText("index=" + index + ",item=" + item);
                    }
                });
                picker = new CarNumberPicker(this);
                picker.setWeightEnable(true);
                picker.setColumnWeight(0.5f,0.5f,1);
                picker.setWheelModeEnable(true);
                picker.setTextSize(18);
                picker.setSelectedTextColor(0xFF279BAA);//前四位值是透明度
                picker.setUnSelectedTextColor(0xFF999999);
                picker.setCanLoop(true);
                picker.setOffset(3);
                picker.setOnMoreItemPickListener(new OnMoreItemPickListener<String>() {
                    @Override
                    public void onItemPicked(String s1, String s2, String s3) {
                        s3 = !TextUtils.isEmpty(s3) ? ",item3: "+s3 : "";
                        Toast.makeText(NextActivity.this, "item1: "+s1 +",item2: "+s2+ s3, Toast.LENGTH_SHORT).show();
                    }
                });
                picker.setOnMoreWheelListener(new OnMoreWheelListener() {
                    @Override
                    public void onFirstWheeled(int index, String item) {
                        textView.setText(item + ":" + picker.getSelectedSecondItem());
                    }
                    @Override
                    public void onSecondWheeled(int index, String item) {
                        textView.setText(picker.getSelectedFirstItem() + ":" + item);
                    }
                    @Override
                    public void onThirdWheeled(int index, String item) {
                    }
                } );
                ViewGroup viewGroup = findView(R.id.wheelview_container);
                viewGroup.addView(picker.getContentView());

选择器各个设置项:

        boolean isChinese = Locale.getDefault().getDisplayLanguage().contains("中文");
        OptionPicker picker = new OptionPicker(this,
                isChinese ? new String[]{
                        "水瓶", "双鱼", "白羊", "金牛", "双子", "巨蟹",
                        "狮子", "处女", "天秤", "天蝎", "射手", "摩羯"
                } : new String[]{
                        "Aquarius", "Pisces", "Aries", "Taurus", "Gemini", "Cancer",
                        "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn"
                });
        picker.setLabel(isChinese ? "座" : "");
        picker.setCycleDisable(true);//禁用循环
        picker.setLineConfig(config);
        picker.setTopHeight(50);//顶部标题栏高度
        picker.setTopLineColor(0xFF33B5E5);//顶部标题栏下划线颜色
        picker.setTopLineHeight(1);//顶部标题栏下划线高度
        picker.setTitleText(isChinese ? "请选择" : "Please pick");
        picker.setTitleTextColor(0xFF999999);//顶部标题颜色
        picker.setTitleTextSize(12);//顶部标题文字大小
        picker.setCancelTextColor(0xFF33B5E5);//顶部取消按钮文字颜色
        picker.setCancelTextSize(14);
        picker.setSubmitTextColor(0xFF33B5E5);//顶部确定按钮文字颜色
        picker.setSubmitTextSize(14);
        picker.setTextColor(0xFFEE0000, 0xFF999999);//中间滚动项文字颜色
        WheelView.LineConfig config = new WheelView.LineConfig();
        config.setColor(0xFFEE0000);//线颜色
        config.setAlpha(140);//线透明度
        picker.setLineConfig(config);
        picker.setBackgroundColor(0xFFE1E1E1);
        //picker.setSelectedItem(isChinese ? "射手" : "Sagittarius");
        picker.setSelectedIndex(10);//默认选中项
        picker.setOnOptionPickListener(new OptionPicker.OnOptionPickListener() {
            @Override
            public void onOptionPicked(int index, String item) {
                showToast("index=" + index + ", item=" + item);
            }
        });
        picker.show();

效果图 效果图 效果图 效果图 效果图 效果图

License

Copyright 2017 matt (android-pickers)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

android-pickers's People

Contributors

addappcn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android-pickers's Issues

关于时分秒选择问题

很抱歉之前未能及时回复
screenshot_2017-05-18-08-44-24 1
screenshot_2017-05-18-08-44-30 1
screenshot_2017-05-18-08-44-52 1
screenshot_2017-05-18-08-44-58 1

运行的是github上download下来的demo:app-release.apk
机型是 华为 Android 4.2.2
使用 三星 Android 5.0 测试结果一样

设置默认选中的话,进去会跳动

比如说一共有7个item,设置默认选中低7个,一进去它会从第1个跳到第7个,看起来很不雅观,能不能一进去就默认选中第7个,而不是从第1个跳到第7个,

DateTimePicker

你好请问能把DateTimePicker 设置setStepMinute方法放开吗

picker.setSelectedItem(2017,10,24,13,22); it seems like the hour and minute donest work

DateTimePicker picker = new DateTimePicker(this,DateTimePicker.YEAR_MONTH_DAY, DateTimePicker.HOUR_24);
picker.setDateRangeStart(2017, 1, 1);
picker.setDateRangeEnd(2025, 11, 11);
picker.setSelectedItem(2017,10,24,13,22);
picker.setTimeRangeStart(0, 0);
picker.setTimeRangeEnd(23, 59);
picker.setWeightEnable(true);
picker.setWheelModeEnable(true);
picker.setOnDateTimePickListener(new DateTimePicker.OnYearMonthDayTimePickListener() {
@OverRide
public void onDateTimePicked(String year, String month, String day, String hour, String minute) {
showToast(year + "-" + month + "-" + day + " " + hour + ":" + minute);
}
});
picker.show();

the result show 2017-10-24 00:00 not 2017-10-24 13:22

问一个问题

请问如何设置点击其它的区域这些弹出就会取消,没有找到这个属性。

DateTimePicker的setDateRangeStart方法有bug

比如设置setDateRangeStart的时间为2019-07-10 00:00,如果反复不停的弹出关闭测试,则有很大几率日期会变成2019-09-12 02:02,滚轮向后滚动了两格。未跟踪代码,个人猜测是滚轮没来得及复位所致。

几乎开关5次即可复现一次

请问能够这样实现么

数组为:[ {name:'王麻子',id:'1'}, {name:'张三',id:'2'}, {name:'李四',id:'3'} ]
然后我之能够指定item显示的项比如item.name 或者item[index].name像地址选择器那样

DateTimePickers的setSelectedItem传值为0时,报错

`

 // picker.setSelectedItem(calendar.get(Calendar.YEAR),
//calendar.get(Calendar.MONTH)+1,
// calendar.get(Calendar.DAY_OF_MONTH),
//calendar.get(Calendar.HOUR_OF_DAY),
// calendar.get(Calendar.MINUTE));

  picker.setSelectedItem(calendar.get(Calendar.YEAR),
  calendar.get(Calendar.MONTH)+1,
  calendar.get(Calendar.DAY_OF_MONTH),
  0,
  0);

`

java.lang.NumberFormatException
Invalid int: "
1 java.lang.Integer.invalidInt(Integer.java:138)

2 java.lang.Integer.parseInt(Integer.java:358)
3 java.lang.Integer.parseInt(Integer.java:334)
4 cn.addapp.pickers.picker.DateTimePicker$11.compare(DateTimePicker.java:842)
5 java.util.Collections.binarySearch(Collections.java:1497)
6 cn.addapp.pickers.picker.DateTimePicker.findItemIndex(DateTimePicker.java:835)
7 cn.addapp.pickers.picker.DateTimePicker.setSelectedItem(DateTimePicker.java:285)

DatePicker错误

在DatePicker(this, YEAR_MONTH)这种情况下,
picker.setRangeEnd(year, month), month中设置n,
月份中其他年份(非结束年的月份)也变成1到n了

直辖市选择问题

北京 上海 重庆 天津 海南 这几个城市在只包括省级 地级的选择的时候有严重bug啊 影响使用了都

老板留个联系方式啊

canvas.drawText(contentText, drawOutContentStart, maxTextHeight, paintOuterText);
你这个滚轮不会是整个就是一个textview把,我看你连scroller都没用呢
加速度也没用但是有fling的效果很是神奇啊

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.