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

四平网站建设怎么选网站建设中企动力上海

四平网站建设怎么选,网站建设中企动力上海,企业网站的一 二级栏目名称,南宁网站设计多少钱一个2019独角兽企业重金招聘Python工程师标准 作者: 刘鹏 日期: 2009-03-07 Android 平台提供了两类动画#xff0c;一类是 Tween 动画#xff0c;即通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果#xff1b;第二类是 Frame 动画#xff0c;即… 2019独角兽企业重金招聘Python工程师标准 作者: 刘鹏 日期: 2009-03-07 Android 平台提供了两类动画一类是 Tween 动画即通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果第二类是 Frame 动画即顺序播放事先做好的图像跟电影类似。本文分析了 Tween 动画的实现原理。 主要思路 Tween 动画通过对 View 的内容完成一系列的图形变换 (包括平移、缩放、旋转、改变透明度)来实现动画效果。 具体来讲预先定义一组指令这些指令指定了图形变换的类型、触发时间、持续时间。这些指令可以是以 XML 文件方式定义也可以是以源代码方式定义。程序沿着时间线执行这些指令就可以实现动画效果。 动画的进度使用 Interpolator 控制android 提供了几个 Interpolator 子类实现了不同的速度曲线如LinearInterpolator 实现了匀速效果、 Accelerateinterpolator 实现了加速效果、DecelerateInterpolator 实现了减速效果等。还可以定义自己的 Interpolator 子类实现抛物线、自由落体等物理效果。 动画的运行模式有两种 独占模式即程序主线程进入一个循环根据动画指令不断刷新屏幕直到动画结束中断模式即有单独一个线程对时间计数每隔一定的时间向主线程发通知主线程接到通知后更新屏幕图形变换通过仿射矩阵实现。图形变换是图形学中的基本知识。简单来说就是每种变换都是一次矩阵运算。在 Android 中Canvas 类中包含当前矩阵当调用 Canvas.drawBitmap (bmp, x, y, Paint) 绘制时android 会先把 bmp 做一次矩阵运算然后将运算的结果显示在 Canvas 上。这样编程人员只需不断修改 Canvas 的矩阵并刷新屏幕View 里的对象就会不停的做图形变换动画就形成了。 在 android 中提供了 Animation 、 Interpolator、Transformation 等类具体实现 Tween 动画下面逐一分析。 Animation 类及其子类 Animation 类及其子类是动画的核心模块它实现了各种动画效果如平移、缩放、旋转、改变透明度等。 Tween 动画的每一桢都根据 Interpolator 对 view 的内容做一次图形变换因此 Animation 的核心工作是做变换(transformation)。 Aniamtion 是基类他记录了动画的通用属性和方法。主要的属性包括动画持续时间、重复次数、interpolator 等。动画里最重要的方法是 getTransformation (currentTime, outTransformation)该方法根据当前间 (currentTime) 和 interpolator计算当前的变换在 outTransformation 中返回。 TranslateAnimation、RotateAnimation、AlphaAnimation 等是 Animation 的子类分别实现了平移、旋转、改变 Alpha 值等动画。 每个动画都重载了父类的 applyTransformation 方法这个方法会被父类的 getTransformation 方法调用。另外每个动画还有个 initialize 方法完成初始化工作。 不同的动画具有不同的属性如 RotateAnimation 的属性是起始角度、终止角度和旋转点坐标 TranslateAnimation 的属性是起始位置和终止位置。AlphaAnimation 的属性是起始 alpha 值和终止 alpha 值。 Animation 类及其子类的类图如下所示 android类及其子类Interpolator 类及其子类 Interpolator 定义了动画的变化速度可以实现匀速、正加速、负加速、无规则变加速等 Interpolator 是基类封装了所有 Interpolator 的共同方法它只有一个方法即 getInterpolation (float input)该方法 maps a point on the timeline to a multiplier to be applied to the transformations of an animation. LinearInerpolator、AccelerateInterpolator DecelerateInterpolator AccelerateDecelerateInterpolatorCycleInterpolator 是 Interpolator 的子类分别实现了匀速、加速、减速、变速、循环等效果。 对于 LinearInterpolator 变化率是个常数即 f (x) x. public float getInterpolation(float input) {return input;} 对于 AccelerateInterpolator开始变化很慢然后逐渐变快即 f(x) x*x 或者 f(x) pow(x, 2*mFactor). public float getInterpolation(float input) {if (mFactor 1.0f) {return (float)(input * input);} else {return (float)Math.pow(input, 2 * mFactor);}} 对于 AccelerateDecelerateInterpolator变化率开始和结束都很慢但中间很快即 f(x) (cos ((x1)*PI) / 2.0f) 0.5f. public float getInterpolation(float input) {return (float)(Math.cos((input 1) * Math.PI) / 2.0f) 0.5f;} Interpolator 类及其子类的类图如下所示 Interpolator 类及其子类Transformation 类 Transformation 记录了仿射矩阵 Matrix动画每触发一次会对原来的矩阵做一次运算 View 的 Bitmap 与这个矩阵相乘就可实现相应的操作(旋转、平移、缩放等)。 Transformation 类封装了矩阵和 alpha 值它有两个重要的成员一是 mMatrix二是 mAlpha。 Transformation 类图如下所示 Transformation 类图如何在 View 中实现动画 从逻辑上讲实现动画需要如下几步 view 创建动画对象设置动画属性调用 invalidate 刷新屏幕启动动画invalidate 方法触发了 onDraw 函数在 onDraw 函数中 调用动画的 getTransformation 方法得到当前时间点的矩阵将该矩阵设置成 Canvas 的当前矩阵调用 canvas 的 drawBitmap 方法绘制屏幕。判断 getTransformation 的返回值若为真调用 invalidate 方法刷新屏幕进入下一桢若为假说明动画完成。整个流程可用一个序列图表示 Tween 动画序列图使用样例 下面的代码是一个 view系统创建 view 时会调用 onCreate 方法该方法定义了一个 TranslateAniamtion指定了移动起点和终点动画持续时间为 1s最后调用 startAnimation 将该动画保存在 View 的成员 mCurrentAnianmtion 中并启动动画。 注意在 View 中需要定义成员变量 mCurrentAnimation 和 mTransformation 分别记录当前的动画和变换。另外需要定义成员函数 startAnimation 启动动画。 class MyView extends View {     Animation mCurrentAnimation  null;     Transformation mTransformation new Transformation;       private void setAnimation(Animation animation) {         mCurrentAnimation animation;         if (animation ! null) {             animation.reset();         }     }       public void startAnimation(Animation animation) {         animation.setStartTime(animation.START_ON_FIRST_FRAME);         setAnimation(animation);         invalidate();     }     onDraw (Canvas canvas) {         long curTime SystemClock.uptimeMillis ();         if (mCurrentAniamtion null){             canvas.drawBitmap (b, x, y, mPaint);         }         else {             if (!mCurrentAnimation.isInitialized())  //initialize animation                 mCurrentAnimation.initialize (w, h, pw, ph);             boolean more mCurrentAnimation.getTransformation (curTime, mTransformation);             if(more) {                 Matrix m canvas.getMatrix();                 canvas.setMatrix (mTransformation.getMatrix());                 canvas.drawBitmap (b, x, y, mPaint);                 canvas.setMatrix (m);                 this.invalidate ();             }             else {                 mCurrentAnimation null;                 this.invalidate ();             }         }       }     void onCreate (){         Animation anim new TranslateAnimation (10, 20, 0, 0);         anim.setDuration (1000); // 1s         anim.setInterpolator (new AcceleratInterpolator(3.0f));         startAniamtion (anim);     } }   原文http://www.linuxgraphics.cn/animation/android_tween_animation.html 转载于:https://my.oschina.net/kevin008/blog/2195
http://www.pierceye.com/news/101475/

