GithubHelp home page GithubHelp logo

venshine / wheelview Goto Github PK

View Code? Open in Web Editor NEW
1.0K 24.0 217.0 5.04 MB

Android滚轮控件,基于ListView实现,可以自定义样式。

License: Apache License 2.0

Java 100.00%
wheelview wheel android android-wheel android-wheelpicker wheels

wheelview's Introduction

WheelView

Android Arsenal API

Android滚轮控件,基于ListView实现,可以自定义样式。

Features

  • 支持自定义滚轮样式
  • 支持common和holo两种皮肤
  • 支持文本和图文混排两中数据模版
  • 支持循环显示数据
  • 支持选中项添加附加文本
  • 支持设置滚轮刻度
  • 支持联动功能
  • 支持嵌入滚动控件中(NestedScrollView)
  • 支持滚轮对话框
  • 支持滚轮选中项点击事件

ScreenShot

Usage

Gradle:
compile 'com.wx.wheelview:wheelview:1.3.3'
导入Eclipse:

下载jar包

Demo

Use the WheelView as a View, Java and XML are both supported.

Java:
    public class MainActivity extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main)

            WheelView wheelView = (WheelView) findViewById(R.id.wheelview);
            wheelView.setWheelAdapter(new ArrayWheelAdapter(this)); // 文本数据源
            wheelView.setSkin(WheelView.Skin.Common); // common皮肤
            wheelView.setWheelData( ?);  // 数据集合

        }
    }
XML:
    <com.wx.wheelview.widget.WheelView
            android:id="@+id/wheelview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
Methods:
method 方法 description 描述
void setWheelAdapter(BaseWheelAdapter adapter) 设置滚轮数据源适配器(required)
void setWheelData(List list) 设置滚轮数据(required)
void setLoop(boolean loop) 设置滚轮是否循环滚动
void setWheelSize(int wheelSize) 设置滚轮个数
void setSkin(Skin skin) 设置皮肤风格
Skin getSkin() 获得皮肤风格
void setStyle(WheelViewStyle style) 设置滚轮样式
WheelViewStyle getStyle() 获得滚轮样式
void setWheelClickable(boolean clickable) 设置滚轮选中项是否可点击
void setSelection(final int selection) 设置滚轮位置
int getSelection() 获取滚轮位置
void join(WheelView wheelView) 连接副WheelView(联动设置)
void joinDatas(HashMap<String, List> map) 副WheelView数据(联动设置)
int getCurrentPosition() 获取当前滚轮位置
T getSelectionItem() 获取当前滚轮位置的数据
void setExtraText(String text, int textColor, int textSize, int margin) 设置选中行附加文本
int getWheelCount() 获得滚轮数据总数
void setOnWheelItemSelectedListener(OnWheelItemSelectedListener onWheelItemSelectedListener) 设置滚轮滑动停止时事件,监听滚轮选中项
void setOnWheelItemClickListener(OnWheelItemClickListener onWheelItemClickListener) 设置滚轮选中项点击事件
WheelViewDialog setDialogStyle(int color) 设置Dialog外观颜色

History

  • 1.0.0(2016-03-24)
    • 完成滚轮控件
  • 1.1.0(2016-03-28)
    • 支持联动功能
  • 1.2.3(2016-04-14)
    • 支持嵌入滚动控件
  • 1.3.0(2016-04-15)
    • 支持滚轮对话框
  • 1.3.1(2016-04-18)
    • 增加滚轮选中项点击事件

About

License

Copyright (C) 2016 [email protected]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

wheelview's People

Contributors

venshine 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

wheelview's Issues

setWheelAdapter导致闪烁

在调用setSelection的时候,会出现闪烁的情况
在setSelection的时候不要把View设为INVISIBLE

Change Margin,width,height

I wanna change each list Change Margin,width,height.
image margin,width,height,Text width,height.
width are static that not change.
also each list height,width.
and change gravity to center.

And When I do this style.selectedTextColor = Color.WHITE;
blow black.
I wanna white but it print black.

gradle app 中引入后报错

Error:Execution failed for task ':app:processDebugManifest'.

Manifest merger failed : Attribute application@allowBackup value=(false) from AndroidManifest.xml:28:9-36
is also present at [com.wx.wheelview:wheelview:1.3.3] AndroidManifest.xml:12:9-35 value=(true).
Suggestion: add 'tools:replace="android:allowBackup"' to element at AndroidManifest.xml:26:5-77:19 to override.

selectTextcolor无效啊

设置selectTextcolor无效,wheelview 加了背景之后再去设置选中文字的颜色不起作用。

多个控件并排,出现没有动画效果,没有横线了

