weidongjian / androidwheelview Goto Github PK
View Code? Open in Web Editor NEW仿照iOS的滚轮控件,从请吃饭apk反编译出来的
License: Apache License 2.0
仿照iOS的滚轮控件,从请吃饭apk反编译出来的
License: Apache License 2.0
怎样设置滚轮禁止滚动这个属性
loopview.setCurrentPosition(); 调用这个方法的时候。能加入移动动画最好
这样移动会平滑一点
setCurrentPosition(0) 还是有问题,会跳到数据的一半的位置
有左右两个滚轮,右边数据是要随着左边数据发生变化,右边滚轮滚动一次之后,滚动左边滚轮,此时右边数据需要改变,把右边滚轮的初始位置设置为0;设置setInitPosition(0)不管用,请问该如何解决?
只有两个item 男和女 当我点击这两个item区域外面的时候,会出现一个小问题。能力有限修改不了,大神能去看看吗? 谢谢啦
我设置了默认选中项,可是不走监听,能更新一下吗,这个样式很喜欢
删除java8的依赖后,没有发布啊
用height做作为直径,显示的是半个圆柱的面,现在很多扁平话UI都不需要这么大弧度,我直接修改了半径变量,显示效果错误。你应该是用itemheight * count/pi来计算半径,强制用measuredHeight 作为直径和为text total hight,太不灵活了。可以考虑下建议,添加个0-180的参数来设置弧度,所有item肯定都是要显示在屏幕上的,设置半径就可以很容易控制弧度,基本适合所有wheel的ui设计了,这才是灵活的设计。快实现吧,现在只能先换个控件了,
radius = measuredHeight * 30;//直接让半径*30,效果错误
halfCircumference = (int) (radius * Math.PI);
// maxTextHeight = (int) (halfCircumference / (lineSpacingMultiplier * (itemsVisibleCount - 1)));
public void setCurrentPosition(int position) {
//if (position >= 0 && position < items.size() && position != selectedItem) {
if (position > 0 && position < items.size() && position != selectedItem) {
initPosition = position;
totalScrollY = 0;
mOffset = 0;
invalidate();
}
}
I need to set initial position as float value instead of integer, is there any way for it?
大神,我在实际项目中使用该滑轮,在最底部有下一个item的部分文字,调整lineSpacingMultiplier大小无效,跪请大神帮忙。多谢了。我的邮箱:[email protected] 非常感谢!
错误信息:
07-13 10:52:02.907 16432-16432/io.dcloud.H53E50BCA E/InputEventReceiver: Exception dispatching input event.
07-13 10:52:02.907 16432-16432/io.dcloud.H53E50BCA E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
07-13 10:52:02.909 16432-16432/io.dcloud.H53E50BCA E/MessageQueue-JNI: java.lang.IllegalArgumentException: pointerIndex out of range
at android.view.MotionEvent.nativeGetAxisValue(Native Method)
at android.view.MotionEvent.getX(MotionEvent.java:2139)
at android.support.v4.view.ViewPager.onInterceptTouchEvent(ViewPager.java:2092)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2175)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:413)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1808)
at android.app.Activity.dispatchTouchEvent(Activity.java:3125)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:375)
at android.view.View.dispatchPointerEvent(View.java:10248)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4511)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4379)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3921)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3974)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3940)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4067)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3948)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4124)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3921)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3974)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3940)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3948)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3921)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6326)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6300)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6261)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6429)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:187)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:323)
at android.os.Looper.loop(Looper.java:139)
at android.app.ActivityThread.main(ActivityThread.java:6252)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:785)
07-13 10:52:02.909 16432-16432/io.dcloud.H53E50BCA D/AndroidRuntime: Shutting down VM
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: java.lang.IllegalArgumentException: pointerIndex out of range
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.MotionEvent.nativeGetAxisValue(Native Method)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.MotionEvent.getX(MotionEvent.java:2139)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.support.v4.view.ViewPager.onInterceptTouchEvent(ViewPager.java:2092)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2175)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
07-13 10:52:02.910 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:413)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1808)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.app.Activity.dispatchTouchEvent(Activity.java:3125)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:375)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.View.dispatchPointerEvent(View.java:10248)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4511)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4379)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3921)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3974)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3940)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4067)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3948)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4124)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3921)
07-13 10:52:02.911 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3974)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3940)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3948)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3921)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6326)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6300)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6261)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6429)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:187)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.os.MessageQueue.nativePollOnce(Native Method)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.os.MessageQueue.next(MessageQueue.java:323)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.os.Looper.loop(Looper.java:139)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6252)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at java.lang.reflect.Method.invoke(Native Method)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895)
07-13 10:52:02.912 16432-16432/io.dcloud.H53E50BCA W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:785)
07-13 10:52:03.670 8098-8098/? W/g.zlms.lms:cmf]: type=1400 audit(0.0:168573): avc: denied { ioctl } for path="socket:[14573011]" dev="sockfs" ino=14573011 ioctlcmd=8927 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:untrusted_app:s0:c512,c768 tclass=tcp_socket permissive=0
下面是我的代码
<com.weigan.loopview.LoopView
android:id="@+id/pur_wv_type"
android:layout_width="match_parent"
android:layout_height="160dp"
android:layout_marginLeft="6dip"
android:layout_weight="1" />
<com.weigan.loopview.LoopView
android:id="@+id/pur_wv_hard"
android:layout_width="match_parent"
android:layout_height="160dp"
android:layout_marginLeft="6dip"
android:layout_marginRight="6dip"
android:layout_weight="1" />
</LinearLayout>
大神, 想问一下, 就是上下两行的字体绘制时颜色如何才能分开设置呀.
现在代码中上下两行字体的颜色是通过一个paint设置的.
我现在想设置一个渐变色.就是: 第一行是从黑到灰渐变. 第三行是从灰到黑渐变.
不知道要如何改.
望大神解答!
谢谢.
可以支持水平方向滚动吗
Error:Error converting bytecode to dex:
Cause: Dex cannot parse version 52 byte code.
This is caused by library dependencies that have been compiled using Java 8 or above.
If you are using the 'java' gradle plugin in a library submodule add
targetCompatibility = '1.7'
sourceCompatibility = '1.7'
to that submodule's build.gradle file.
大神你好。
中间选中的那行的整行背景色可以设置吗?默认时透明的。
@weidongjian Could you add a way to change font of the scroll items?
Thanks
if (items!=null&&(items.size()-1)>initPosition)
{
}
忘了加=号,不然最后一个此方法选择不了
大神,把具体属性写出来,不然不会用啊
我把DEFAULT_LINE_SPACE改成1.0F之后感觉每行的text还是隔得很宽。感觉是由translateY来决定的。
设置字体大小完全没用
当该控件位于popupwindow 或者dialog中,滑动之后,就点击确定,回调的index是上一次的,
获取的下标不正确
我把条数改成3条数据越界了,怎么回事
控件设置的数据集值一样,eg,每个item 值 都是 “1”,onItemSelected事件 回调的 index 值 有误,都是0
LoopView.java的onDraw方法里:
@Override
protected void onDraw(Canvas canvas) {
if (items == null) {
return;
}
change = (int) (totalScrollY / (lineSpacingMultiplier * maxTextHeight));
preCurrentIndex = initPosition + change % items.size();
以上代码中,if里面没有判断items的size不为0 ,导致为0时,最后一行代码对0取余报下面错误:
java.lang.ArithmeticException: divide by zero
at com.weigan.loopview.LoopView.onDraw(LoopView.java:365)
at android.view.View.draw(View.java:16201)
at android.view.View.updateDisplayListIfDirty(View.java:15198)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3594)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3574)
at android.view.View.updateDisplayListIfDirty(View.java:15158)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3594)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3574)
at android.view.View.updateDisplayListIfDirty(View.java:15158)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3594)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3574)
at android.view.View.updateDisplayListIfDirty(View.java:15158)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3594)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3574)
at android.view.View.updateDisplayListIfDirty(View.java:15158)
setCurrentPosition(1)就可以。。。setCurrentPosition(0)不可以。。急求解决,老板
只能接收字符串使用起来的耦合性太大了,建议仿照adpter view的形式加载数据。
初始化loopView.setInitPosition(N)设置位置为任意数值N
在用户未滑动情况下,直接获取设定位置getSelectedItem()一直是0
滑动loopview后,getSelectedItem()才正常
如题
固定宽度或者fill都不可以
设置了没多大作用,设置过小,item太大
我不想数据重复显示,滚动到第一条数据或最后一条数据时就不能滚动
hello
in my project i want to set font on scroll items
how to it possible ??
and same as your code are applied
Hey,
Is there anyway to create an even when the user click on the selected item?
Thanks
有点击item的监听吗?
没找到任何规律。。不知原因
设置控件的高度会影响item的高度,但是,线外的item就显示不全了。而且!!!高度很不好控制啊,还会影响字体的显示
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.