Android开源项目滚轮选择器WheelPicker的基本用法总结
程序员文章站
2022-03-03 22:01:01
1. 添加依赖在Project的build.gradle中,添加maven { url ‘https:jitpack.io’}在相关Module(一般是Module:app)的build.gradle中,添加implementation 'cn.aigestudio.wheelpicker:WheelPicker:1.1.3'注意不是 implemention ‘com.github.open-android:WheelPicker:v1.0.0’,那篇文章(即百度WheelPicker排第一的简书...
1. 添加依赖
在Project的build.gradle中,添加maven { url 'https:jitpack.io'}
在相关Module(一般是Module:app)的build.gradle中,添加implementation 'cn.aigestudio.wheelpicker:WheelPicker:1.1.3'
注意不是 implemention ‘com.github.open-android:WheelPicker:v1.0.0’,那篇文章(即百度WheelPicker排第一的简书那篇)我个人怀疑有高度借鉴的行为。
2. 基本用法
-
在xml文件中设置WheelPicker。
<?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" android:orientation="vertical"> <com.aigestudio.wheelpicker.WheelPicker android:id="@+id/wp" android:layout_width="match_parent" android:layout_height="200dp" android:background="#ffffff" app:wheel_item_text_size="16sp" /> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="btn1" android:onClick="onClick"/> </LinearLayout>
-
设置一个实体类,模拟实际开发场景。
public class People { private String name; public People(String name){ this.name = name; } public String getName() { return name; } @Override public String toString() { return "People{" + "name='" + name + '\'' + '}'; } }
-
然后在相关的java文件中调用(这里是demo,所以是MainActivity)
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private static final String TAG = "MainActivity"; WheelPicker wheelPicker; List<People> list = new ArrayList<>(); @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); wheelPicker = findViewById(R.id.wp); initData(); initWP(); // 必用的方法 //initWPShow(); //改变各种显示状态的方法 //initWPText(); //Text相关的显示状态 } private void initData() { list.add(new People("张三")); list.add(new People("李四")); list.add(new People("王五")); list.add(new People("刘七")); list.add(new People("邓八")); list.add(new People("赵九")); } private void initWP() { // 通过setData方式设置数据集,不过此方法设置的数据在显示时都会被自动转换为String // 如果数据传入的是一个类的集合,那显示时就会直接调用他的toString方法,此时就要重写toString。 wheelPicker.setData(list); //选择监听器,会监听被选中的item(滑动停止后),需要自己做强制类型转换 wheelPicker.setOnItemSelectedListener(new WheelPicker.OnItemSelectedListener() { @Override public void onItemSelected(WheelPicker picker, Object data, int position) { Log.i(TAG, "onItemSelected: " + (People)data + " " + position); } }); //获取当前的item,一样要做强制类型转换 People people = (People) wheelPicker.getData().get(wheelPicker.getCurrentItemPosition()); Log.i(TAG, "initWP: " + people); //滚轮监听器,滑动状态监听 wheelPicker.setOnWheelChangeListener(new WheelPicker.OnWheelChangeListener() { @Override public void onWheelScrolled(int offset) { // 滑动距离,初始状态(即一开始position=0时)为0 // 数据往上滑(即手往下滑)为正数,往下滑为负数 Log.i(TAG, "onWheelScrolled: " + offset); } @Override public void onWheelSelected(int position) { // 等同于选择监听器的onItemSelected,停止滑动时所在的position Log.i(TAG, "onWheelSelected: " + position); } @Override public void onWheelScrollStateChanged(int state) { // 滚动状态监听器,0表示没有在滑动,1表示触屏造成的滑动, // 2表示停止触屏时造成的滑动(停止触屏后的回弹) Log.i(TAG, "onWheelScrollStateChanged: " + state); } }); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn: //强制切换到选定的item,第二个参数表示跳转是否显示动画,不传时默认为true wheelPicker.setSelectedItemPosition(3, true); //wheelPicker.setSelectedItemPosition(3); break; } } }
3. 设置显示效果
常用的显示效果如下:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = "MainActivity";
WheelPicker wheelPicker;
List<People> list = new ArrayList<>();
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wheelPicker = findViewById(R.id.wp);
initData();
initWP(); // 必用的方法
initWPShow(); //改变各种显示状态的方法
initWPText(); //Text相关的显示状态
}
private void initData() {
//省略刚才出现过的代码
}
private void initWP() {
//省略刚才出现过的代码
}
private void initWPShow() {
// 设置数据是否循环显示
wheelPicker.setCyclic(true);
// 查看是否循环显示
wheelPicker.isCyclic();
//设置是否有指示器,设置后选中项的上下会用线框柱
wheelPicker.setIndicator(true);
wheelPicker.setIndicatorColor(0xFF123456); //16进制
wheelPicker.setIndicatorSize(3); //单位是px
// 设置是否有幕布,设置后选中项会被指定的颜色覆盖,默认false
wheelPicker.setCurtain(false);
wheelPicker.setCurtainColor(0xFF777777);
// 设置是否有空气感,设置后上下边缘会渐变为透明,默认false
wheelPicker.setAtmospheric(true);
// 设置是否有卷曲感,不能微调卷曲幅度,默认false
wheelPicker.setCurved(true);
// 设置item的排列,左中右,默认中
wheelPicker.setItemAlign(WheelPicker.ALIGN_CENTER);
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
private void initWPText() {
// 设置选中项的字色,16进制(0xFF+16进制的rgb)
wheelPicker.setSelectedItemTextColor(0xFF000000);
// 设置字体大小,字体颜色
wheelPicker.setItemTextColor(0xFF888888);
wheelPicker.setItemTextSize(30); // 单位px,需要自己做sp转px,也可以在xml中直接设置sp
// 设置字体排列方式,同普通textView,一般两行以上的数据才有效果
wheelPicker.setTextAlignment(TEXT_ALIGNMENT_TEXT_START);
}
}
参考材料
https://github.com/AigeStudio/WheelPicker/wiki/%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3
帮助文档 · AigeStudio/WheelPicker Wiki · GitHub
还有WheelPicker的源码。
本文地址:https://blog.csdn.net/qq_41872247/article/details/107364456
上一篇: php数组合并有几种方式