android wheelview 字体颜色,百行代码实现Android WheelView
先說(shuō)下實(shí)現(xiàn)思路,這里,我打算使用ListView來(lái)實(shí)現(xiàn)。
第一步:無(wú)限滑動(dòng),這個(gè)比較簡(jiǎn)單,類似于Banner圖的無(wú)限滑動(dòng)原理,在Adapter中處理一下count即可,代碼如下
// 為Count設(shè)置一個(gè)較大的值
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
// 在getView中,在根據(jù)position取值的時(shí)候,根據(jù)數(shù)據(jù)源的大小進(jìn)行取余操作
int newpos = position;
if (position >= listDatas.size()) {
newpos = position % listDatas.size();
}
通過(guò)以上兩步操作,就簡(jiǎn)單實(shí)現(xiàn)的ListView的無(wú)限滑動(dòng)
第二步:獲取焦點(diǎn)Item
第二部稍微麻煩一點(diǎn),我們需要定位ListView中間的Item,并改變中間這個(gè)Item的樣式,使它和其他的Item有所區(qū)別,這里我們首先為L(zhǎng)istView添加一個(gè)OnScrollListener,實(shí)現(xiàn)onScroll方法,先看下方法體
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount)
firstVisibleItem:listView中第一個(gè)顯示的View的位置
visibleItemCount:listView中可見的Item的個(gè)數(shù)
totalItemCount:listVIew中Item的總個(gè)數(shù)
我們可以直接使用 firstVisibleItem+visibleItemCount/2 即可獲得中間Item的Position,這就讓問題變的簡(jiǎn)單了,我只需要把獲取到的中間Position傳遞到Adapter,然后重繪一次即可,最后再添加一個(gè)回調(diào)接口把Item的Content傳遞到外部即可。
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
mMiddlePosition = firstVisibleItem + visibleItemCount / 2;
// lastPosition 為了防止同一重復(fù)回調(diào)
if (mAdapter != null && mMiddlePosition != lastPosition) {
mAdapter.setMiddlePos(mMiddlePosition);
mAdapter.notifyDataSetChanged();
listener.onItemSelect(mAdapter.getItem(mMiddlePosition));
}
lastPosition = mMiddlePosition;
}
每當(dāng)我們Item位置發(fā)生改變,重新獲取到新的中間Item的Position的位置,把這個(gè)值傳遞給Adapter,然后調(diào)用一下notifyDataSetChanged重繪即可。
adapter中代碼
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = new TextView(mContext);
tv.setPadding(0, 10, 0, 10);
int newpos = position;
if (position >= listDatas.size()) {
newpos = position % listDatas.size();
}
if (newpos == (mMiddlePosition) % listDatas.size()) {
tv.setTextColor(Color.RED);
}
tv.setText(listDatas.get(newpos));
tv.setGravity(Gravity.CENTER);
return tv;
}
整個(gè)流程核心代碼不足百行,我們就簡(jiǎn)單實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的WheelView,連動(dòng)起來(lái)實(shí)現(xiàn)也很簡(jiǎn)單,這里就不再贅述,如果有小伙伴需要,請(qǐng)?jiān)谙路搅粞浴4蠹乙部梢愿鶕?jù)UI效果圖,自己添加相應(yīng)的UI效果
總結(jié)
以上是生活随笔為你收集整理的android wheelview 字体颜色,百行代码实现Android WheelView的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: w3m linux,Linux 终端浏览
- 下一篇: android doze模式源码分析,A