Coder Social home page Coder Social logo

magicprogresswidget's Introduction

MagicProgressWidget

Download Build Status

渐变的圆形进度条与轻量横向进度条

I. 最终效果

demo gif

II. 如何使用

build.gradle中配置:

implementation 'com.liulishuo.magicprogresswidget:library:1.1.1'

建议参考github中的demo

<com.liulishuo.magicprogresswidget.MagicProgressCircle
    android:id="@+id/demo_mpc"
    android:layout_width="@dimen/mpc_size"
    android:layout_height="@dimen/mpc_size"
    app:mpc_percent="0.8"
    app:mpc_start_color="@color/mpc_start_color"
    app:mpc_end_color="@color/mpc_end_color"
    app:mpc_stroke_width="@dimen/mpc_stroke_width"
    app:mpc_default_color="@color/mpc_default_color"/>

<com.liulishuo.magicprogresswidget.MagicProgressBar
    android:id="@+id/demo_2_mpb"
    android:layout_width="match_parent"
    android:layout_height="@dimen/mpb_height"
    app:mpb_fill_color="@color/mpb_color"
    app:mpb_background_color="@color/mpb_default_color"
    app:mpb_flat="true"/>

1. Magic Progress Circle

  • 支持平滑过渡: setSmoothPercent(percent:float):void
  • 支持指定时间的平滑过渡: setSmoothPercent(percent:float, durationMillis:long):void
参数 含义 默认值
mpc_percent 填充的百分比[0, 1] 0
mpc_stroke_width 描边宽度 18dp
mpc_start_color 渐变颜色起点颜色(percent=0) #FF00FFED
mpc_end_color 渐变颜色终点颜色(percent=1) #FFED00FF
mpc_default_color 未填充部分的描边的颜色 #1AFFFFFF
mpc_foot_over_head 结尾的圆弧是否覆盖开始的圆弧 false

2. Magic Progress Bar

相比系统的ProgressBar更加轻量,如果你的ProgressBar要求不是很复杂,推荐使用

  • 支持平滑过渡: setSmoothPercent(percent:float):void
  • 支持指定时间的平滑过渡: setSmoothPercent(percent:float, durationMillis:long):void
参数 含义 默认值
mpb_percent 填充的百分比[0, 1] 0
mpb_fill_color 填充进度的颜色 0
mpb_background_color 进度背景的颜色 0
mpb_flat 填充的进度条右侧是否是平面(不是平面就是圆弧) false

III. LICENSE

Copyright (c) 2015 LingoChamp Inc.

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.

magicprogresswidget's People

Contributors

jacksgong avatar stefanji 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

magicprogresswidget's Issues

not smoothly

Hi, very nice library, I have a problem:
magicProgressCircle.setSmoothPercent(0.8f) is not working.
The progressCircle isn't animated.

Thanks in advance

Setting background color on the inner circle for MagicProgressCircle

Hello, The library is very useful to me. Thanks.
I had a question. Can we set the background color of the inner circle for MagicProgressCircle. I tried setBackground but that sets the background of the whole view. I hope you got what I am trying to say.
At the moment the background for the inner circle is just hollow.
Is there a method to set that to opaque? If not, can you suggest me some workaround.
Thanks.

Getting a NPE when rendering in Android Studio Preview

Hi, the component works well, thanks! but when trying to view a layout including it in Android Studio preview, I get a rendering error (see stack trace below).
It seems to be due to the lookup in the typedArray.
Perhaps View.isInEditMode() would help there to prevent the exception?

java.lang.NullPointerException
    at android.content.res.BridgeResources.getColor(BridgeResources.java:181)
    at android.content.res.Resources.getColor(Resources.java:936)
    at com.liulishuo.magicprogresswidget.MagicProgressCircle.init(MagicProgressCircle.java:102)
    at com.liulishuo.magicprogresswidget.MagicProgressCircle.<init>(MagicProgressCircle.java:65)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:465)
    at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:172)
    at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:105)
    at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:169)
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:247)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:171)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:835)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:811)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:223)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:426)
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:510)
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:498)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:967)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:498)
    at com.android.tools.idea.rendering.RenderTask.access$600(RenderTask.java:72)
    at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:610)
    at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:607)
    at com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:359)
    at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:607)
    at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:629)
    at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$7.run(AndroidDesignerEditorPanel.java:519)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:337)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:327)
    at com.intellij.util.ui.update.MergingUpdateQueue$3.run(MergingUpdateQueue.java:271)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:286)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:244)
    at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:234)
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
    at com.intellij.util.Alarm$Request$1.run(Alarm.java:352)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

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.