PickerView和AutoSize
一、PickerView
1、PickerView是什么
仿iOS的PickerView控件,带有3D圆弧效果,并封装了时间选择和选项选择这两种选择器。
2、使用方式
1)WheelView的使用
依赖
implementation 'com.contrarywind:Android-PickerView:4.1.8'//PickerView
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:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/wheel"></com.contrarywind.view.WheelView>
</LinearLayout>
java代码
package com.example.zg3_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;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
wheel.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(int index) {
Log.i("Simon", "onItemSelected: "+index);
}
});
List<String> list = new ArrayList<>();
list.add("我的中国心");
list.add("北国之春");
list.add("鹿港小镇");
wheelAdapter = new ArrayWheelAdapter(list);
wheel.setAdapter(wheelAdapter);
}
private void initView() {
wheel = (WheelView) findViewById(R.id.wheel);
}
}
效果图
2)联级选择器
代码
package com.example.zg3_day011;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.bigkoo.pickerview.adapter.ArrayWheelAdapter;
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.listener.OnItemSelectedListener;
import com.contrarywind.view.WheelView;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private WheelView wheel;
private ArrayWheelAdapter wheelAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
wheel.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(int index) {
Log.i("Simon", "onItemSelected: "+index);
}
});
// List<String> list = new ArrayList<>();
// list.add("我的中国心");
// list.add("北国之春");
// list.add("鹿港小镇");
// wheelAdapter = new ArrayWheelAdapter(list);
// wheel.setAdapter(wheelAdapter);
//联级选择器
final List<String> options1Items = new ArrayList<>();
options1Items .add("魔道祖师");
options1Items .add("人渣反派自救系统");
options1Items .add("天官赐福");
List<String> options2_01 = new ArrayList<>();
options2_01.add("蓝忘机");
options2_01.add("魏无羡");
options2_01.add("温宁");
options2_01.add("江厌离");
options2_01.add("薛洋");
options2_01.add("晓星尘");
List<String> options2_02 = new ArrayList<>();
options2_02.add("沈清秋");
options2_02.add("洛冰河");
options2_02.add("柳清歌");
options2_02.add("岳清源");
options2_02.add("沈九");
options2_02.add("尚清华");
List<String> options2_03 = new ArrayList<>();
options2_03.add("谢怜");
options2_03.add("花城");
options2_03.add("师青玄");
options2_03.add("戚容");
options2_03.add("师无渡");
options2_03.add("慕情");
final List<List<String>> options2Items = new ArrayList<>();
options2Items .add(options2_01);
options2Items .add(options2_02);
options2Items .add(options2_03);
OptionsPickerView optionsPickerView = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int options2, int options3, View v) {
String tx = options1Items .get(options1)
+ options2Items .get(options1).get(options2);
Toast.makeText(getBaseContext(), tx, Toast.LENGTH_SHORT).show();
}
})
.setOptionsSelectChangeListener(new OnOptionsSelectChangeListener() {
@Override
public void onOptionsSelectChanged(int options1, int options2, int options3) {
String str = "options1: " + options1 + "\noptions2: " + options2 + "\noptions3: " + options3;
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
}
})
.build();
optionsPickerView.setPicker(options1Items , options2Items );
optionsPickerView.show();
//时间选择器
// TimePickerView pvTime = new TimePickerBuilder(MainActivity.this, new OnTimeSelectListener() {
// @Override
// public void onTimeSelect(Date date, View v) {
// Toast.makeText(MainActivity.this, date.toString(), Toast.LENGTH_SHORT).show();
// }
// }).build();
// pvTime.show();//显示时间选择器
}
private void initView() {
wheel = (WheelView) findViewById(R.id.wheel);
}
}
效果图
3)时间选择器
代码
package com.example.zg3_day011;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.bigkoo.pickerview.adapter.ArrayWheelAdapter;
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.listener.OnItemSelectedListener;
import com.contrarywind.view.WheelView;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private WheelView wheel;
private ArrayWheelAdapter wheelAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
wheel.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(int index) {
Log.i("Simon", "onItemSelected: "+index);
}
});
// List<String> list = new ArrayList<>();
// list.add("我的中国心");
// list.add("北国之春");
// list.add("鹿港小镇");
// wheelAdapter = new ArrayWheelAdapter(list);
// wheel.setAdapter(wheelAdapter);
// final List<String> options1Items = new ArrayList<>();
// options1Items .add("魔道祖师");
// options1Items .add("人渣反派自救系统");
// options1Items .add("天官赐福");
//
// List<String> options2_01 = new ArrayList<>();
// options2_01.add("蓝忘机");
// options2_01.add("魏无羡");
// options2_01.add("温宁");
// options2_01.add("江厌离");
// options2_01.add("薛洋");
// options2_01.add("晓星尘");
//
// List<String> options2_02 = new ArrayList<>();
// options2_02.add("沈清秋");
// options2_02.add("洛冰河");
// options2_02.add("柳清歌");
// options2_02.add("岳清源");
// options2_02.add("沈九");
// options2_02.add("尚清华");
//
// List<String> options2_03 = new ArrayList<>();
// options2_03.add("谢怜");
// options2_03.add("花城");
// options2_03.add("师青玄");
// options2_03.add("戚容");
// options2_03.add("师无渡");
// options2_03.add("慕情");
//
// final List<List<String>> options2Items = new ArrayList<>();
// options2Items .add(options2_01);
// options2Items .add(options2_02);
// options2Items .add(options2_03);
//
// OptionsPickerView optionsPickerView = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
// @Override
// public void onOptionsSelect(int options1, int options2, int options3, View v) {
// String tx = options1Items .get(options1)
// + options2Items .get(options1).get(options2);
// Toast.makeText(getBaseContext(), tx, Toast.LENGTH_SHORT).show();
// }
// })
// .setOptionsSelectChangeListener(new OnOptionsSelectChangeListener() {
// @Override
// public void onOptionsSelectChanged(int options1, int options2, int options3) {
// String str = "options1: " + options1 + "\noptions2: " + options2 + "\noptions3: " + options3;
// Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
// }
// })
// .build();
//
// optionsPickerView.setPicker(options1Items , options2Items );
// optionsPickerView.show();
//时间选择器
TimePickerView pvTime = new TimePickerBuilder(MainActivity.this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
Toast.makeText(MainActivity.this, date.toString(), Toast.LENGTH_SHORT).show();
}
}).build();
pvTime.show();//显示时间选择器
}
private void initView() {
wheel = (WheelView) findViewById(R.id.wheel);
}
}