ZhXyLy / WheelPicker

区域选择和日期选择

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WheelPicker

只用老版,直接用:1.3.0

区域选择和日期选择

FROM:
https://github.com/AigeStudio/WheelPicker
https://github.com/open-android/WheelPicker

demo:


最新版Apk
老版Apk

效果图:

效果图

单选:

新单选 单选-旧版 单选-新版

日期:

新日期 日期-旧版 日期-新版

时间:

新时间 时间-旧版 时间-新版

区域:

新区域 区域-旧版 区域-新版
区域-列表

How to

To get a Git project into your build:

Step 1. Add the JitPack repository to your build file

gradle maven sbt leiningen Add it in your root build.gradle at the end of repositories:

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

Step 2. Add the dependency

dependencies {
        implementation 'com.github.ZhXyLy:WheelPicker:latest-version'
}

新版API:

公用
   .setTitle("标题")//设置标题
   .setTitleTextSize(12)//标题文字大小
   .setItemTextSize(20)//Item文字大小
   .setShowUnit(true)//是否显示单位
   .setData(stringData)//设置数据(对象需要implements Data,或者字符串直接用StringData)
设置默认值
单选
   .setUnit("元")//单位
   .setDefaultById(id)//通过ID设置默认项
   .setDefaultByText(text)//通过文字设置默认项

日期

    .setDateMode(DatePicker.ALL)//设置DateMode,ALL,NO_YEAR,NO_DAY
    .setShowWeek(true)//是否显示周
    .setDefaultDate(defaultDate)//默认日期
    .setRangeDate(minDate,maxDate)//最大最小日期,没有的用null,默认1900-2100
    .setUnit("年","月","日")//单位,默认既是年月日

时间

    .setTimeMode(TimePicker.ALL)//时间模式,ALL,NO_HOUR,NO_SECOND
    .setMinuteInterval(5)//设置间隔分钟
    .setSecondInterval(5)//设置间隔秒
    .setDefaultDate(defaultTime)
    .setUnit("年","月","日")//单位,默认既是年月日

区域

    .setShortText(true)//是否显示为简称(默认false)
    .setAdjustTextSize(false)//是否自动调整文字大小(默认true)

新版使用(从2.0.0开始)

可以直接使用
<com.jx.wheelpicker.widget.lasted.XxxPicker>
或者
使用Dialog

单选

注:需要implements Data,如果是单独的String可以直接使用StringData。

private void showSingleLastedDialog() {
    if (singlePickerDialog == null) {
        singlePickerDialog = new SinglePickerDialog.SingleBuilder(this)
                .setData(stringData)
                .setOnChangedListener(new SinglePickerDialog.OnChangedListener() {
                    @Override
                    public void onChanged(SinglePicker singlePicker, Data data) {
                        tvLastedResult.setText(data == null ? "没选到东西" : data.getText());
                    }
                })
                .setOnPickListener(new SinglePickerDialog.OnPickListener() {
                    @Override
                    public void onPicked(SinglePicker singlePicker, Data data) {
                        ToastUtils.show(data == null ? "没选到东西" : data.getText());
                    }
                })
                .build();
    }
    singlePickerDialog.show();
}

日期选择

private void showLastedDialog() {
        if (mPickerDialog == null) {
            mPickerDialog = new DatePickerDialog.DateBuilder(this)
                    .setOnDateChangedListener(new DatePickerDialog.OnDateChangedListener() {
                        @Override
                        public void onDateChanged(DatePicker datePicker, int year, int month, int day, String week) {
                            tvLastedResult.setText(String.format("%s-%s", datePicker.getDateString(), week));
                        }
                    })
                    .setOnPickerDateListener(new DatePickerDialog.OnPickerDateListener() {
                        @Override
                        public void onPickerDate(DatePicker datePicker, int year, int month, int day, String week) {
                            ToastUtils.show(String.format("%s-%s", datePicker.getDateString(), week));
                        }
                    })
                    .build();
        }
        mPickerDialog.show();
    }

时间选择

private void showLastedDialog() {
        if (mPickerDialog == null) {
            mPickerDialog = new TimePickerDialog.TimeBuilder(this)
                    .setOnTimeChangedListener(new TimePickerDialog.OnTimeChangedListener() {
                        @Override
                        public void onTimeChanged(TimePicker timePicker, int hour, int minute, int second) {
                            tvLastedResult.setText(timePicker.getTimeString());
                        }
                    })
                    .setOnPickTimeListener(new TimePickerDialog.OnPickTimeListener() {
                        @Override
                        public void onTimePicked(TimePicker timePicker, int hour, int minute, int second) {
                            ToastUtils.show(timePicker.getTimeString());
                        }
                    })
                    .build();
        }
        mPickerDialog.show();
    }

区域选择

