baoyachi / stepview Goto Github PK
View Code? Open in Web Editor NEWStep by step,just use HorizontalStepView,VerticalStepView. step indicator,flow indicator,timeline,order process,express status
License: Apache License 2.0
Step by step,just use HorizontalStepView,VerticalStepView. step indicator,flow indicator,timeline,order process,express status
License: Apache License 2.0
请增加项目混淆配置规则
一个小问题,虽然在这个控件库中没有问题,但我觉得编程中应该是要注意的。
VerticalStepViewIndicator的onDraw()方法的第二句,mOnDrawListener是由外面设置的,此处使用时需要判断是否为null,在预览widget_vertical_stepsview.xml时可以看到的。
if (mOnDrawListener!=null){
mOnDrawListener.onDrawIndicator();
}
相同的问题有4个。
This is my example code:
` HorizontalStepView stepViewIndicator = findViewById(R.id.stepViewIndicator);
List<StepBean> stepsBeanList = new ArrayList<>();
StepBean stepBean0 = new StepBean("1",1);
StepBean stepBean1 = new StepBean("2",1);
StepBean stepBean2 = new StepBean("3",1);
StepBean stepBean3 = new StepBean("4",0);
StepBean stepBean4 = new StepBean("5",-1);
stepsBeanList.add(stepBean0);
stepsBeanList.add(stepBean1);
stepsBeanList.add(stepBean2);
stepsBeanList.add(stepBean3);
stepsBeanList.add(stepBean4);
stepViewIndicator
.setStepViewTexts(stepsBeanList)
.setTextSize(R.dimen.label_text)
.setStepsViewIndicatorCompletedLineColor(ContextCompat.getColor(this, android.R.color.white))
.setStepsViewIndicatorUnCompletedLineColor(ContextCompat.getColor(this, R.color.colorAccentLight))
.setStepViewComplectedTextColor(ContextCompat.getColor(this, android.R.color.white))
.setStepViewUnComplectedTextColor(ContextCompat.getColor(this, R.color.colorAccentLight))
.setStepsViewIndicatorCompleteIcon(ContextCompat.getDrawable(this, R.drawable.complted))
.setStepsViewIndicatorDefaultIcon(ContextCompat.getDrawable(this, R.drawable.default_icon))
.setStepsViewIndicatorAttentionIcon(ContextCompat.getDrawable(this, R.drawable.attention));`
<com.baoyachi.stepview.HorizontalStepView android:id="@+id/stepViewIndicator" android:layout_width="match_parent" android:layout_height="90dp" android:layout_centerInParent="true" android:layout_below="@+id/txtSubTitle" />
No label texts under icons
Any idea?
Hi,
First thanks for this great library, would you please create support for RTL version , without rtl this is waste for me.
My texts for a single step are too long, such that they overlap. I would like to handle this by rotating the text. This would be a nice feature, which I have not found yet.
i found issue, when add null list to VerticalStepView.setStepViewTexts
HorizontalStepView怎么没有setStepsViewIndicatorComplectingPosition()这个方法,那HorizontalStepView怎么动态更新完成到哪一步?
实际需求中需要对特定Drawable实现点击事件,该怎么实现呢?
Can we make it like a "snakeStepView" than has both vertical and horizontal support?
我所尝试的VerticalStepView中xml设置高度使用wrap_content属性不起作用,默认占据了全屏?是否存在此问题?我没看源码,再下小白,也不想看view的绘制流程
Not showing anything in HorizontalStepView if adds less than 5 items in list?
How to set is not complete or has completed the line styles, rather than set the color
为什么不搞一个取出当前到第几步的方法?
这样不就可以动态实现跑到下一步还是回到上一步
`
public void click(View v){
int currentPosition = stepViewSelf.getStepsViewIndicatorComplectingPosition();
switch (v.getId()){
case R.id.plus:
if(currentPosition == list0.size()-1) return;
stepViewSelf.setStepsViewIndicatorComplectingPosition(++currentPosition);
break;
case R.id.dec:
if(currentPosition == 0) return;
stepViewSelf.setStepsViewIndicatorComplectingPosition(--currentPosition);
break;
}
}
public void setmComplectingPosition(int mComplectingPosition) {
this.mComplectingPosition = mComplectingPosition;
invalidate();
}
`
setpview0.setStepsViewIndicatorComplectingPosition(1)//设置完成的步数 .setStepViewTexts(list0)//总步骤 .setTextSize(16)//set textSize .setStepsViewIndicatorCompletedLineColor(ContextCompat.getColor(getActivity(), android.R.color.white))//设置StepsViewIndicator完成线的颜色 .setStepsViewIndicatorUnCompletedLineColor(ContextCompat.getColor(getActivity(), R.color.uncompleted_text_color))//设置StepsViewIndicator未完成线的颜色 .setStepViewComplectedTextColor(ContextCompat.getColor(getActivity(), android.R.color.white))//设置StepsView text完成线的颜色 ;
i am making one global variable of HorizontalStepView and setting up.
then when user click on button i am calling
`mView.findViewById(R.id.an).setOnClickListener(new View.OnClickListener() {
@OverRide
public void onClick(View view) {
setpview0.setStepsViewIndicatorComplectingPosition(3);
}
});`
but it is not updating
放个点的图标上去,直接放大失真了
how to setup for right to left language?
How can I change the width of the line dividers? I want the stepView to match_parent
我怎样才能改变线分隔的宽度是多少?我想 stepView 到 match_parent
谢谢
刷新会出现覆盖现象 就是数据重新添加会出问题
minSdkVersion 16
这个最小一定要是16的吗,我的项目是15然后gradle导入你这个包冲突了。。。。。
点击/滑动 第几步就跳转到那个圆点。
HorizontalStepView只能居中显示吗?靠左设置无效!
Hi,
Are the 'StepView' also buttons? wanted clickable steps to switch between multiple steps (& show their current statuses)
Regards,
1.当第一个点处在当前运行点时,它后面的线(第一条线)应该是虚线,实际运行是实线
2.除了第一个完成节点外的其它完成节点字体颜色和未完成字体颜色一样,设置不起作用。
You will be so expect ! Will not disappoint you!Wish me luck. See you later
hi
i want to set StepsViewIndicatorCompleted without moving forward for line? is any way to set ?
so use case is right no i have 3 step so i want set 2nd step as completed but line should be between 1->2 not 2->3
StepView每一步的图标能不能改成都可设置?因为有时候每一步的图标都不一,我看源码好像就是每一步都一样(我自己也可以修改哈,只是做个建议)
默认的字体都是粗体的,在我这个项目里不太协调,请问有方法可以把粗体去除掉吗?
@DebugLog
public void getStatus() {
RequestQueue `requestQueue` = MyVolley.getRequestQueue();
StringRequest request = new StringRequest(Request.Method.GET, AppConfig.SM_DD_STATUS + "/" + mId, new Response.Listener<String>() {
@DebugLog
@Override
public void onResponse(String response) {
if (!StringUtils.isEmpty(response))
setStepView(new Gson().fromJson(response, SmStatus[].class));
}
}, new Response.ErrorListener() {
@DebugLog
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(request);
}
@DebugLog
private void setStepView(SmStatus[] smStatuses) {
List<String> statusString = new ArrayList<>();
/* for (SmStatus status :
smStatuses) {
statusString.add(status.getStatusId() + "\n" + status.getStatusTime());
}*/
// mSmDdDetailStatusView.setStepViewTexts(statusString);
setView();
}
@DebugLog
private void setView() {
List<String> list0 = new ArrayList<>();
list0.add("接已提交定案,等待系统确认");
list0.add("您的商品需要从外地调拨,我们会尽快处理,请耐心等待");
list0.add("您的订单已经进入亚洲第一仓储中心1号库准备出库");
list0.add("您的订单预计6月23日送达您的手中,618期间促销火爆,可能影响送货时间,请您谅解,我们会第一时间送到您的手中");
list0.add("您的订单已打印完毕");
list0.add("您的订单已拣货完成");
list0.add("扫描员已经扫描");
list0.add("打包成功");
list0.add("配送员【包牙齿】已出发,联系电话【130-0000-0000】,感谢您的耐心等待,参加评价还能赢取好多礼物哦");
list0.add("感谢你在京东购物,欢迎你下次光临!");
mSmDdDetailStatusView.setStepsViewIndicatorComplectingPosition(list0.size() - 2)//设置完成的步数
.reverseDraw(false)//default is true
.setStepViewTexts(list0)//总步骤
.setLinePaddingProportion(0.85f)//设置indicator线与线间距的比例系数
.setStepsViewIndicatorCompletedLineColor(ContextCompat.getColor(getActivity(), android.R.color.white))//设置StepsViewIndicator完成线的颜色
.setStepsViewIndicatorUnCompletedLineColor(ContextCompat.getColor(getActivity(), R.color.uncompleted_text_color))//设置StepsViewIndicator未完成线的颜色
.setStepViewComplectedTextColor(ContextCompat.getColor(getActivity(), android.R.color.white))//设置StepsView text完成线的颜色
.setStepViewUnComplectedTextColor(ContextCompat.getColor(getActivity(), R.color.uncompleted_text_color))//设置StepsView text未完成线的颜色
.setStepsViewIndicatorCompleteIcon(ContextCompat.getDrawable(getActivity(), R.drawable.complted))//设置StepsViewIndicator CompleteIcon
.setStepsViewIndicatorDefaultIcon(ContextCompat.getDrawable(getActivity(), R.drawable.default_icon))//设置StepsViewIndicator DefaultIcon
.setStepsViewIndicatorAttentionIcon(ContextCompat.getDrawable(getActivity(), R.drawable.attention));//设置StepsViewIndicator AttentionIcon
}
}
6:30:47.364 4157-4157/com.dijiaapp.eat.atext E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.dijiaapp.eat.atext, PID: 4157
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at com.baoyachi.stepview.VerticalStepView.ondrawIndicator(VerticalStepView.java:203)
at com.baoyachi.stepview.VerticalStepViewIndicator.onDraw(VerticalStepViewIndicator.java:193)
at android.view.View.draw(View.java:15278)
at android.view.View.updateDisplayListIfDirty(View.java:14214)
at android.view.View.getDisplayList(View.java:14236)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14174)
at android.view.View.getDisplayList(View.java:14236)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14174)
at android.view.View.getDisplayList(View.java:14236)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14174)
at android.view.View.getDisplayList(View.java:14236)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14174)
at android.view.View.getDisplayList(View.java:14236)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14174)
at android.view.View.getDisplayList(View.java:14236)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14174)
at android.view.View.getDisplayList(View.java:14236)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14174)
at android.view.View.getDisplayList(View.java:14236)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14174)
at android.view.View.getDisplayList(View.java:14236)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14174)
at android.view.View.getDisplayList(View.java:14236)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14174)
at android.view.View.getDisplayList(View.java:14236)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14174)
at android.view.View.getDisplayList(View.java:14236)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:273)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:279)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:318)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2570)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2393)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2023)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1102)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5930)
at and
先提一点吧,错别字太多,代码还在学习,有意见我再继续提。
I was looking at your code base and I saw this is where you're setting Default
, Attention
and Completion
. So, I was looking at being able to set inProgress
icon. I was looking at the draw icon code. But, need to get a hang of it
/**------------------------------ Draw Icon --------------------------------------------------*/
for (int i = 0; i < mCircleCentrePointPositionList.size(); i++) {
final float currentCompletedXPosition = mCircleCentrePointPositionList.get(i);
mRect = new Rect((int) (mCentreX - mCircleRadius), (int) (currentCompletedXPosition - mCircleRadius), (int) (mCentreX + mCircleRadius), (int) (currentCompletedXPosition + mCircleRadius));
if (i < mCompletingPosition) {
mCompleteIcon.setBounds(mRect);
mCompleteIcon.draw(canvas);
} else if (i == mCompletingPosition && mCircleCentrePointPositionList.size() != 1) {
mCompletedPaint.setColor(Color.WHITE);
canvas.drawCircle(mCentreX, currentCompletedXPosition, mCircleRadius * 1.1f, mCompletedPaint);
mAttentionIcon.setBounds(mRect);
mAttentionIcon.draw(canvas);
} else {
mDefaultIcon.setBounds(mRect);
mDefaultIcon.draw(canvas);
}
}
/**------------------------------ End Draw Icon --------------------------------------------------*/
Thanks.
How to update stepsViewIndicator on button click.
读redme的时候,都能感觉你已经嗨飞了
文字描述部分有些歪,向下倾斜
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.