GithubHelp home page GithubHelp logo

weidongjian / androidwheelview Goto Github PK

View Code? Open in Web Editor NEW
1.5K 1.5K 263.0 4.25 MB

仿照iOS的滚轮控件,从请吃饭apk反编译出来的

License: Apache License 2.0

Java 100.00%
android android-library

androidwheelview's People

Contributors

carlos2927 avatar chihane avatar weidongjian avatar wo5553435 avatar ysqchris avatar zhdhr0000 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

androidwheelview's Issues

在给你提个问题

loopview.setCurrentPosition(); 调用这个方法的时候。能加入移动动画最好
这样移动会平滑一点

第二次设置setInitPosition(0)不管用

有左右两个滚轮,右边数据是要随着左边数据发生变化,右边滚轮滚动一次之后,滚动左边滚轮,此时右边数据需要改变,把右边滚轮的初始位置设置为0;设置setInitPosition(0)不管用,请问该如何解决?

一个小问题

只有两个item 男和女 当我点击这两个item区域外面的时候,会出现一个小问题。能力有限修改不了,大神能去看看吗? 谢谢啦

设计建议,能不能不要按半圆柱面显示。

用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)));

setCurrentPosition 方法里 position应该是大于等于0

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();
}
}

设置俩个平行的数据的时候,两边同时滑动出现问题

错误信息:
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设置的.
我现在想设置一个渐变色.就是: 第一行是从黑到灰渐变. 第三行是从灰到黑渐变.
不知道要如何改.
望大神解答!
谢谢.

can't compile with java8 in android studio 2.2.2

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.

setInitPosition()

if (items!=null&&(items.size()-1)>initPosition)
{
}
忘了加=号,不然最后一个此方法选择不了

怎样更改行距?

我把DEFAULT_LINE_SPACE改成1.0F之后感觉每行的text还是隔得很宽。感觉是由translateY来决定的。

回调时间比较长

当该控件位于popupwindow 或者dialog中,滑动之后,就点击确定,回调的index是上一次的,

LoopView.java的onDraw方法crash崩溃

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)

中间的文字未垂直居中

如图,LoopView 布局高度设置的为150dp

image

此外,itemsVisibleCount也有问题,我这边是设置的7,显示5个

数据问题

我不想数据重复显示,滚动到第一条数据或最后一条数据时就不能滚动

onSelectedItemClick

Hey,
Is there anyway to create an even when the user click on the selected item?
Thanks

宽度怎么控制?

设置控件的高度会影响item的高度,但是,线外的item就显示不全了。而且!!!高度很不好控制啊,还会影响字体的显示

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.