当前位置: 首页 > news >正文

58网站建设的目的怎么建设音乐试听网站

58网站建设的目的,怎么建设音乐试听网站,三合一网站源码,建设银行E路航如何自动进入网站前言#最近看框架和源码比较多#xff0c;很久没有写动画了#xff0c;相信很多的朋友都对动画感兴趣#xff0c;我也不例外#xff0c;毕竟做前端还是要靠动画特效吃饭的#xff0c;并且比写功能模块更有成就感。今天我们就来个稍微简单一点的CircleProgressBar热个身。首…前言#最近看框架和源码比较多很久没有写动画了相信很多的朋友都对动画感兴趣我也不例外毕竟做前端还是要靠动画特效吃饭的并且比写功能模块更有成就感。今天我们就来个稍微简单一点的CircleProgressBar热个身。首先需要对ValueAnimator动画还有CanvasPaint画图的相关的类和API都有一定的了解所以这部分还比较薄弱的朋友可以先去学习一下基础知识否则可能会有些吃力。正文#先看一下效果图我不会录屏就百度了一张图片这里写图片描述大概是这样的效果首先我们不考虑效果先画出这个圆形的进度条新建文件CircleProgressBar/*** 进度*/private float mProgress 50;/*** 最大进度*/private int mMaxProgress 100;/*** 绘制进度条*/private void drawProgress(Canvas canvas) {// 开始画进度条// 首先画出背景圆mPaint.setColor(mBackgroundColor);mPaint.setStyle(Paint.Style.FILL);// 这里减去了边框的宽度canvas.drawCircle(mWidth / 2, mHeight / 2, mRadius - mBorderWidth, mPaint);// 画出进度条mPaint.setColor(mProgressBorderColor);mPaint.setStyle(Paint.Style.STROKE);mPaint.setStrokeWidth(mBorderWidth);// 计算圆弧划过的角度float angle CIRCULAR / mMaxProgress * mProgress;// 这里要画圆弧canvas.drawArc(mContentRectF, -90, angle, false, mPaint);// 画出补全部分的进度条mPaint.setColor(mBorderColor);mPaint.setStrokeWidth(mBorderWidth);// 这里要画圆弧canvas.drawArc(mContentRectF, -90 angle, CIRCULAR - angle, false, mPaint);}先话出背景色的圆然后画出进度条的颜色的边框再画出进度条以外的部分为了显示的明显我分别用了三个颜色最终的效果这里写图片描述最初的样子已经出来了但是有一个小细节要注意这里贴出mMaxProgress 100为什么不是100010000呢当然也可以但是我不推荐这个数字过大大家可以去看看系统自带的ProgressBar他的注释有提醒开发者不要使用过大的max最好是100感兴趣的可以去看一看。现在就差动画了接下来我们来分析一下动画1、首先进度会飞快的上涨以顺时针为方向伸长的部分是头部。2、然后进度会飞速的下降以顺时针为方向缩短的部分是尾部。首先我们来完成第一部分/*** 开始过度动画*/private void startIntermediateAnim() {if (valueAnimator null) {valueAnimator new ValueAnimator().ofFloat(0, mMaxProgress);valueAnimator.setDuration(DURATION);valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator());valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {Overridepublic void onAnimationUpdate(ValueAnimator valueAnimator) {// 设置进度float value (float) valueAnimator.getAnimatedValue();setProgress(value);}});valueAnimator.setRepeatCount(-1);valueAnimator.start();}也是没什么太多的技术含量但是有几点需要说明一下我们使用ValueAnimator().ofFloat是为了动画的流畅性如果你使用了int你会发现动画会有一些细微的卡顿因为int型舍弃了小数部分这样就会出现误差视觉上就会出现卡顿。伸长的动画已经成型了那缩短的动画不就简单了直接动画reverse不就好了我激动得设置了valueAnimator new ValueAnimator().ofFloat(0, mMaxProgress0);或者是valueAnimator.setRepeatMode(ValueAnimator.REVERSE);我迫不及待的运行了代码卧草草竟然不行仔细观察效果我们发现了问题如果是缩短还是从顺时针的头部缩短而不是从尾部这是为什么呢其实从api也可以理解因为我们是从起始位置开始画弧只要起始位置不变尾部肯定不会发生变化。虽然明白了这个道理但是心情非常的压抑难道就要放弃了突然灵光一闪我发现了一个神奇的办法不知道机智的小伙伴是不是也想到了还记得我之前的绘图步骤吗先绘制进度部分然后剩余部分不全。既然进度部分只能头部伸长尾部也是一样那我让补全部分伸长那进度部分的尾部不就是缩短了吗那如何让补全部分伸长呢1、把progress在伸长结束时开始让补全部分使用progress从而让他伸长但是这样会改变原有的功能逻辑非常危险工作量也大。2、最简单的办法把进度的颜色不补全部分的颜色交换然后把位置也互换不就OK了经过简单的修改之后if (valueAnimator null) {valueAnimator new ValueAnimator().ofFloat(0, mMaxProgress);valueAnimator.setDuration(DURATION);valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator());valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {Overridepublic void onAnimationUpdate(ValueAnimator valueAnimator) {float value (float) valueAnimator.getAnimatedValue();setProgress(value);}});valueAnimator.addListener(new Animator.AnimatorListener() {Overridepublic void onAnimationStart(Animator animator) {}Overridepublic void onAnimationEnd(Animator animator) {// 因为是循环动画所以这里不会回调}Overridepublic void onAnimationCancel(Animator animator) {}Overridepublic void onAnimationRepeat(Animator animator) {// 互换两者的颜色int color getProgressBackgroundColor();setProgressBackgroundColor(getProgressColor());setProgressColor(color);}});}valueAnimator.setRepeatCount(-1);valueAnimator.start();ok还有谁最关键的部分已经全部完成了还差最后一点点仔细的观察效果图发现进度条是有最小进度的没有完全消失所以我们再设置一个最小进度并且每次设置进度的时候我们都稍微旋转一下角度这样就会一边伸长缩短一边旋转了/*** 开始过度动画*/private void startIntermediateAnim() {if (valueAnimator null) {valueAnimator new ValueAnimator().ofFloat(mMinProgress, mMaxProgress - mMinProgress);valueAnimator.setDuration(DURATION);valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator());valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {Overridepublic void onAnimationUpdate(ValueAnimator valueAnimator) {float value (float) valueAnimator.getAnimatedValue();setProgress(value);// 每次旋转2度mStartAngle 2;}});valueAnimator.addListener(new Animator.AnimatorListener() {Overridepublic void onAnimationStart(Animator animator) {}Overridepublic void onAnimationEnd(Animator animator) {}Overridepublic void onAnimationCancel(Animator animator) {}Overridepublic void onAnimationRepeat(Animator animator) {// 因为有了最小进度所以每次都要位置设置到补全部分的位置mStartAngle mStartAngle - CIRCULAR / mMaxProgress * mMinProgress;// 互换两者的颜色int color getProgressBackgroundColor();setProgressBackgroundColor(getProgressColor());setProgressColor(color);}});}valueAnimator.setRepeatCount(-1);valueAnimator.start();}最终的效果就想一开始的效果图一样这里不贴了。总结#看上去稍微有点复杂的动画经过我们的分析拆解就变得很简单了。如果是利用Translation, Rotate 这样的动画那实现起来真是太难了ValueAnimator就是从他们中分离出来的专门用来计算差值的强大武器有了它我们开发一些高级的效果就简单多了。我对demo进行了一些修改即可以是普通的圆形进度条也可以是loading的动画就想progressBar一样大家可以下载下来参考一下。ok今天就到这里了明天就是周末了祝大家浪起来~
http://www.zqtcl.cn/news/756460/