qq 20160728155058
在弹框里面三个控件并排放,属性都设置了,但是第二个控件出现没有动画效果,没有横线了,不知道为什么
`setWheelDefault(tvWheel1);
setWheelDefault(tvWheel2);
setWheelDefault(tvWheel3);

private void setWheelDefault(com.wx.wheelview.widget.WheelView wheel) {
wheel.setWheelSize(5);
wheel.setSkin(WheelView.Skin.Holo);
WheelView.WheelViewStyle style = wheel.getStyle();
style.backgroundColor = Color.rgb(246, 246, 246);
style.holoBorderColor = Color.rgb(200, 200, 200);
style.selectedTextZoom = 1.3f;
style.textAlpha = 0.6f;
wheel.setStyle(style);
wheel.setWheelAdapter(new ArrayWheelAdapter(mContext));
}`

Border Color

Trying to put two WheelView in horizontal linear layout, but there is border color which is not going away.

aaa

怎么没有加载Itemlayout的方法

dialog contains wheelview issues

i write a view contains three wheelview in it.
when i open a dialog and set this view, i set one open and the other two gone , the open one set selectlistener and when the selected changed,I set the other two visiable,the issues coming:
the dialog‘s height has changed,and the other wheelview's wheelSize didn't work,can you fix it?

Wheel Disappear and Appear again when calling setSelection (ver 1.3.3)

I dont know if this is the normal behavior of the control but when setSelection is called in the code, the wheel disappear and appear again displaying the correct text/position.

My issue is the disappear and appearing of the control. Is there a way to prevent this when calling the setSelection.

Fatal Exception: java.lang.StackOverflowError: stack size 8MB

Hey got this error 👎
Fatal Exception: java.lang.StackOverflowError: stack size 8MB
at android.os.Handler.removeMessages(Handler.java:648)
at android.view.Choreographer.removeCallbacksInternal(Choreographer.java:414)
at android.view.Choreographer.removeCallbacks(Choreographer.java:402)
at android.view.View.removeCallbacks(View.java:13183)
at android.widget.AbsListView$FlingRunnable.endFling(AbsListView.java:4751)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5020)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5001)
at com.ela.android.utilities.wheelview.widget.WheelView$4.onScrollStateChanged(Unknown Source)
at android.widget.AbsListView.reportScrollStateChange(AbsListView.java:4599)
at android.widget.AbsListView$FlingRunnable.endFling(AbsListView.java:4754)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5020)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5001)
at com.ela.android.utilities.wheelview.widget.WheelView$4.onScrollStateChanged(Unknown Source)
at android.widget.AbsListView.reportScrollStateChange(AbsListView.java:4599)
at android.widget.AbsListView$FlingRunnable.endFling(AbsListView.java:4754)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5020)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5001)
at com.ela.android.utilities.wheelview.widget.WheelView$4.onScrollStateChanged(Unknown Source)
at android.widget.AbsListView.reportScrollStateChange(AbsListView.java:4599)
at android.widget.AbsListView$FlingRunnable.endFling(AbsListView.java:4754)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5020)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5001)
at com.ela.android.utilities.wheelview.widget.WheelView$4.onScrollStateChanged(Unknown Source)
at android.widget.AbsListView.reportScrollStateChange(AbsListView.java:4599)
at android.widget.AbsListView$FlingRunnable.endFling(AbsListView.java:4754)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5020)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5001)
at com.ela.android.utilities.wheelview.widget.WheelView$4.onScrollStateChanged(Unknown Source)
at android.widget.AbsListView.reportScrollStateChange(AbsListView.java:4599)
at android.widget.AbsListView$FlingRunnable.endFling(AbsListView.java:4754)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5020)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5001)
at com.ela.android.utilities.wheelview.widget.WheelView$4.onScrollStateChanged(Unknown Source)
at android.widget.AbsListView.reportScrollStateChange(AbsListView.java:4599)
at android.widget.AbsListView$FlingRunnable.endFling(AbsListView.java:4754)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5020)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5001)
at com.ela.android.utilities.wheelview.widget.WheelView$4.onScrollStateChanged(Unknown Source)
at android.widget.AbsListView.reportScrollStateChange(AbsListView.java:4599)
at android.widget.AbsListView$FlingRunnable.endFling(AbsListView.java:4754)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5020)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5001)
at com.ela.android.utilities.wheelview.widget.WheelView$4.onScrollStateChanged(Unknown Source)
at android.widget.AbsListView.reportScrollStateChange(AbsListView.java:4599)
at android.widget.AbsListView$FlingRunnable.endFling(AbsListView.java:4754)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5020)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5001)
at com.ela.android.utilities.wheelview.widget.WheelView$4.onScrollStateChanged(Unknown Source)
at android.widget.AbsListView.reportScrollStateChange(AbsListView.java:4599)
at android.widget.AbsListView$FlingRunnable.endFling(AbsListView.java:4754)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5020)
at android.widget.AbsListView.smoothScrollBy(AbsListView.java:5001)
at com.ela.android.utilities.wheelview.widget.WheelView$4.onScrollStateChanged(Unknown Source)
at android.widget.AbsListView.reportScrollStateChange(AbsListView.java:4599)
at android.widget.AbsListView$FlingRunnable.endFling(AbsListView.java:4754)
at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:4851)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:873)
at android.view.Choreographer.doCallbacks(Choreographer.java:676)
at android.view.Choreographer.doFrame(Choreographer.java:603)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:859)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:168)
at android.app.ActivityThread.main(ActivityThread.java:5885)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)

