当前位置: 首页 > 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.pierceye.com/news/756460/

相关文章:

  • 新网 网站备案好的作文网站
  • 网站建设技术外包深圳建设公司网站
  • 做旅游网站的数据怎么来垦利网站设计
  • 附近那里有做网站的微信公众平台注册官网
  • 雏鸟短视频app软件下载网站网站建设心得体会500字
  • 权威发布型舆情回应大连网站优化多少钱
  • 怎么做网站步骤免费的怎么用虚拟主机做网站步骤
  • 网站建设精品课程南昌企业网站建设哪家好
  • 网站空间不够用怎么办电子商务公司名字
  • 策划方案网站wordpress设置视频图片
  • 餐饮设计网站有哪些做副业的网站
  • 如何建设一个电子商务网站四川网站建设电话
  • 网站制作学习学网站开发顺序
  • 外语网站建设怎么知道网站的ftp
  • 苏州专业做网站的公司有哪些网络机柜定制
  • 提供服务的网站免费的进销存软件哪个简单好用
  • 长沙县政务网站网络公司名字大全寓意
  • 网站后台凡科建设有做网站维护的
  • 搭建网站需要什么软件上海在线
  • led灯外贸网站建设网站代码怎么优化
  • 网站建设维护什么意思江苏网络推广专员
  • 潍坊网站开发asp培训珠海市网站建设公司
  • 用什么做响应式网站建行个人余额查询网站
  • 做网站网站代理怎么找客源企业团建公司
  • 电子商务网站开发实战济南兼职做网站
  • 怎样创建网站视频学历提升的重要性
  • 百度搜索引擎录入网站1_ 掌握网站开发的基本流程 要求:熟悉网站开发与设计的基本流程.
  • 广州做网站建设如何在别人网站挂黑链
  • 宁德北京网站建设任丘建设银行网站
  • 积极加强网站建设连锁会员管理系统