相关文章:

  • 电子商务网站创业计划书后台管理系统登录
  • 蚂蚁建站网页传奇游戏单职业
  • 标准通网站建设广州 flash 网站
  • 怎么做游戏自动充值的网站淘宝购物平台
  • 免费帮助建站营销策略怎么写
  • 12380 举报网站建设优秀个人网站
  • 简洁网站模板素材用wordpress上传源砖
  • 高密做网站电影html网页模板设计素材
  • 湖北网络营销网站襄阳网站建设-飞鱼网络
  • 想更新公司网站怎么做关于网站开发的自我评价
  • 找建筑工作哪个网站好新增网站 备案
  • 格力网站的建设情况wordpress mysql 密码重置
  • 网站access数据怎么做高端品牌网站建设的目的
  • 外贸买家网站凯里网站建设流程
  • 网站一年要多少钱国外的建筑设计网站
  • 手游发号网站模板ic外贸网站建设
  • 珠海网站制作案例tp5 商城网站开发
  • 母婴用品网站建设规划上海市建设工程 安全协会网站
  • 做室内设计特别好的网站网站服务器租用恒创
  • 慕课网站开发文档wordpress上传到空间
  • 行业垂直网站开发漳州最便宜的网站建设价格
  • 高级网站设计效果图网站设计制作哪些
  • 惠山区住房和建设厅网站营销推广方式都有哪些
  • 做网贷网站多少钱wordpress首页短代码
  • 网站网格湖南网页
  • 做网站的知名品牌公司用ps切片做网站
  • 中学网站模板下载番禺外贸网站建设
  • 常州网站seo代理加盟郑州浩方网站建设智联招聘
  • 小型网站制作网站开发做什么费用
  • seo网站论文社交app开发公司