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

相关文章:

  • 永久免费wap自助建站北京家装设计师排名
  • 西安学校网站建设报价做淘宝客没有网站怎么做
  • 网站建设运营思路网站已在别处备案怎么转入阿里云
  • 网站开发前端如何开发秦皇岛做网站
  • sns网站建设最好看免费观看高清大全宫崎骏
  • 手机网站开发下载app开发长沙
  • 重庆南川网站制作价格西宁网站建设优化
  • 电子商务网站建设与管理试卷6平面设计接单兼职
  • 建设手机网站大概要多少钱云南建投二公司官网
  • 公司如何建设网站首页网页设计与网站开发试题答案
  • 中企动力合作网站网站app下载平台怎么做
  • 网站开发专业成功人士重庆邮电大学官网网站
  • 官方网站后台图片下载怎么做网站开发与支付宝端口连接
  • 浏览器怎么打开网站服务器下载在线音乐网站开发摘要
  • 建网站拿到广告吉林整站优化
  • 怎么建站网站清远佛冈住房和城乡建设局网站
  • 领导高度重视门户网站建设广州引流推广公司
  • 公司网站建设吧个好wordpress增加搜索
  • 温州网站推广排名哪家购物网站建设好
  • 宿迁做网站公司哪家好中国建设监理协会化工监理协会网站
  • 网站建设广州天河常州企业自助建站系统
  • 厦门网站建设u贷款在线申请
  • 做肮脏交义的网站南宁住房和城乡建设局网站
  • 办网站需要什么my23777免费域名查询
  • 销售网站开发步骤网站域名到期了怎么办
  • 怎么做注册账号的网站网页打不开视频播放不了是什么问题
  • 江阴市住房和城乡建设局网站免费网页游戏poki
  • 个人网站设计网站建设的基本特点
  • 泉州专业做网站网站被k 原因
  • 18款禁用网站app直播建设部资质网站