private void showLastedDialog() {
        if (mPickerDialog == null) {
            mPickerDialog = new AreaPickerDialog.AreaBuilder(this)
                    .setShortText(true)
                    .setOnAreaChangedListener(new AreaPickerDialog.OnAreaChangedListener() {
                        @Override
                        public void onAreaChanged(AreaPicker areaPicker, Province province, City city, Area area) {
                            tvLastedResult.setText(areaPicker.getAreaString(" "));
                        }
                    })
                    .setOnPickerAreaListener(new AreaPickerDialog.OnPickerAreaListener() {
                        @Override
                        public void onPickerArea(AreaPicker areaPicker, Province province, City city, Area area) {
                            ToastUtils.show(areaPicker.getAreaString("-"));
                        }
                    })
                    .build();
        }
        mPickerDialog.show();
    }

旧版使用


区域选择

private void showAreaDialog() {
if (wheelAreaPickerBottomDialog == null) {
        wheelAreaPickerBottomDialog = new WheelAreaPickerBottomDialog(this);
        wheelAreaPickerBottomDialog.setSelectPositionByCode(viewModel.getSsqCode());
        wheelAreaPickerBottomDialog.setOnWheelScrollChangedListener(iWheelAreaPicker -> {
            Province province = iWheelAreaPicker.getProvince();
            City city = iWheelAreaPicker.getCity();
            Area area = iWheelAreaPicker.getArea();
            String ssq = province.getName() + city.getName() + area.getName();
            Toast.makeText(MainActivity.this, ssq, Toast.LENGTH_SHORT).show();
        });
    //同样,点确认回调
    //wheelAreaPickerBottomDialog.setOnPickerAreaListener(new WheelAreaPickerBottomDialog.OnPickerAreaListener() {
        //    @Override
        //    public void onPickerArea(IWheelAreaPicker wheelAreaPicker) {
        //        String province = wheelAreaPicker.getProvince().getName();
        //        String city = wheelAreaPicker.getCity().getName();
        //        String area = wheelAreaPicker.getArea().getName();
        //        Toast.makeText(MainActivity.this, province + "-" + city + "-" + area, Toast.LENGTH_SHORT).show();
        //    }
        });
    }
    wheelAreaPickerBottomDialog.show();
}

日期选择

private void showDateDialog() {
	//和上边的一样,两种Lisenter
    if (wheelDatePickerBottomDialog == null) {
        wheelDatePickerBottomDialog = new WheelDatePickerBottomDialog(this);
    wheelDatePickerBottomDialog.setTitle(R.string.expect_review_date);
        wheelDatePickerBottomDialog.setSelectPositionByDate(date);//由于各种日期格式,所以传入Date
        wheelDatePickerBottomDialog.setOnPickerDateListener(new WheelDatePickerBottomDialog.OnPickerDateListener() {

            @Override
            public void onPickerDate(IWheelDatePicker wheelDatePicker) {
                String stringDate = wheelDatePicker.getStringDate("yyyy年MM月dd日");
                Toast.makeText(MainActivity.this, stringDate, Toast.LENGTH_SHORT).show();
            }
        });
    }
    wheelDatePickerBottomDialog.show();
}

时间选择

//时间和日期的类似,自己琢磨用

单选选择

private void showWheelPicker() {
if (typeWheelPickerBottomDialog == null) {
            typeWheelPickerBottomDialog = new WheelPickerBottomDialog(this);
            typeWheelPickerBottomDialog.setVisibleCount(5);//默认7个
            typeWheelPickerBottomDialog.setData(dailyTypes);
            typeWheelPickerBottomDialog.setTitle("选择类型");//小标题,也可以StringRes
            typeWheelPickerBottomDialog.setSelectPosition(viewModel.getDailyTypeName());//默认选中,通过显示文字equals来判断
	//监听OnWheelScrollChangedListener,滚动每一个都回调,
	//如果点击确认再回调,监听OnWheelPickerListener
            typeWheelPickerBottomDialog.setOnWheelScrollChangedListener((wheelPicker, o, pickerName, position) -> {
                Toast.makeText(MainActivity.this, pickerName, Toast.LENGTH_SHORT).show();
            });
        }
        typeWheelPickerBottomDialog.show();
}

注:修改颜色

<color name="wp_date_select_item_color">#000000</color><!--滚轮选中item的颜色-->
<color name="wp_date_unit_color">#000000</color><!--滚轮里单位文字颜色-->
<color name="list_date_item_color">#000000</color><!--区域列表item颜色-->
<color name="list_date_select_item_color">?attr/colorAccent</color><!--区域列表item选中的颜色-->

从服务器替换省市区json文件

下载下来的文件地址setFilePath传入
String filePath = getFilesDir().getAbsolutePath() + "/province_json.json";
    AreaUtils.getInstance().setFilePath(filePath);
    AreaUtils.getInstance().setOnEmptyDataListener(new OnEmptyDataListener() {
        @Override
        public void onEmptyData() {
            Toast.makeText(MainActivity.this, "数据时空的", Toast.LENGTH_SHORT).show();
        }
    });

About

区域选择和日期选择


Languages

Language:Java 100.0%