package cn.qqtheme.framework.picker; import android.app.Activity; import android.support.annotation.ColorInt; import android.support.annotation.FloatRange; import android.support.annotation.IntRange; import android.support.annotation.Nullable; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import cn.qqtheme.framework.popup.ConfirmPopup; import cn.qqtheme.framework.widget.WheelView; /** * 滑轮选择器 * * @author 李玉江[QQ:1032694760] * @since 2015/12/22 */ public abstract class WheelPicker extends ConfirmPopup<View> { protected float lineSpaceMultiplier = WheelView.LINE_SPACE_MULTIPLIER; protected int padding = WheelView.TEXT_PADDING; protected int textSize = WheelView.TEXT_SIZE; protected int textColorNormal = WheelView.TEXT_COLOR_NORMAL; protected int textColorFocus = WheelView.TEXT_COLOR_FOCUS; protected int offset = WheelView.ITEM_OFF_SET; protected boolean cycleDisable = true; protected WheelView.DividerConfig dividerConfig = new WheelView.DividerConfig(); protected View contentView; public WheelPicker(Activity activity) { super(activity); } /** * 可用于设置每项的高度,范围为2-4 */ public final void setLineSpaceMultiplier(@FloatRange(from = 2, to = 4) float multiplier) { lineSpaceMultiplier = multiplier; } /** * 可用于设置每项的宽度,单位为dp */ public void setPadding(int padding) { this.padding = padding; } /** * 设置文字大小 */ public void setTextSize(int textSize) { this.textSize = textSize; } /** * 设置文字颜色 */ public void setTextColor(@ColorInt int textColorFocus, @ColorInt int textColorNormal) { this.textColorFocus = textColorFocus; this.textColorNormal = textColorNormal; } /** * 设置文字颜色 */ public void setTextColor(@ColorInt int textColor) { this.textColorFocus = textColor; } /** * 设置分隔阴影是否可见 */ public void setShadowVisible(boolean shadowVisible) { if (null == dividerConfig) { dividerConfig = new WheelView.DividerConfig(); } dividerConfig.setShadowVisible(shadowVisible); } /** * 设置分隔阴影颜色及透明度 */ public void setShadowColor(@ColorInt int color) { setShadowColor(color, 100); } /** * 设置分隔阴影颜色及透明度 */ public void setShadowColor(@ColorInt int color, @IntRange(from = 1, to = 255) int alpha) { if (null == dividerConfig) { dividerConfig = new WheelView.DividerConfig(); } dividerConfig.setShadowColor(color); dividerConfig.setShadowAlpha(alpha); } /** * 设置分隔线是否可见 */ public void setDividerVisible(boolean visible) { if (null == dividerConfig) { dividerConfig = new WheelView.DividerConfig(); } dividerConfig.setVisible(visible); } /** * @deprecated use {@link #setDividerVisible(boolean)} instead */ @Deprecated public void setLineVisible(boolean visible) { setDividerVisible(visible); } /** * @deprecated use {@link #setDividerColor(int)} instead */ @Deprecated public void setLineColor(@ColorInt int color) { setDividerColor(color); } /** * 设置分隔线颜色 */ public void setDividerColor(@ColorInt int lineColor) { if (null == dividerConfig) { dividerConfig = new WheelView.DividerConfig(); } dividerConfig.setVisible(true); dividerConfig.setColor(lineColor); } /** * 设置分隔线长度比例 */ public void setDividerRatio(float ratio) { if (null == dividerConfig) { dividerConfig = new WheelView.DividerConfig(); } dividerConfig.setRatio(ratio); } /** * 设置分隔线配置项,设置null将隐藏分割线及阴影 */ public void setDividerConfig(@Nullable WheelView.DividerConfig config) { if (null == config) { dividerConfig = new WheelView.DividerConfig(); dividerConfig.setVisible(false); dividerConfig.setShadowVisible(false); } else { dividerConfig = config; } } /** * @deprecated use {@link #setDividerConfig(WheelView.DividerConfig)} instead */ @Deprecated public void setLineConfig(WheelView.DividerConfig config) { setDividerConfig(config); } /** * 设置选项偏移量,可用来要设置显示的条目数,范围为1-5。 * 1显示3条、2显示5条、3显示7条…… */ public void setOffset(@IntRange(from = 1, to = 5) int offset) { this.offset = offset; } /** * 设置是否禁用循环 */ public void setCycleDisable(boolean cycleDisable) { this.cycleDisable = cycleDisable; } /** * 得到选择器视图,可内嵌到其他视图容器 */ @Override public View getContentView() { if (null == contentView) { contentView = makeCenterView(); } return contentView; } protected WheelView createWheelView() { WheelView wheelView = new WheelView(activity); wheelView.setLineSpaceMultiplier(lineSpaceMultiplier); wheelView.setPadding(padding); wheelView.setTextSize(textSize); wheelView.setTextColor(textColorNormal, textColorFocus); wheelView.setDividerConfig(dividerConfig); wheelView.setOffset(offset); wheelView.setCycleDisable(cycleDisable); return wheelView; } protected TextView createLabelView() { TextView labelView = new TextView(activity); labelView.setLayoutParams(new ViewGroup.LayoutParams(WRAP_CONTENT, WRAP_CONTENT)); labelView.setTextColor(textColorFocus); labelView.setTextSize(textSize); return labelView; } }