相关文章:

  • 安徽平台网站建设找哪家安阳实力网站建设首选
  • 企业网站的建设要注意哪些方面免费字体下载网站
  • 建怎样的网站挣钱快网站怎么做微博认证吗
  • 衡水做网站改版网站开发教程流程
  • 鞍山网站制作人才招聘广州网站优化步骤
  • 网站使用微信支付宁国网络推广
  • 成都网站建设六六济南网站制作公司
  • c 网站开发技术链友咨询
  • 手机网站推荐怎样做网站建设
  • 下载学校网站模板下载安装住建部官网查询
  • 模板网站新增备案两次都未通过网站也打不开电子商务网站建设实训报告文章
  • 做标签网站是干嘛的帐号售卖网站建设
  • 建设市民中心网站wordpress只显示标题插件
  • 网站备案的好处鲜花网站建设论文百度文库
  • 网站建设运营策划石家庄住房和建设局网站
  • 网站制作器公司网站虚假宣传但网站不是我做的
  • 大淘客网站建设婚庆网页设计作品dw
  • 嘉兴网站关键词优化后端开发流程
  • 有网络网站打不开怎么回事培训机构推广
  • 淄博网站建设优化珍云网站可信图标
  • 大连外贸网站建设江门营销网站建设
  • 县网站建设方案怎么做付费的小说网站
  • 企业公众号以及网站建设我想做个网站
  • 网站设为主页功能怎么做怎样制作h5
  • 网站的内容与功能设计微信公众平台小程序二维码怎么生成
  • 西安网站快速优化重庆明建网络科技有限公司干啥的
  • 广州市天河区门户网站软件制作公司
  • 做网站前期创建文件夹博罗高端网站建设价格
  • 襄阳网站建设价格淄博网站推广价格
  • 网站推广的软件六安网站制作哪里有