牛逼的loading加载效果
介绍:
AnimatedCircleLoadingView一个不错的loading加载效果,自定义AnimatedCircleLoadingView设置startDeterminate()
方法启动loading页面动画setPercent()设置loading进度 ,重置resetLoading(),等几个重要方法实现。
本例子来自:http://www.itlanbao.com/code/20151208/10000/100681.html
本例子主要由TopCircleBorderView ,FinishedOkView,FinishedFailureView等实现。
package com.github.jlmd.animatedcircleloadingview; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; import android.util.AttributeSet; import android.widget.FrameLayout; import com.github.jlmd.animatedcircleloadingview.animator.ViewAnimator; import com.github.jlmd.animatedcircleloadingview.component.InitialCenterCircleView; import com.github.jlmd.animatedcircleloadingview.component.MainCircleView; import com.github.jlmd.animatedcircleloadingview.component.PercentIndicatorView; import com.github.jlmd.animatedcircleloadingview.component.RightCircleView; import com.github.jlmd.animatedcircleloadingview.component.SideArcsView; import com.github.jlmd.animatedcircleloadingview.component.TopCircleBorderView; import com.github.jlmd.animatedcircleloadingview.component.finish.FinishedFailureView; import com.github.jlmd.animatedcircleloadingview.component.finish.FinishedOkView; /** * @author jlmd */ public class AnimatedCircleLoadingView extends FrameLayout { private static final String DEFAULT_HEX_MAIN_COLOR = "#FF9A00"; private static final String DEFAULT_HEX_SECONDARY_COLOR = "#BDBDBD"; private final Context context; private InitialCenterCircleView initialCenterCircleView; private MainCircleView mainCircleView; private RightCircleView rightCircleView; private SideArcsView sideArcsView; private TopCircleBorderView topCircleBorderView; private FinishedOkView finishedOkView; private FinishedFailureView finishedFailureView; private PercentIndicatorView percentIndicatorView; private ViewAnimator viewAnimator; private boolean startAnimationIndeterminate; private boolean startAnimationDeterminate; private boolean stopAnimationOk; private boolean stopAnimationFailure; private int mainColor; private int secondaryColor; public AnimatedCircleLoadingView(Context context) { super(context); this.context = context; } public AnimatedCircleLoadingView(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; initAttributes(attrs); } public AnimatedCircleLoadingView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.context = context; initAttributes(attrs); } private void initAttributes(AttributeSet attrs) { TypedArray attributes = getContext().obtainStyledAttributes(attrs, R.styleable.AnimatedCircleLoadingView); mainColor = attributes.getColor(R.styleable.AnimatedCircleLoadingView_mainColor, Color.parseColor(DEFAULT_HEX_MAIN_COLOR)); secondaryColor = attributes.getColor(R.styleable.AnimatedCircleLoadingView_secondaryColor, Color.parseColor(DEFAULT_HEX_SECONDARY_COLOR)); attributes.recycle(); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); init(); startAnimation(); } private void startAnimation() { if (getWidth() != 0 && getHeight() != 0) { if (startAnimationIndeterminate) { viewAnimator.startAnimator(); startAnimationIndeterminate = false; } if (startAnimationDeterminate) { addView(percentIndicatorView); viewAnimator.startAnimator(); startAnimationDeterminate = false; } if (stopAnimationOk) { stopOk(); } if (stopAnimationFailure) { stopFailure(); } } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // Force view to be a square super.onMeasure(widthMeasureSpec, widthMeasureSpec); } private void init() { initComponents(); addComponentsViews(); initAnimatorHelper(); } private void initComponents() { int width = getWidth(); initialCenterCircleView = new InitialCenterCircleView(context, width, mainColor, secondaryColor); rightCircleView = new RightCircleView(context, width, mainColor, secondaryColor); sideArcsView = new SideArcsView(context, width, mainColor, secondaryColor); topCircleBorderView = new TopCircleBorderView(context, width, mainColor, secondaryColor); mainCircleView = new MainCircleView(context, width, mainColor, secondaryColor); finishedOkView = new FinishedOkView(context, width, mainColor, secondaryColor); finishedFailureView = new FinishedFailureView(context, width, mainColor, secondaryColor); percentIndicatorView = new PercentIndicatorView(context, width); } private void addComponentsViews() { addView(initialCenterCircleView); addView(rightCircleView); addView(sideArcsView); addView(topCircleBorderView); addView(mainCircleView); addView(finishedOkView); addView(finishedFailureView); } private void initAnimatorHelper() { viewAnimator = new ViewAnimator(); viewAnimator.setComponentViewAnimations(initialCenterCircleView, rightCircleView, sideArcsView, topCircleBorderView, mainCircleView, finishedOkView, finishedFailureView, percentIndicatorView); } public void startIndeterminate() { startAnimationIndeterminate = true; startAnimation(); } public void startDeterminate() { startAnimationDeterminate = true; startAnimation(); } public void setPercent(int percent) { if (percentIndicatorView != null) { percentIndicatorView.setPercent(percent); if (percent == 100) { viewAnimator.finishOk(); } } } public void stopOk() { if (viewAnimator == null) { stopAnimationOk = true; } else { viewAnimator.finishOk(); } } public void stopFailure() { if (viewAnimator == null) { stopAnimationFailure = true; } else { viewAnimator.finishFailure(); } } public void resetLoading() { viewAnimator.resetAnimator(); setPercent(0); } } ///代码调用 public class MainActivity extends Activity { private AnimatedCircleLoadingView animatedCircleLoadingView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); animatedCircleLoadingView = (AnimatedCircleLoadingView) findViewById(R.id.circle_loading_view); startLoading(); startPercentMockThread(); } private void startLoading() { animatedCircleLoadingView.startDeterminate(); } private void startPercentMockThread() { Runnable runnable = new Runnable() { @Override public void run() { try { Thread.sleep(1500); for (int i = 0; i <= 100; i++) { Thread.sleep(65); changePercent(i); } } catch (InterruptedException e) { e.printStackTrace(); } } }; new Thread(runnable).start(); } private void changePercent(final int percent) { runOnUiThread(new Runnable() { @Override public void run() { animatedCircleLoadingView.setPercent(percent); } }); } public void resetLoading() { runOnUiThread(new Runnable() { @Override public void run() { animatedCircleLoadingView.resetLoading(); } }); } }
相关推荐
在Windows Forms(Winform)开发中,我们经常需要在执行耗时操作时向用户展示一个加载指示器,也就是所谓的“loading加载框效果”。这既是为了提高用户体验,让用户知道程序正在后台处理事务,也是为了避免用户在...
本话题将深入探讨"H5多种加载效果loading",即H5页面在加载过程中使用的炫酷动画,旨在提升用户在等待页面完全加载时的体验。 一、什么是H5加载效果 H5加载效果,也称为“loading”或“预加载”,是指在页面内容...
这个效果主要是模拟新浪微博一个年度财报H5页面中的loading加载效果 由于本案例图片比较小,真正加载效果很快,所以用简单的js做了一个控制 主要展示的是加载的过程,喜欢的懒人可以模仿试试 主要传播的是一...
"3款漂亮的Flash Loading加载效果"是一个关于如何通过Flash技术提升用户体验的资源集合。Flash作为一种曾经广泛使用的动画和交互设计工具,其在创建动态加载效果方面具有独特的优势。 首先,我们要理解什么是Flash ...
让我们深入探讨一下“loading加载gif动画”的相关知识点。 1. **GIF格式**:GIF(Graphics Interchange Format)是一种流行的图像文件格式,支持透明度和动画功能。由于其体积小、跨平台兼容性好,常用于网页设计中...
"10款华丽的SVG Loading加载动画效果"就是这样一个资源集合,它展示了如何巧妙地利用SVG(Scalable Vector Graphics)技术来创建动态、美观的加载动画。 SVG是一种基于XML的矢量图形格式,它的优点在于可以无限缩放...
"loading加载效果图片 300个.zip" 这个压缩包显然包含了一组丰富的加载动画资源,总数达到300个,格式可能是GIF,因为文件名称列表中有"gif透明loading"。这种类型的图片通常用于指示程序正在处理数据或内容,用户...
本示例"酷炫html5页面加载loading动画效果demo"是基于原生JavaScript和CSS实现的,无需任何第三方库,简化了开发流程,提高了性能。 首先,我们来详细了解一下如何实现这种加载动画。在HTML结构中,我们需要在`...
在网页设计中,"加载"(loading)是一个关键的用户体验元素,特别是在内容丰富的网页或需要时间来完全加载的页面上。加载gif图片是为用户提供视觉反馈的一种常见方式,表明页面内容正在加载,让用户知道他们需要等待...
本资源"android个性十足的loading加载效果.zip"提供了一组独特的加载动画源码,旨在提升Android应用的视觉吸引力和交互体验。 加载效果的设计可以极大地影响用户对应用的感知,一个有创意的加载动画不仅能够减少...
本文将详细介绍如何使用JavaScript实现页面的loading加载效果。 一、基本原理 JavaScript是一种广泛使用的客户端脚本语言,它可以动态地更新HTML和CSS,从而实现各种动画效果。在创建loading加载效果时,我们通常会...
在前端开发中,加载效果(Loading)是一种至关重要的用户体验设计元素。它通常出现在网页或应用程序内容正在加载时,为用户提供视觉反馈,表明系统正在进行后台处理,让用户知道他们需要等待一段时间才能看到完整的...
在网页设计中,用户体验是至关重要的,而页面加载的加载效果正是提升用户体验的一种方式。"页面加载的Loading效果"指的是在网页内容完全加载之前展示的一种动态视觉反馈,它告诉用户浏览器正在努力获取并呈现信息。...
在本文中,我们将深入探讨如何使用CSS3来创建引人注目的绿色Loading加载动画特效,以及这个特定的“CSS3绿色Loading加载动画特效.zip”文件可能包含的内容。CSS3是层叠样式表(Cascading Style Sheets)的第三个版本...
waitMe是一款jQuery和CSS3超酷loading加载动画特效插件。该loading加载动画特效使用CSS3制作了14种不同的loading动画效果,并且你还可以使用图片作为loading动画。
在这个特定的资源中,我们关注的是"Bootstrap网页loading加载图标动画特效",这是一种利用Bootstrap框架和CSS3技术来创建吸引用户注意力的加载指示器的方法。 首先,加载图标(Loading Icon)在网页设计中扮演着至...
总结来说,"Android 适用各种布局的loading加载"主要是通过自定义对话框库如`spots-dialog-master`中的`SpotsDialog`来实现的。这个库提供了丰富的自定义选项,使得在Android应用中创建具有iOS风格的水滴加载效果...
.net winform c# 加载过程的 源码 loading 动画动态般的效果。 大型软件 大软件 运行加载 所显示的动态加载什么什么的效果 怎么描述比较好呢,总之,就是一个动态的现在正在加载什么什么的。 尤其大的软件,如果...
"适合移动页面之吃货专用loading加载效果.zip" 就是这样一种创新的设计实践,它将loading动画与美食元素相结合,带给用户独特的视觉享受。 这个加载效果的设计理念是将枯燥的等待过程转化为一种娱乐体验。描述中...