ScrollBarPanelWithClock:仿Path滚动条(scrollbar)效果

泡在网上的日子 / 文 发表于2014-08-14 00:34 次阅读 scrollbar

Path应用中scrollbar是一个带有时钟的矩形控件,随着listview的滚动scrollbar的数字和始终都会相应的发生改变。ScrollBarPanelWithClock实现了和path相同的功能,不过界面稍微简陋些。

ScrollBarPanelWithClock项目地址:https://github.com/learnNcode/ScrollBarPanelWithClock

用法:

xml

<com.learnNcode.android.ExtendedListView
    xmlns:clock="http://schemas.android.com/apk/res-auto"
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:choiceMode="singleChoice"
    clock:hand_second="@drawable/ic_timer_clock_minute_hand"
    clock:scrollBarPanel="@layout/scrollbarpanel"
    clock:scrollBarPanelInAnimation="@anim/in"
    clock:scrollBarPanelOutAnimation="@anim/out" />

activity中

ExtendedListView mListView = (ExtendedListView) findViewById(android.R.id.list);

listview滚动回调

mListView.setOnPositionChangedListener(new OnPositionChangedListener() {
    @Override
    public void onPositionChanged(ExtendedListView listView, int firstVisiblePosition, View scrollBarPanel) {
         Clock analogClockInstance = (Clock) scrollBarPanel.findViewById(R.id.analogClockScroller);
        Time time = new Time();
        analogClockInstance.setSecondHandVisibility(true);  // to visible second hand
        time.set(position+3, position, 5, 0, 0, 0);
        analogClockInstance.onTimeChanged(time);
        }
    }

可以在OnPositionChanged中初始化clock控件

Time timeObj = new Time();
analogClockObj.setSecondHandVisibility(true);
analogClockObj.setVisibility(View.VISIBLE);
timeObj.set(position+3, position, 5, 0, 0, 0); //pass respective values to the clock here.
analogClockObj.onTimeChanged(timeObj);

你可以设置是否显示时钟:

analogClockObj.setVisibility(View.VISIBLE);

还可以设置是否显示时钟的第二指针:

analogClockObj.setSecondHandVisibility(true);


github上还有一个实现了相同效果的开源库Android-ScrollBarPanel,地址https://github.com/rno/Android-ScrollBarPanel,不过Android-ScrollBarPanel大部分代码好像是copy ScrollBarPanelWithClock

,只不过它去掉了时钟控件,只是显示提示文字。

收藏 赞 (1) 踩 (0)
上一篇:ArcMenu,仿path中带动画效果的扇形菜单
国外的社交应用path的新建内容菜单看起来非常生动, ArcMenu 仿造path做出了相同的扇形菜单。 项目地址: https://github.com/daCapricorn/ArcMenu 用法: ArcMenu menu = (ArcMenu) findViewById(R.id.arc_menu);final int itemCount = ITEM_DRAWABLES.leng
下一篇:使用反射机制修改viewPager切换滑动速度
ViewPager的惯性效果(滑到一定距离自动平滑到另一个pager,或者调用setCurrentItem)是通过scroller来实现的, 其中有个变量为mScroller,为了修改这个滑动的速度,需要改变mScroller的一些值,但是mScroller是私有变量,所以在不直接修改ViewPager源码的情