android滑动选择器,android 100行代码实现 仿苹果滑动选择器WheelView

datas = new ArrayList();

private BaseAdapter adapter;

public WheelView(Context context, AttributeSet attrs) {

super(context, attrs);

for (int i = 0; i < 18; i++) {

datas.add(i);

}

adapter = new BaseAdapter() {

public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null) {

convertView = View.inflate(getContext(), R.layout.item_num,

null);

}

int index = position % (datas.size() / 2);

int data = datas.get(index);

TextView num = (TextView) convertView.findViewById(R.id.num);

num.setText(String.valueOf(data));

num.setTextColor(Color.BLACK);

if ((getSelectionPosition() % datas.size() + 1) % datas.size() == position

% datas.size()) {

num.setTextColor(Color.RED);

}

return convertView;

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public Object getItem(int position) {

return null;

}

@Override

public int getCount() {

return Integer.MAX_VALUE;

}

};

setAdapter(adapter);

setOnScrollListener(new OnScrollListener() {

public void onScrollStateChanged(AbsListView view, int scrollState) {

if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {

adapter.notifyDataSetChanged();

setSelection(9 + getSelectionPosition()

% (datas.size() / 2));

}

}

public void onScroll(AbsListView view, int firstVisibleItem,

int visibleItemCount, int totalItemCount) {

}

});

setSelection(datas.size() / 2);

}

int getSelectionPosition() {

int ret = 0;

if (getChildCount() > 0) {

int h = getChildAt(0).getMeasuredHeight();

Rect r = new Rect();

getChildAt(0).getLocalVisibleRect(r);

if (r.height() > h / 2) {

ret = getFirstVisiblePosition();

} else {

ret = getFirstVisiblePosition() + 1;

}

}

return ret;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值