Adapter只支持String类型

虽然setWheelData的参数是List,但是传入List时就会报ClassCastException,因为把Integer强制转成了String

WheelView加载时有短暂的延迟

启动页面时,页面重的wheelview加载时会有一个短暂的延迟,demo中第二列的后两个wheelview也有此现象,不知道这是什么原因?

自定义属性再加一个选中框宽度吧

我看项目中有holoBorderColor属性可以自定义选中框的颜色,但是这个选中框的宽度应该也可以自定义,添加一个holoBorderWidth属性体验会更好一点,我把代码拷贝过来后自己加了这么一个属性。

Freezing in scroll wheelView

When I increase the size of the wheelview, it's freezing in scroll operations on Samsung S4,S5,A5,A3
For example : wheelView.setWheelSize(11); 13,15

setSelection delay

Hi @venshine, Thanks for a great repo!
I was just talking with @w3bfr3ak in #16 about the setSelection method. It seems that we both have uses for setting the selection while the wheel is being used. However, your repo uses postDelay and setVisibility causing a >.5 second delay. I've modified it in my fork to remove the delay and toggling and haven't seen any issues on my end. Was there a reason you used a delay? If not, would you like me to make a pull request?

My small change is here: https://github.com/ahaverty/WheelView/blob/master/wheelview/src/main/java/com/wx/wheelview/widget/WheelView.java#L379
Dependency on jitpack https://jitpack.io/#ahaverty/WheelView/1.3.4

Google translate version:
@venshine ,谢谢你为一个伟大的回购!
我在 #16 对setSelection方法, @w3bfr3ak 只是谈论。看来,我们都有设置的选择,而正在使用的轮用途。但是,您的回购使用postDelay和setVisibility造成 > .5,秒的延迟。我在我的叉子去掉延迟和反复修改,并没有看到我的结束的任何问题。有没有你使用的延迟的一个原因?如果没有,你要我做一个拉要求?

我小的变化是在这里:
https://github.com/ahaverty/WheelView/blob/master/wheelview/src/main/java/com/wx/wheelview/widget/WheelView.java#L379

Dependency on jitpack https://jitpack.io/#ahaverty/WheelView/1.3.4

这个在设置日期联动上面有坑啊

在选择年月日上的时候,发现设置联动有坑啊,投试着通过滑动监听的方式,来对选择天进行动态设置data,发现每次都会重刷一下数据,体验很不好

有沒有人可以提供 Kotlin 碼?

WheelView wheelView = (WheelView) findViewById(R.id.wheelview);
wheelView.setWheelAdapter(new ArrayWheelAdapter(this)); // 文本数据源
wheelView.setSkin(WheelView.Skin.Common); // common皮肤
wheelView.setWheelData( ?); // 数据集合

关于设置setSelection无效的问题

你好,感谢的控件为我提供了非常便利的功能,但是我在使用过程中发现setSelection没有作用
WheelView.WheelViewStyle wheelViewStyle = new WheelView.WheelViewStyle(); wheelViewStyle.backgroundColor = Color.TRANSPARENT; wheelViewStyle.holoBorderColor = getResources().getColor(R.color.appGray3); bookingAmPm = (WheelView) root.findViewById(R.id.booking_am_pm); bookingHours = (WheelView) root.findViewById(R.id.booking_hours); bookingMinutes = (WheelView) root.findViewById(R.id.booking_minutes); bookingAmPm.setSkin(WheelView.Skin.Holo); bookingAmPm.setStyle(wheelViewStyle); bookingHours.setSkin(WheelView.Skin.Holo); bookingHours.setStyle(wheelViewStyle); bookingMinutes.setSkin(WheelView.Skin.Holo); bookingMinutes.setStyle(wheelViewStyle); bookingAmPm.setWheelAdapter(new ArrayWheelAdapter(getContext())); bookingHours.setWheelAdapter(new ArrayWheelAdapter(getContext())); bookingMinutes.setWheelAdapter(new ArrayWheelAdapter(getContext())); bookingAmPm.setWheelData(Arrays.asList(getResources().getStringArray(R.array.booking_am_pm_array))); bookingAmPm.setWheelSize(Arrays.asList(getResources().getStringArray(R.array.booking_am_pm_array)).size()); bookingHours.setWheelData(Arrays.asList(getResources().getStringArray(R.array.booking_hour_array))); bookingHours.setWheelSize(Arrays.asList(getResources().getStringArray(R.array.booking_hour_array)).size()); bookingMinutes.setWheelData(Arrays.asList(getResources().getStringArray(R.array.booking_minute_array))); bookingMinutes.setWheelSize(Arrays.asList(getResources().getStringArray(R.array.booking_minute_array)).size()); // bookingAmPm.setSelection(Calendar.getInstance().get(Calendar.AM_PM)); // bookingHours.setSelection(Calendar.getInstance().get(Calendar.HOUR)); // bookingMinutes.setSelection(Calendar.getInstance().get(Calendar.MINUTE)); bookingAmPm.setSelection(1); bookingHours.setSelection(2); bookingMinutes.setSelection(3);

