package com.codbking.widget; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.LinearLayout; import com.codbking.widget.view.OnWheelChangedListener; import com.codbking.widget.view.OnWheelScrollListener; import com.codbking.widget.view.WheelView; import com.codbking.widget.genview.GenWheelText; import com.codbking.widget.genview.WheelGeneralAdapter; /** * Created by codbking on 2016/8/11. */ abstract class BaseWheelPick extends LinearLayout implements OnWheelChangedListener , OnWheelScrollListener { protected int textColor = 0xffdddddd; protected int selectColor = 0xff444444; protected int split = 0xffdddddd; protected int splitHeight = 1; protected Context ctx; private GenWheelText genView; public BaseWheelPick(Context context) { super(context); init(context); } public BaseWheelPick(Context context, AttributeSet attrs) { super(context, attrs); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DatePicker); textColor = a.getColor(R.styleable.DatePicker_picker_text_color, 0xffdddddd); selectColor = a.getColor(R.styleable.DatePicker_picker_select_textColor, 0xff444444); split = a.getColor(R.styleable.DatePicker_picker_split, 0xffdddddd); splitHeight = (int) a.getDimension(R.styleable.DatePicker_picker_split_height, 0.5f); a.recycle(); init(context); } private void init(Context context) { genView = new GenWheelText(textColor); this.ctx = context; LayoutInflater.from(context).inflate(getLayout(), this); } protected void setWheelListener(WheelView wheelView, Object[] data, boolean isCyclic) { WheelGeneralAdapter viewAdapter = new WheelGeneralAdapter(ctx, genView); if (data[0] instanceof Integer) { viewAdapter.setData(convertData(wheelView, (Integer[]) data)); } else { viewAdapter.setData(data); } wheelView.setSelectTextColor(textColor, selectColor); wheelView.setCyclic(isCyclic); wheelView.setViewAdapter(viewAdapter); wheelView.addChangingListener(this); wheelView.addScrollingListener(this); } protected String[] convertData(WheelView wheelView, Integer[] data) { return new String[0]; } protected abstract int getLayout(); protected abstract int getItemHeight(); protected abstract void setData(Object[] datas); @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setStrokeWidth(splitHeight); paint.setColor(split); paint.setAntiAlias(true); paint.setStyle(Paint.Style.FILL); int itemHeight = getItemHeight(); for (int i = 0; i < 5; i++) { canvas.drawLine(0, (i + 1) * itemHeight, getWidth(), (i + 1) * itemHeight, paint); } } @Override public void onChanged(WheelView wheel, int oldValue, int newValue) { } }