效果

android 100行代码实现 仿苹果滑动选择器WheelView_第1张图片

 

源码

public class WheelView extends ListView { private List 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; }}


更多相关文章

  1. Android 使用git下载源码报错解决方法
  2. android binder机制及其源码解析之第二节 重要函数讲解之常用数
  3. android源码分享之时光日志个人日程管理
  4. android 浏览普通彩信列表核心源码
  5. Android在WebView中获取网页源码
  6. android EditText 设置密码锁源码
  7. Android 9.0 System.loadLibrary 的源码解析
  8. Android Sync 同步 源码问题解决方案
  9. android AsyncTask 源码跟踪

随机推荐

  1. Android四大布局之线性布局及其属性
  2. Android系统文件夹结构解析
  3. Android Camera 使用小结
  4. android获取mac地址
  5. android自定义view属性
  6. Maven + Eclipse + Android 环境搭建
  7. android系统自带的Service原理与使用
  8. 设置Android状态栏的颜色
  9. android 配置属性
  10. Android--Selector、shape详解 (