同时我在设置setWheelSize时会报“wheel size must be an odd number.”的错误,说数据必须为奇数,可是我数据的多少是由对方决定的不是我决定的,不知道这个控件该怎么用,谢谢

三级联动Bug

三级联动时,方法int getSelection() T getSelectionItem()等方法失效,返回0或null

helllo

首先感谢你的分享 然后我想知道有没有方法改变wheelview的高度

wheelView.getSelection()的值为变化

wheelView.setWheelData(Arrays.asList(arr));
childWheelView.setWheelData(createSubDatas(astLists)
.get(astLists.get(wheelView.getSelection()).getTypeName()));
wheelView.join(childWheelView);
wheelView.joinDatas(createSubDatas(astLists));
String danwei = createSubDatas(astLists)
.get(astLists.get(wheelView.getSelection()).getTypeName())
.get(childWheelView.getSelection()).getUnitName();
Log.i("TAG", "danwei:" + danwei);
Log.i("TAG", "wheelView.getSelection():" + wheelView.getSelection());
Log.i("TAG", "childWheelView.getSelection():" + childWheelView.getSelection());
tvDanwei.setText(danwei);

关联的wheelview的数据都是对的,但是在设置单位的时候,无论wheelview怎么滚动,单位的值始终都是默认的第一个,而且滚动,log出来的都是0.请教下这是怎么得呢?帮忙分析哈

Can't set text color with Color.WHITE

The Color.WHITE value is -1.
However, the checking condition in WheelView.refreshTextView is incorrect.

int textColor = mStyle.textColor != -1 ? mStyle.textColor : WheelConstants.WHEEL_TEXT_COLOR;

The text color is always set to WheelConstants.WHEEL_TEXT_COLOR
Please modify it.

style not applied problem!

bellow style not working , and text still is black , and there is no difference between text size and selected text size in!!!! why?
is there a problem in this code?

WheelView.WheelViewStyle style = new WheelView.WheelViewStyle();
      style.backgroundColor = Color.TRANSPARENT;
      style.selectedTextColor = Color.parseColor("#f1f2f2");
      style.textColor = Color.parseColor("#9a9a9a");
      style.holoBorderColor = Color.parseColor("#666666");
      style.textSize = 16;
      style.selectedTextSize = 20;

      WheelView simpleWheelView = (WheelView) view.findViewById(R.id.year_wheelview);
      simpleWheelView.setWheelAdapter(new ChannelWheelAdapter(getContext()));
      simpleWheelView.setWheelSize(7);
      simpleWheelView.setWheelData(createDatas());
      simpleWheelView.setLoop(true);
      simpleWheelView.setSkin(WheelView.Skin.Holo);
      simpleWheelView.setStyle(style);

在htc手机上无法滚动修正选中位置的偏移量

在htc one(m7)测试手机上方向滚动后无法修正选中位置的偏移量,发现在这个手机上smoothScrollBy需要放在handler里去post处理才能实现,但是用着个方法发现另一个问题就是在滚动偏移量的过程中没法操作滚轮,必须处理完以后才可以再次操作,不是很跟手
`if (Math.abs(deltaY) < mItemH / 2) {

// distance = getSmoothDistance(deltaY);
distance = (int)deltaY;
WheelView.this.post(new Runnable() {
@OverRide
public void run() {
smoothScrollBy(distance, WheelConstants.WHEEL_SMOOTH_SCROLL_DURATION);
}
});
} else {
distance = (int)(mItemH + deltaY);
// distance = getSmoothDistance(mItemH + deltaY);
WheelView.this.post(new Runnable() {
@OverRide
public void run() {
smoothScrollBy(distance, WheelConstants.WHEEL_SMOOTH_SCROLL_DURATION);
}
});
}`

这是我现在的临时方案,不知道是否有其他解决方法

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.