android 自定义loading,Android自定义动画-StarLoadingView
今天来分享第二个自定义loading的动画,起了个名字叫 蹦跶的星星 ,还是老规矩先介绍,后上图。
实现效果在最后,GIF有点大,手机流量慎重。
介绍
首先声明做这个动画的初衷是为了学习和分享,所以从这里起,我准备做一个系列的加载动画(截止时间:我放弃的时候)。
上一个动画连接:Android自定义动画-ClockLoadingView
正文
阴影及下落的动画:
private final ValueAnimator.AnimatorUpdateListener mAnimatorUpdateListener = new ValueAnimator.AnimatorUpdateListener()
{
@Override
public void onAnimationUpdate(ValueAnimator animation)
{
float value = (float) animation.getAnimatedValue();
mOffsetTranslateY = getViewCenterY() * 0.4f * value;
mShadowWidth = (mOffsetTranslateY + 10) * 0.9f;
}
};
初始化参数:
@Override
protected void initParams(Context context)
{
mFullPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mFullPaint.setStyle(Paint.Style.FILL_AND_STROKE);
mFullPaint.setStrokeWidth(2);
mFullPaint.setColor(Color.BLACK);
mFullPaint.setDither(true);
mFullPaint.setFilterBitmap(true);
initValue(context);
initAnimator();
}
private void initAnimator()
{
mShadowAnimator = ValueAnimator.ofFloat(0.0f, 1.0f, 0.0f);
mShadowAnimator.setRepeatCount(Animation.INFINITE);
mShadowAnimator.setDuration(ANIMATION_DURATION);
mShadowAnimator.setStartDelay(ANIMATION_START_DELAY);
mShadowAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
}
private void initValue(Context context)
{
float allSize = getAllSize();
mStarOutR = allSize - dip2px(context, 5);
mStarOutMidR = mStarOutR * 0.9f;
mStarInR = mStarOutMidR * 0.6f;
mStarInMidR = mStarInR * 0.9f;
mStartAngle = 0;
mOffsetTranslateY = 0;
//星路径
mStarPath = createStarPath(5, -18);
//阴影宽度
mShadowWidth = mStarOutR;
mOvalRectF = new RectF();
}
绘制步骤,这里是通过偏移和旋转画布来实现部分动画的。
@Override
protected void onDraw(Canvas canvas)
{
canvas.save();
canvas.translate(0, mOffsetTranslateY);
canvas.rotate(mStartAngle, getViewCenterX(), getViewCenterY());
canvas.drawPath(mStarPath, mFullPaint);
canvas.restore();
// 绘制底部阴影
mOvalRectF.set(getViewCenterX() - mShadowWidth, getIntrinsicHeight() - 20, getViewCenterX() + mShadowWidth, getIntrinsicHeight() - 10);
canvas.drawOval(mOvalRectF, mFullPaint);
}
下面是关键步骤,绘制计算五角星路径,这是我自己写的算法,可以传入角数量和初始角度偏移量。这里最关键的是通过贝塞尔曲线对五角星的内角和外角做了弧度处理。 很完美!!!
android 自定义loading,Android自定义动画-StarLoadingView相关推荐
- android 自定义loading,android_自定义Loading框
代码 public class CustomLoadingDialog extends Dialog { @ViewInject(R.id.custom_loading_dialog_indicato ...
- vue element-ui Loading加载事件的使用以及自定义Loading加载动画
elemen-ui官方使用 <el-tablev-loading="loading"element-loading-text="拼命加载中"element ...
- 微信小程序自定义loading加载动画(2)
1.实现效果 2.实现原理 animation 3.实现代码 <view class="loading-row"><view class="loadin ...
- android刷新时的圆形动画_【Android UI】自定义圆形Loading动画
1.创建环形loading图片 android:fromDegrees="0" android:toDegrees="360" android:pivotX=& ...
- android 自定义view 动画效果,Android自定义view----音乐播放动画
先给大家看一下效果,因为我也不知道这个东西具体叫什么,标题上面写的是"音乐播放动画",可能描述的不太准确. 效果图.gif 前言 最近项目中做了一个音频播放的功能,播放条上需要一个 ...
- android 自定义帧动画,Android 自定义方式实现帧动画效果
前言 首先说下为啥要通过自定义处理的方式去实现Android的帧动画效果,因为通过系统原生支持的xml和java代码这两种方式实现,在播放的图片量很多时,会出现内存溢出,此现象也是在做项目当中有遇到, ...
- android刷新时的圆形动画_Android自定义加载圈动画效果
本文实例为大家分享了Android自定义加载圈动画展示的具体代码,供大家参考,具体内容如下 实现如下效果: 该效果图主要有3个动画: 1.旋转动画 2.聚合动画 3.扩散动画 以上3个动画都是通过Va ...
- android 自定义图片加载动画效果,Android自定义加载动画-感染体
Android自定义动画系列七,今天来分享第七个自定义Loading动画(InfectionBallBuilder),看上去感觉有种病毒源被感染的感觉,所以名字就叫感染体,这个动画做出来的效果,我不怎 ...
- Android 最简单仿IOS菊花加载样式,自定义Loading加载View
自定义菊花旋转加载view,可自定义半径大小,旋转view个数.颜色等,具体代码如下,可直接使用 public class LoadingView extends View {private Rect ...
最新文章
- xp框架下载官方_斐讯路由器系列「K1-K2-K2P-K2T」-Breed刷入工具v1.1支持XP系统
- 企业怎样做好计算机应急响应工作
- C#操作Cookie
- oracle无法远程安装,docker部署Oracle,无法远程连接(已解决)
- 2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02)
- POJ-3421 X-factor Chains---求因子+递推 或 素因子+组合数学
- android 客户端bks,Keytools Https双向认证(Android通用)
- Linux system函数返回值
- SQL SERVER拼接字符串(字符串中有变量)
- mysql导出数据库设计说明书
- 新睿云 亚马逊_一窥新发现的亚马逊欺诈检测器
- 排序算法:(二)快速排序
- 【转载】如何学习统计学,或我的学习之路——初学者写给初学者
- Writeup For WeChall
- H.265/HEVC解码器 C 参考代码
- 两个系统怎样使用通用的接口来对接
- mysql培训ppt
- Pragmatic eBook 介绍 :Test-Driving JavaScript Applications
- 极智经验 | win10 IE浏览器无法打开网页解决方法
- python xlrd_python学习之xlrd的使用
热门文章
- Python 标准库之 xml.etree.ElementTree xml解析
- LeetCode简单题之图像渲染
- LeetCode简单题之最常见的单词
- 王道考研 计算机网络笔记 第二章:物理层
- cmodel模拟器开发
- vue 拓扑组件_Authing 登录组件优化实践解析
- float a = 3.1; 显示警告的原因
- Android 相对布局别自己快遗忘的属性layout_alignRight,layout_alignBottom,layout_alignTop,layout_alignLeft
- Fragment里面嵌套Fragment注意事项
- 微软CRM 2011 新功能之三:可新增客户化活动类型实体