PickerView

PickerView是仿iOS的控件,提供3D圆弧效果,包含WheelView、OptionsPickerView和TimePickerView。WheelView支持基础设置如文字、颜色、大小等;OptionsPickerView支持多级联动选择;TimePickerView则用于时间选择,支持多种显示格式和定制选项。所有选择器都支持回调监听和自定义展示。

PickerView是什么

仿iOS的PickerView控件,带有3D圆弧效果,并封装了时间选择和选项选择这两种选择器。

WheelView —— 基础控件
带有3D圆弧效果。
支持文字、颜色、大小设置。
支持背景颜色设置。
支持item的分隔线设置。
支持item间距设置。
支持设置是否循环。

OptionsPickerView —— 选项选择器
支持一、二、三级联动数据。
支持一、二、三级不联动数据。
支持自定义布局。
支持自定义标题栏。
支持“省,市,区”等选项的单位(label)显示、隐藏和自定义。
支持dialog 模式显示。
支持自定义设置容器。
支持实时回调监听。
联动数据支持切换Item时,还原为第一项。

TimePickerView —— 时间选择器
支持选择年、月、日的范围。
支持年月日时分秒显示。
支持设置当前默认时间。
支持自定义布局。
支持自定义标题栏。
支持“年,月,日,时,分,秒”等选项的单位(label)显示、隐藏和自定义。
支持dialog 模式显示。
支持自定义设置容器。
支持实时回调监听。

使用方式

1.WheelView的使用

依赖

compile 'com.contrarywind:Android-PickerView:4.1.9'

layout中配置

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <com.contrarywind.view.WheelView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/wheel"/>
</LinearLayout>

代码

package com.example.day011;

import android.os.Bundle;
import android.util.Log;

import androidx.appcompat.app.AppCompatActivity;

import com.bigkoo.pickerview.adapter.ArrayWheelAdapter;
import com.contrarywind.listener.OnItemSelectedListener;
import com.contrarywind.view.WheelView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private WheelView wheel;
    private ArrayWheelAdapter wheelAdapter;
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        final List<String> list=new ArrayList<>();
        list.add("我的中国心");
        list.add("北国之春");
        list.add("鹿港小镇");
        wheel.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(int index) {
                Log.i(TAG, "onItemSelected: "+list.get(index));
            }
        });
        wheelAdapter = new ArrayWheelAdapter(list);
        wheel.setAdapter(wheelAdapter);
    }

    private void initView() {
        wheel = (WheelView) findViewById(R.id.wheel);
    }
}

效果
在这里插入图片描述

联级选择器

二级联动
代码

package com.example.day011;

import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;

import java.util.ArrayList;
import java.util.List;

public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        final List<String> options1Items = new ArrayList<>();
        options1Items.add("射雕英雄传");
        options1Items.add("神雕侠侣");
        options1Items.add("鹿鼎记");

        List<String> options2Items_01 = new ArrayList<>();
        options2Items_01.add("郭靖");
        options2Items_01.add("黄蓉");
        options2Items_01.add("杨铁心");
        options2Items_01.add("欧阳克");
        List<String> options2Items_02 = new ArrayList<>();
        options2Items_02.add("小龙女");
        options2Items_02.add("杨过");
        options2Items_02.add("大雕");
        List<String> options2Items_03 = new ArrayList<>();
        options2Items_03.add("小柜子");
        options2Items_03.add("康熙");
        options2Items_03.add("康亲王");
        options2Items_03.add("鳌拜");

        final List<List<String>> options2Items = new ArrayList<>();
        options2Items.add(options2Items_01);
        options2Items.add(options2Items_02);
        options2Items.add(options2Items_03);
        OptionsPickerView optionsPickerView=new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int options2, int options3, View v) {
                Toast.makeText(Main2Activity.this, ""+options1Items.get(options1)+options2Items.get(options2).get(options3), Toast.LENGTH_SHORT).show();
            }
        }).build();
        optionsPickerView.setPicker(options1Items,options2Items);
        optionsPickerView.show();
    }
}

效果
在这里插入图片描述
三级联动

package com.example.day011;

import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;

import java.util.ArrayList;
import java.util.List;

public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        //一级
        final List<String> options1Items = new ArrayList<>();
        options1Items.add("射雕英雄传");
        options1Items.add("神雕侠侣");
        options1Items.add("鹿鼎记");

        //二级下的子菜单
        List<String> options2Items_01 = new ArrayList<>();
        options2Items_01.add("郭靖");
        options2Items_01.add("黄蓉");
        options2Items_01.add("杨铁心");
        options2Items_01.add("欧阳克");
        List<String> options2Items_02 = new ArrayList<>();
        options2Items_02.add("小龙女");
        options2Items_02.add("杨过");
        options2Items_02.add("大雕");
        List<String> options2Items_03 = new ArrayList<>();
        options2Items_03.add("小柜子");
        options2Items_03.add("康熙");
        options2Items_03.add("康亲王");
        options2Items_03.add("鳌拜");

        //二级
        final List<List<String>> options2Items = new ArrayList<>();
        options2Items.add(options2Items_01);
        options2Items.add(options2Items_02);
        options2Items.add(options2Items_03);

        //三级下的第三级子菜单
        List<String> list3=new ArrayList<>();
        list3.add("郭靖1");
        list3.add("郭靖2");
        list3.add("郭靖3");
        List<String> list3_2=new ArrayList<>();
        list3_2.add("黄蓉1");
        list3_2.add("黄蓉2");
        list3_2.add("黄蓉3");
        List<String> list3_3=new ArrayList<>();
        list3_3.add("杨铁心1");
        list3_3.add("杨铁心3");
        list3_3.add("杨铁心2");
        List<String> list3_4=new ArrayList<>();
        list3_4.add("欧阳克1");
        list3_4.add("欧阳克2");
        list3_4.add("欧阳克3");

        //三级下的第三级子菜单放入二级集合
        final List<List<String>> options2Items2 = new ArrayList<>();
        options2Items2.add(list3);
        options2Items2.add(list3_2);
        options2Items2.add(list3_3);
        options2Items2.add(list3_4);
        //三级
        List<List<List<String>>> lists3=new ArrayList<>();
        lists3.add(options2Items2);

        OptionsPickerView optionsPickerView=new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int options2, int options3, View v) {
                Toast.makeText(Main2Activity.this, ""+options1Items.get(options1)+options2Items.get(options2).get(options3), Toast.LENGTH_SHORT).show();
            }
        }).build();

        optionsPickerView.setPicker(options1Items,options2Items,lists3);
        optionsPickerView.show();
//        TimePickerView timePickerView= new TimePickerBuilder(this, new OnTimeSelectListener() {
//            @Override
//            public void onTimeSelect(Date date, View v) {
//
//            }
//        }).build();
//        timePickerView.show();
    }
}

时间选择器

TimePickerView timePickerView= new TimePickerBuilder(this, new OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {

            }
        }).build();
        timePickerView.show();

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值