帧动画java代码 javafx动画效果

2.Java有哪几种常见的实现动画的方法?一: 用多线程播放一组图片, 实现动画片的效果; 类似于逐帧动画,每个图片是动画的一帧
二: 在awt/swing界面里, 可以使用paint方法,去绘制图形,然后用swing提供的Timer或者多线程技术,去刷新绘制的图形
三:在JavaFX里, 本身就支持动画,并且封装了很多动画效果可以直接使用,比如逐帧动画.缩放动画,渐变动画,旋转动画,位置动画等.
强烈推荐使用javaFX来实现动画, 因为javaFX是现代化的图形界面工具,具有简单,强大,组件丰富,跨平台,支持Html5, 支持表格, 支持动画等多种优势
下面是一个javaFX绘制的动态表格
javaFX动态表格
JAVA如何获取gif图片的帧数?用PS CS5/6打开gif图
(其他版本的PS,不能直接读出动图)
然后在“时间轴”处,选择“创建帧动画”
按住需要减少的帧 , 拖动到蓝色框内,就可以删除了
最后把图片保存下来,就行了
怎么用vector drawable实现帧动画1. 创建Vector Drawable
从相似角度来看,VectorDrawable与标准SVG图形都是利用path值绘制完成的 。不过如何利用SVG path绘制图形并不在本篇文章的探讨范围之内,大家可以点击此处从W3C网站处获取必要的说明资料 。在本文当中,我们只需要了解到path标签的作用是进行图形绘制即可 。让我们首先从SVG文件入手 , 看看以下图形是如何被绘制出来的:
这一图形共由五个主要部分所组成:
?一个圆角四边形作为CPU主体,该四边形由两条拱状弧线构成 。
?四组各自包含五根线条的图形,用于充当CPU的外延线路 。
虽然看起来有点繁杂 , 但大家其实用不着纠结于以上代码的具体含义,而且这完全不会影响到我们接下来要进行的VectorDrawable绘制工作 。不过需要强调的是,我将前面提到的五大图形组成部分在代码中作为独立的区块来处理,这是为了增强代码内容的可读性 。
首先,我们需要利用两条拱形弧线来绘制出圆角四边形 , 而在接下来的内容中我们会探讨如何分别表现出上、下、左、右四个方位的外延线条 。为了将上述SVG代码转化为VectorDrawable,大家首先需要在XML当中定义vector对象 。以下代码提取自本篇文章示例代码当中的vector_drawable_cpu.xml文件 。
vector xmlns:android=""android:height="64dp"android:width="64dp"android:viewportHeight="600"android:viewportWidth="600"/vector
在此之后 , 大家可以向其中添加path数据 。下列代码同样被拆分成了五个不同的path标签而非将其作为整体处理,这当然也是为了保证内容的可读性 。
正如大家所见,每个path片段都只需要利用pathData属性进行绘制 。现在我们可以将VectorDrawable XML文件作为一个可绘制对象纳入到标准ImageView当中,而且其能够根据应用程序的实际需要任意进行尺寸缩放——完全不需要再修改任何Java代码 。
2. 为Vector Drawables添加动画效果
现在我们已经了解了如何以纯代码方式创建图形,接下来要做的是找点乐子——为其添加动画效果 。在以下动画中,大家会发现作为延伸线路的各组线条会不断指向并远离CPU本体进行移动 。
为了达到这一目标,大家需要将包含动画效果的每个片段包含在一个group标签当中 。
接下来 , 我们需要为每个动画类型创建animator文件 。在本次示例中,每组线路各使用一个animator,这就意味着共需要四个animator 。以下代码所示为上方线路的动画效果,大家还需要为下、左、右线路设定类似的效果 。每个animator XML文件都被包含在了本项目的示例代码当中 。
如大家所见 , propertyName被设定为translateY , 这意味着该动画将沿Y轴方向移动 。而valueFrom与valueTo则控制着位移的起点与终点 。通过将repeatMode设置为reverse而repeatCount设置为infinite , 整个动画会一直循环下去,其效果则在VectorDrawable处体现出来 。该动画的duration被设定为250,其时长单位为毫秒 。

推荐阅读