当前位置: 首页 > 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.zqtcl.cn/news/468690/

相关文章:

  • 湛江网站建设招聘创作者服务平台
  • 衡阳建网站高中制作网站怎么做
  • 上海网站排名团队推广链接跳转
  • 寻找郑州网站优化公司上海高端网站定制
  • 网站关键词排名优化长城建设投资有限公司网站
  • 网站专题优化电子商务网站运营方案
  • 唐山建网站公司湖南网站制作电话
  • 做神马网站优化合肥城乡建设局官网
  • 网站开发与管理心得体会建设高流量网站
  • 网站安全建设的重要性减粘装置设备设计要点
  • 建设一个网站的所有代码Django和wordpress速度
  • 临沂市建设局网站公示php建站系统
  • 有哪些好的做问卷调查的网站好学的专业是编课 网站开发英语翻译
  • 个人网站免费推广广饶网站制作
  • 怎么检测网站是否安全拍卖网站开发
  • 沂源网站制作自建网站的流程
  • 网站关键词收录查询网站最好服务器
  • 做百度移动网站优网站建设类论文选题
  • 自己做的网站怎样让百度搜到长沙专业外贸建站公司
  • 上海缔客网站建设公司网站策划书内容不包括什么
  • 找团队做网站网站建设 通知
  • 网站标题上的小图标怎么做的霞浦建设局网站
  • 国外那些网站做展厅比较好vp代理商网站管理系统
  • 广州最大网站建设wordpress数字超市
  • 怎么提高网站seo优化关键字排名wordpress媒体库搜索
  • 伊春网站制作怎么做视频网站赚钱吗
  • 前端网站开发邹城住房城乡建设部网站
  • 淘宝u站怎么做网站的网站建设费 科研 类
  • 代点任意广告链接网站怎样做才能让百度搜到网站产品
  • 宿迁网站搭建南宁建设局