WheelView
2018-08-30 本文已影响0人
大灰狼zz
WheelView简单使用
github地址
使用效果到github上查看,本篇文章只做为个人使用笔记,写的不够详细
在grandle中引入
//WheelPicker滚轮选择器
api 'com.github.zyyoona7:wheelview:1.0.1'
在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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="49dp"
android:background="#dbdbdb"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<TextView
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:text="取消"
android:textColor="#ff8f44" />
<TextView
android:id="@+id/confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="确认"
android:textColor="#ff8f44" />
</RelativeLayout>
<com.zyyoona7.wheel.WheelView
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:id="@+id/wheelView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#e6e6e6"
app:wv_dividerColor="@color/white"
app:wv_dividerHeight="0.5dp"
app:wv_lineSpacing="11dp"
app:wv_selectedItemPosition="2"
app:wv_selectedItemTextColor="#ff8f44"
app:wv_showDivider="true"
app:wv_textAlign="center"
app:wv_textSize="21sp"
app:wv_visibleItems="7" />
</LinearLayout>
代码中使用
public class WheelPickerActivity extends BaseActivity {
private PopupWindow window;
private WheelView wheelView;
private TextView textView;
@Override
public int getLayoutId() {
return R.layout.home_activity_wheelpicker;
}
@Override
public void initData() {
}
@Override
public void initView() {
textView = (TextView) findViewById(R.id.textView);
initPopupWindow();
}
@Override
public void initListener() {
textView.setOnClickListener(this);
}
@Override
public void viewsClick(View view) {
int id = view.getId();
if (id == R.id.textView) {
window.showAtLocation(textView, Gravity.CENTER, 0, 0);
}
}
private void initPopupWindow() {
// 用于PopupWindow的View
View contentView = LayoutInflater.from(this).inflate(R.layout.home_popupwindow_wheelpicker, null, false);
wheelView = contentView.findViewById(R.id.wheelView);
//初始化数据
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 20; i++) {
list.add(i);
}
//设置数据
wheelView.setData(list);
// 创建PopupWindow对象,其中:
// 第一个参数是用于PopupWindow中的View,第二个参数是PopupWindow的宽度,
// 第三个参数是PopupWindow的高度,第四个参数指定PopupWindow能否获得焦点
window = new PopupWindow(contentView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
// 设置PopupWindow的背景
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
// 设置PopupWindow是否能响应外部点击事件
window.setOutsideTouchable(true);
// 设置PopupWindow是否能响应点击事件
window.setTouchable(true);
// 显示PopupWindow,其中:
// 第一个参数是PopupWindow的锚点,第二和第三个参数分别是PopupWindow相对锚点的x、y偏移
// window.showAsDropDown(btn1);
// 或者也可以调用此方法显示PopupWindow,其中:
// 第一个参数是PopupWindow的父View,第二个参数是PopupWindow相对父View的位置,
// 第三和第四个参数分别是PopupWindow相对父View的x、y偏移
// window.showAtLocation(btn1, Gravity.BOTTOM, 0, 0);
contentView.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
window.dismiss();
}
});
contentView.findViewById(R.id.confirm).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView.setText(String.valueOf(wheelView.getSelectedItemData()));
window.dismiss();
}
});
}
}
WheelView 1.0.0 版方法和属性说明以及默认值
方法名 对应的属性名 说明 默认值
setSoundEffect(boolean isSoundEffect) 无 设置音效开关 false
setSoundEffectResource(@RawRes int resId) 无 设置声音效果资源 无
setPlayVolume(@FloatRange(from = 0.0, to = 1.0) float playVolume) 无 设置播放音量 当前手机媒体音量
setData(List dataList) 无 设置数据 无
setTextSize(float textSize) wv_textSize 设置字体大小 15sp
setTextSize(float textSize, boolean isSp) wv_textSize 设置字体大小 15sp
setAutoFitTextSize(boolean autoFitTextSize) wv_autoFitTextSize 设置是否自动调整字体大小,以显示完全 false
setTypeface(Typeface typeface) 无 设置当前字体 无
setTextAlign(@TextAlign int textAlign) wv_textAlign 设置文字对齐方式 TEXT_ALIGN_CENTER
setNormalItemTextColorRes(@ColorRes int textColorRes) wv_normalItemTextColor 设置未选中条目颜色 Color.DKGRAY
setNormalItemTextColor(@ColorInt int textColor) wv_normalItemTextColor 设置未选中条目颜色 Color.DKGRAY
setSelectedItemColorRes(@ColorRes int selectedItemColorRes) wv_selectedItemTextColor 设置选中条目颜色 Color.BLACK
setSelectedItemColor(@ColorInt int selectedItemColor) wv_selectedItemTextColor 设置选中条目颜色 Color.BLACK
setTextBoundaryMargin(float textBoundaryMargin) wv_textBoundaryMargin 设置文字距离边界的外边距 2dp
setTextBoundaryMargin(float textBoundaryMargin, boolean isDp) wv_textBoundaryMargin 设置文字距离边界的外边距 2dp
setLineSpacing(float lineSpacing) wv_lineSpace 设置行间距 2dp
setLineSpacing(float lineSpacing, boolean isDp) wv_lineSpace 设置行间距 2dp
setIntegerNeedFormat(boolean integerNeedFormat) wv_integerNeedFormat 设置数据为Integer类型时是否需要转换 false
setIntegerFormat(String integerFormat) wv_integerFormat 设置Integer类型转换格式 %02d
setVisibleItems(int visibleItems) wv_visibleItems 设置可见的条目数 5
setCyclic(boolean cyclic) wv_cyclic 设置是否循环滚动 true
setCurrentItemPosition(int position) wv_currentItemPosition 设置当前下标 0
setCurrentItemPosition(int position, boolean isSmoothScroll) wv_currentItemPosition 设置当前下标 0
setCurrentItemPosition(int position, boolean isSmoothScroll, int smoothDuration) wv_currentItemPosition 设置当前下标 0
setShowDivider(boolean showDivider) wv_showDivider 设置是否显示分割线 false
setDividerColorRes(@ColorRes int dividerColorRes) wv_dividerColor 设置分割线颜色
setDividerColor(@ColorInt int dividerColor) wv_dividerColor 设置分割线颜色
setDividerHeight(float dividerHeight) wv_dividerHeight 设置分割线高度 1dp
setDividerType(@DividerType int dividerType) wv_dividerType 设置分割线填充类型 DIVIDER_TYPE_FILL
setDividerPaddingForWrap(float dividerPaddingForWrap) wv_dividerPaddingForWrap 设置自适应分割线类型时的分割线内边距 2dp
setDividerCap(Paint.Cap dividerCap) 无 设置分割线两端形状 Paint.Cap.ROUND
setCurved(boolean isCurved) wv_curved 设置是否是弯曲(3D)效果 true
setCurvedArcDirection(@CurvedArcDirection int curvedArcDirection) wv_curvedArcDirection 设置弯曲(3D)效果左右圆弧效果方向 CURVED_ARC_DIRECTION_CENTER
setCurvedArcDirectionFactor(@FloatRange(from = 0, to = 1.0) float curvedArcDirectionFactor) wv_curvedArcDirectionFactor 设置弯曲(3D)效果左右圆弧偏移效果方向系数 0.75f
setCurvedRefractRatio(@FloatRange(from = 0f, to = 1.0f) float curvedRefractRatio) wv_curvedRefractRatio 设置选中条目折射偏移比例 0.9f
setOnItemSelectedListener(OnItemSelectedListener onItemSelectedListener) 无 设置选中监听 无
setOnWheelChangedListener(OnWheelChangedListener onWheelChangedListener) 无 设置滚动变化监听 无