1、PickerView是什么
仿iOS的PickerView控件,带有3D圆弧效果,并封装了时间选择和选项选择这两种选择器。
WheelView —— 基础控件
带有3D圆弧效果。
支持文字、颜色、大小设置。
支持背景颜色设置。
支持item的分隔线设置。
支持item间距设置。
支持设置是否循环。
OptionsPickerView —— 选项选择器
支持一、二、三级联动数据。
支持一、二、三级不联动数据。
支持自定义布局。
支持自定义标题栏。
支持“省,市,区”等选项的单位(label)显示、隐藏和自定义。
支持dialog 模式显示。
支持自定义设置容器。
支持实时回调监听。
联动数据支持切换Item时,还原为第一项。
TimePickerView —— 时间选择器
支持选择年、月、日的范围。
支持年月日时分秒显示。
支持设置当前默认时间。
支持自定义布局。
支持自定义标题栏。
支持“年,月,日,时,分,秒”等选项的单位(label)显示、隐藏和自定义。
支持dialog 模式显示。
支持自定义设置容器。
支持实时回调监听。
作者:贤兵
链接:https://www.jianshu.com/p/a969bf046084
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2、使用方式
1.WheelView的使用
1.导入依赖
compile 'com.contrarywind:Android-PickerView:4.1.9'
2.xml文件
<?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:id="@+id/wheel_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
3.代码
public class MainActivity extends AppCompatActivity {
private WheelView mWheelView;
private ArrayWheelAdapter<String> mMyAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWheelView = findViewById(R.id.wheel_view);
mWheelView.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(int index) {
Log.i("Simon", "onItemSelected index: " + index);
}
});
List<String> list = new ArrayList<>();
list.add("我的中国心");
list.add("北国之春");
list.add("鹿港小镇");
mMyAdapter = new ArrayWheelAdapter(list);
mWheelView.setAdapter(mMyAdapter);
}
}
4.效果图
注意:
OnItemSelectedListener中回调被选中的值
mWheelView.getCurrentItem()得到当前选中的值
2.TimePickerView的使用
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
final TimePickerView build = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
String format = simpleDateFormat.format(date);
Toast.makeText(Main2Activity.this, format, Toast.LENGTH_SHORT).show();
}
}).build();
build.show();
3.级联选择
//代码包含部分三级联
package com.example.day0010r;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.OnOptionsSelectChangeListener;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.bigkoo.pickerview.view.TimePickerView;
import com.contrarywind.view.WheelView;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Main2Activity extends AppCompatActivity {
private WheelView wheel;
private Button timee;
private Button liandong;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
initView();
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("z1");
options2Items_02.add("z2");
options2Items_02.add("z3");
options2Items_02.add("z4");
List<String> options2Items_03 = new ArrayList<>();
options2Items_03.add("bb1");
options2Items_03.add("bb2");
options2Items_03.add("bb3");
options2Items_03.add("bb4");
final List<List<String>> option222222 = new ArrayList<>();
option222222.add(options2Items_01);
option222222.add(options2Items_02);
option222222.add(options2Items_03);
final List<List<List<String>>> option33333 = new ArrayList<>();
option33333.add(option222222);
option33333.add(option222222);
option33333.add(option222222);
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
final TimePickerView build = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
String format = simpleDateFormat.format(date);
Toast.makeText(Main2Activity.this, format, Toast.LENGTH_SHORT).show();
}
}).build();
final OptionsPickerView build1 = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int options2, int options3, View v) {
String s = options1Items.get(options1) + option222222.get(options1).get(options2);
Toast.makeText(Main2Activity.this, ""+s, Toast.LENGTH_SHORT).show();
}
}).setOptionsSelectChangeListener(new OnOptionsSelectChangeListener() {
@Override
public void onOptionsSelectChanged(int options1, int options2, int options3) {
}
}).setOptionsSelectChangeListener(new OnOptionsSelectChangeListener() {
@Override
public void onOptionsSelectChanged(int options1, int options2, int options3) {
}
}).build();
timee.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
build.show();
}
});
liandong.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
build1.setPicker(options1Items,option222222,option33333);
build1.show();
}
});
}
private void initView() {
wheel = (WheelView) findViewById(R.id.wheel);
timee = (Button) findViewById(R.id.timee);
liandong = (Button) findViewById(R.id.liandong);
}
}
效果