当前位置:首页 > 代码 > 正文

gifgifffer播放代码(giftof)

admin 发布:2022-12-19 20:08 154


今天给各位分享gifgifffer播放代码的知识,其中也会对giftof进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

VB6.0精简版,怎么播放GIF动画,并设置它是循环的还是一遍就停止的代码

以下代码使用"WIA.ImageFile"控件,只在Vista和win7等系统有效。

添加Timer控件Timer1

这个方法不能获取GIF原有的每帧持续时间,需要自己设置。

Dim IMG

Private Sub Form_Load()

  Set IMG = CreateObject("WIA.ImageFile") '创建对象

  IMG.LoadFile "F:\a.gif" '加载图片

  Timer1.Enabled = False '如果启动窗体开始播放,去掉这一句

  Timer1.Interval = 200 '设置每帧持续时间

End Sub

Private Sub Form_Click()

  Timer1.Enabled = True '单击窗体播放

End Sub

Private Sub Timer1_Timer()

  Static i As Long

  i = i + 1

  If i = IMG.FrameCount Then

    IMG.ActiveFrame = i

    '在窗体上显示第i帧图像

    Me.Picture = IMG.ARGBData.Picture(IMG.Width, IMG.Height)

  Else '播放结束

    i = 0

    Timer1.Enabled = False '如果循环播放,去掉这一句

  End If

End Sub

FLASH中的播放和停止按钮代码要如何写?要鼠标按下去就播放的

Macromedia网页设计师认证模拟题库及答案

下载地址

一套flash8 认证题:

1. 如图所示,为对象添加了发光滤镜,如要使对象四周产生均匀的发光效果,那么需要的设置方法为: 调整发光的强度

2. 如图所示,将左上图分散的位图制作为右下图的融合效果,需使用的方法是: 混合模式

3. 相对于Flash在测试过程中自动生成的.swf文件,以下哪些是手工导出Flash影片的优点: 可以选择存储在硬盘的任意文件夹,能够选择不同的存储格式,可以对输出的内容进行细节的设置

4. 如果希望在新窗口中预览整个动画,下列快捷键正确的是,Ctrl+Enter

5. 如图所示“按键捕获”按钮,使其生效的基本条件是: 必须放置于舞台之中

6. 动作脚本butterfly._x=butterfly._x-10;可简写成: butterfly._x - =10

7. 如图所示,左图中窗口已添加了拖动影片剪辑的行为,在窗口上按下鼠标即可拖动该窗口,如松开鼠标即停止了按钮的拖动。那么“开始拖动影片剪辑”和“停止拖动影片剪辑”分别使用的鼠标事件为: 开始拖动影片剪辑为“按下时”,停止拖动影片剪辑为“释放时”

8. 如图所示通过“MediaPlayback”组件可以创建播放器,那么该组件相关参数的设置方法,在以下选项中正确的是: 选择“MediaPlayback”组件,然后在“属性”检查器中进行设置,选择“MediaPlayback”组件,然后在“参数”面板中进行设置,选择“MediaPlayback”组件,然后在“组件检查器”中进行设置

9. 如图所示,要实现单击按钮组件即可链接到网站的效果,以下方法哪些是可行的:选择按钮组件,在“行为”面板中添加“转到Web页”行为,选择按钮组件,在“动作”面板中添加“getURL”函数

10. 如图所示,如使用脚本控制叶子向左下方飘落,并且有旋转,淡化,缩小的效果,需要改变对象的哪些属性:_x、_y _xscale、_yscale _rotation、_alpha

11. 下列选项中,哪个是跳转到上一帧的脚本:prevFrame

12. 如图所示,用按钮控制星星的移动,如需要星星向右移动10个像素,同时向上移动5个像素,则下列脚本正确的是:this.star . _x = this.star._x+10; this.star._y = this.star._y-5

13. 如图所示,使用脚本控制鼠标拖动影片剪辑。那么要实现鼠标释放时停止对象拖动,需要用到的代码是: on (release) {stopDrag();}

14. 如图所示,使用loadMovie函数可以载入哪些格式的文档: 图像.PNG、.JPG和.GIF Flash动画文件.SWF

15. 如要为动画添加超级链接,以下脚本代码正确的是: getURL(“ ,”_blank”); getURL(“ ”,)

16. 如图所示,在动作面板上排辅助编写代码的功能按钮中,可以辅助用户检查出代码错误的按钮是: “语法检查”按钮 “调试选项”列表 “自动套用格式”按钮 “显示代码提示”按钮

17. 如需限制影片剪辑的等比例缩放,在脚本中需要控制的属性有: _xscale和_yscale

18. 如图所示,为按钮添加声音,下列选项中方法正确的是:选择要插入声音的关键帧,在“属性”检查器的声音列表中选择声音 选择要插入声音的关键帧,将声音从库中拖入舞台

19. 如图所示,图为导入视频向导“编码”页的预览窗口,正在进行的操作是: 对视频进行修剪

20. 如图所示,为在“编辑封套”对话框中编辑声音,以下对当前操作描述错误的是: 分离左右声道 修改声音的封套控制手柄 改变声音的音量大小

21. 如图所示,在使用“从库加载声音”这个行为之前,需要为要引用的声音创建: 链接标识符

22. 如图所示,要使用按钮来控制嵌入式视频,如对图中所指按钮添加行为,那么要执行的命令是: 调出行为面板,执行“+嵌入的视频停止”

23. 目标电影和源电影的资源均已打开。现要将源电影的资源复制到目标电影中,请问下列哪种操作是正确的: 将资源拖动到目标电影的场景上

24. 如图所示,动画只使用了一个基本的补间,为了模拟制作赛车在行使过程中时快时慢的变速过程,使用以下哪种方法更加简单和快捷: 通过自定义缓入/缓出曲线的编辑

25. 在Flash中,为我们提供了多种动画类型,其中包括:补间动画 逐帧动画

26. 如图所示,以下使用动作补间创建位移动画的基本步骤,描述正确的是: C将对象转换为元件,确定起始帧和结束帧中对象的不同位置,在起始帧上单击右键选择“创建补间动画”

27. 如图所示,如无须制作动画,那么创建遮罩效果的正确步骤是: A分别创建遮罩层和被遮罩层的内容,确保被遮罩层在遮罩层之下,在遮罩层单击右键选择“遮罩层”

28. 如图所示,通过绘图纸外观轮廓功能我们展示了一个帆船从右向左运动的补间动画。可以看出该补间设置了缓动值,那么以下描述正确的是: C负缓动值,加速度

29. 如图所示,使用逐帧动画制作太阳眨眼的效果,如果希望眨眼后有一段停顿,通常的做法是: 插入足够长时间的帧以延续画面,产生停顿的效果

30. 如图所示,要对文本段落应用形状补间,必须将该文本段落分离: B 2

31. 如图所示,在创作引导线动画的过程中,为了辅助对象更好的吸附到引导线的两端,通常需激活以下哪个选项:贴紧至对象

32. Flash为我们提动了多种将动作和交互性轻松添加至文档的方式,从而创作出引人入胜的用户体验,下列相关说法正确的是:B补间动画和逐帧动画是通过将…… C行为是预先编写的ActionScript脚本,可将它们……

33. 下列关于插入关键帧描述正确的是: 选择要插入关键帧的方格,在右键快捷菜单中执行“插入关键帧”命令 从主菜单中执行“插入时间轴关键帧” 按等效快捷键F6

34. 如图所示,假设已打开了两个Flash 文档将A文档(左库)中的元件复制到B文档(右库)中,正确的操作方法是: 答案: C 按下Ctrl+L组合键打开左侧面板,单击新建面板按 钮,在新建库切换列表中选择另一个文档名打开它的库,从左侧库中拖拽对象到右侧库中

35. 关于元件和实例的类型,以下说法中哪些是错误的:可以改变元件的类型,但不能改变实例的类型 可以改变实例的类型,但不能改变元件的类型 元件类型改变后,所有由其生成的实例类型随之改变

36. 如图所示,将左图分散的位图制作为右图的融合效果,需使用的方法是: 导入并分离位图,使用魔术棒选择并去除背景,按F8键转换为元件,选择影片剪辑类型

37. 如图所示,如果要创建移入后水波层层散开的动态按钮,至少需要哪几类元件:影片剪辑元件和按钮元件

38. 下列对FLASH相关对象的描述正确的是: 舞台是在播放过程中显示…… 时间轴用来通知Flash显示图形和其它项目元素的时间…… 库面板是存放元件…… AcrionScript代码可用来向文档中的媒体元素……

39. 如图所示,要替换左图中的元件为右图图案,又需保留左图中的元件的原始属性,那么需要用到的功能是: 交换元件

40. 添加滤镜后的文本对象拥有以下哪些特性: 能够添加其他滤镜 能够像正常文本一样编辑属性 会自动转换为影片剪辑 可以修改文字内容

Android开发之ImageView播放GIF动画实例

Android开发之ImageView播放GIF动画实例

Android的原生控件并不支持播放GIF格式的图片,如果想在Android中显示一张GIF动态图片,可以利用 ImageView控件来完成,但是放进去之后,你会发现,ImageView它只会显示这张图片的第一帧,不会产生任何的动画效果。我们必须通过自定义控件的方式来实现ImageView播放GIF 图片的功能。

首先我们来编写一个PowerImageView控件,让它既能支持ImageView控件原生的所有功能,同时还可以播放GIF动态图片。

先新建一个项目PowerImageViewTest,这里使用Android 4.0+Eclipse。

由于是要自定义控件,会需要一些自定义的控件属性,因此我们需要在values目录下新建一个attrs.xml的文件,在这个文件中添加项目需要的自定义属性。

这里我们目前暂时只需要一个自动播放auto_play属性,XML文件代码如下:

?xml version="1.0" encoding="utf-8"?

这个文件完成之后,下面我们来开始编写主类PowerImageView类,由于PowerImageView类需要支持ImageView的所有功能,我们必须要让PowerImageView继承自ImageView,代码如下:

public class PowerImageView extends ImageView implements OnClickListener {

/**

* 播放GIF动画的关键类

*/

private Movie mMovie;

/**

* 开始播放按钮图片

*/

private Bitmap mStartButton;

/**

* 记录动画开始的时间

*/

private long mMovieStart;

/**

* GIF图片的宽度

*/

private int mImageWidth;

/**

* GIF图片的高度

*/

private int mImageHeight;

/**

* 图片是否正在播放

*/

private boolean isPlaying;

/**

* 是否允许自动播放

*/

private boolean isAutoPlay;

/**

* PowerImageView构造函数。

*

* @param context

*/

public PowerImageView(Context context) {

super(context);

}

/**

* PowerImageView构造函数。

*

* @param context

*/

public PowerImageView(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}

/**

* PowerImageView构造函数,在这里完成所有必要的初始化操作。

*

* @param context

*/

public PowerImageView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PowerImageView);

int resourceId = getResourceId(a, context, attrs);

if (resourceId != 0) {

// 当资源id不等于0时,就去获取该资源的流

InputStream is = getResources().openRawResource(resourceId);

// 使用Movie类对流进行解码

mMovie = Movie.decodeStream(is);

if (mMovie != null) {

// 如果返回值不等于null,就说明这是一个GIF图片,下面获取是否自动播放的属性

isAutoPlay = a.getBoolean(R.styleable.PowerImageView_auto_play, false);

Bitmap bitmap = BitmapFactory.decodeStream(is);

mImageWidth = bitmap.getWidth();

mImageHeight = bitmap.getHeight();

bitmap.recycle();

if (!isAutoPlay) {

// 当不允许自动播放的时候,得到开始播放按钮的图片,并注册点击事件

mStartButton = BitmapFactory.decodeResource(getResources(),R.drawable.start_play);

setOnClickListener(this);

}

}

}

}

@Override

public void onClick(View v) {

if (v.getId() == getId()) {

// 当用户点击图片时,开始播放GIF动画

isPlaying = true;

invalidate();

}

}

@Override

protected void onDraw(Canvas canvas) {

if (mMovie == null) {

// mMovie等于null,说明是张普通的图片,则直接调用父类的onDraw()方法

super.onDraw(canvas);

} else {

// mMovie不等于null,说明是张GIF图片

if (isAutoPlay) {

// 如果允许自动播放,就调用playMovie()方法播放GIF动画

playMovie(canvas);

invalidate();

} else {

// 不允许自动播放时,判断当前图片是否正在播放

if (isPlaying) {

// 正在播放就继续调用playMovie()方法,一直到动画播放结束为止

if (playMovie(canvas)) {

isPlaying = false;

}

invalidate();

} else {

// 还没开始播放就只绘制GIF图片的第一帧,并绘制一个开始按钮

mMovie.setTime(0);

mMovie.draw(canvas, 0, 0);

int offsetW = (mImageWidth - mStartButton.getWidth()) / 2;

int offsetH = (mImageHeight - mStartButton.getHeight()) / 2;

canvas.drawBitmap(mStartButton, offsetW, offsetH, null);

}

}

}

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

if (mMovie != null) {

// 如果是GIF图片则重写设定PowerImageView的大小

setMeasuredDimension(mImageWidth, mImageHeight);

}

}

/**

* 开始播放GIF动画,播放完成返回true,未完成返回false。

*

* @param canvas

* @return 播放完成返回true,未完成返回false。

*/

private boolean playMovie(Canvas canvas) {

long now = SystemClock.uptimeMillis();

if (mMovieStart == 0) {

mMovieStart = now;

}

int duration = mMovie.duration();

if (duration == 0) {

duration = 1000;

}

int relTime = (int) ((now - mMovieStart) % duration);

mMovie.setTime(relTime);

mMovie.draw(canvas, 0, 0);

if ((now - mMovieStart) = duration) {

mMovieStart = 0;

return true;

}

return false;

}

/**

* 通过Java反射,获取到src指定图片资源所对应的id。

*

* @param a

* @param context

* @param attrs

* @return 返回布局文件中指定图片资源所对应的id,没有指定任何图片资源就返回0。

*/

private int getResourceId(TypedArray a, Context context, AttributeSet attrs) {

try {

Field field = TypedArray.class.getDeclaredField("mValue");

field.setAccessible(true);

TypedValue typedValueObject = (TypedValue) field.get(a);

return typedValueObject.resourceId;

} catch (Exception e) {

e.printStackTrace();

} finally {

if (a != null) {

a.recycle();

}

}

return 0;

}

}

这个类的代码注释已经非常详细了,我再来简单地解释一下。可以看到,我们重写了ImageView中所有的构建函数,使得 PowerImageView的用法可以和ImageView完全相同。在构造函数中,则是对所有必要的数据进行了初始化操作。首先,我们调用了 getResourceId()方法去获取图片资源对应的id值,在getResourceId()方法内部是通过Java的反射机制来进行获取的。得到了图片资源的id后,我们将它转换成InputStream,然后传入到Movie.decodeStream()方法中以解码出Movie对象。如果得到的Movie对象等于null,说明这是一张普通的图片资源,就不再进行任何特殊处理,因为父类ImageView都帮我们处理好了。如果得到的 Movie对象不等于null,则说明这是一张GIF图片,接着就要去获取是否允许自动播放、图片的宽高等属性的值。如果不允许自动播放,还要给播放按钮 注册点击事件,默认是不允许自动播放的。

接下来会进入到onMeasure()方法中。在这个方法中我们进行判断,如果这是一张GIF图片,则需要将PowerImageView的宽高重定义,使得控件的大小刚好可以放得下这张GIF图片。

再往后就会进入到onDraw()方法中。在这个方法里同样先判断当前是一张普通的图片还是GIF图片,如果是普通的图片就直接调用 super.onDraw()方法交给ImageView去处理就好了。如果是GIF图片,则先判断该图是否允许自动播放,允许的话就调用 playMovie()方法去播放GIF图片就好,不允许的话则会先在PowerImageView中绘制该GIF图片的第一帧,并在图片上绘制一个播放 按钮,当用户点击了播放按钮时,再去调用playMovie()方法去播放GIF图片。

下面我们来看看playMovie()方法中是怎样播放GIF图片的吧。可以看到,首先会对动画开始的时间做下记录,然后对动画持续的时间做下记 录,接着使用当前的时间减去动画开始的时间,得到的时间就是此时PowerImageView应该显示的那一帧,然后借助Movie对象将这一帧绘制到屏 幕上即可。之后每次调用playMovie()方法都会绘制一帧图片,连贯起来也就形成了GIF动画。注意,这个方法是有返回值的,如果当前时间减去动画 开始时间大于了动画持续时间,那就说明动画播放完成了,返回true,否则返回false。

完成了PowerImageView的编写,下面我们就来看一看如何使用它吧,其实非常简单,打开或新建activity_main.xml,代码如下所示:

relativelayout p=""

android:layout_width="match_parent"

android:layout_height="match_parent"

com.example.powerimageviewtest.powerimageview p=""

android:id="@+id/image_view"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:src="@drawable/anim"

/

可以看到,PowerImageView的用法和ImageView几乎完全一样,使用android:src属性来指定一张图片即可,这里指定的anim就是一张GIF图片。然后我们让PowerImageView在布局里居中显示MainActivity中的代码都是自动生成的,这里就不再贴出来了。在AndroidManifest.xml中还有一点需要注意,有些4.0 以上系统的手机启动了硬件加速功能之后会导致GIF动画播放不出来,因此我们需要在AndroidManifest.xml中去禁用硬件加速功能,可以通过指定android:hardwareAccelerated属性来完成,代码如下所示:

?xml version="1.0" encoding="utf-8"?

manifest p=""

package="com.example.powerimageviewtest"

android:versionCode="1"

android:versionName="1.0"

uses-sdk p=""

android:minSdkVersion="14"

android:targetSdkVersion="17" /

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme"

android:hardwareAccelerated="false"

android:name="com.example.powerimageviewtest.MainActivity"

android:label="@string/app_name"

现在可以来运行一下代码了,一打开程序你就会看到GIF图片的第一帧,点击图片之后就可以播放GIF动画了。

然后我们还可以通过修改activity_main.xml中的代码,给它加上允许自动播放的属性,代码如下所示:

relativelayout p=""

xmlns:attr=""

android:layout_width="match_parent"

android:layout_height="match_parent"

com.example.powerimageviewtest.powerimageview p=""

android:id="@+id/image_view"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:src="@drawable/anim"

attr:auto_play="true"

/

这里使用了刚才我们自定义的属性,通过attr:auto_play来启用和禁用自动播放功能。现在将auto_play属性指定成true后,PowerImageView上就不会再显示一个播放按钮,而是会循环地自动播放动画。不仅如此,PowerImageView还继承了ImageView原生的所有功能,只要指定的不是GIF图 片,PowerImageView表现的结果就和ImageView完全一致,现在我们来放一张普通的PNG图片,修改 activity_main.xml中的代码,如下所示:

relativelayout p=""

android:layout_width="match_parent"

android:layout_height="match_parent"

com.example.powerimageviewtest.powerimageview p=""

android:id="@+id/image_view"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:src="@drawable/myphoto"

/

这里在src属性里面指定了一张名字为myphoto的PNG图片,图片在布局正中央显示出来了,正是普通ImageView所具备的功能。我们还可以在PowerImageView中指定android:scaleType等属性,用法和原生的ImageView完全一样。

android怎么实现播放gif

以下是关于Android如何播放Gif动画的内容,此内容在网上已经很多。在《疯狂Android讲义》中李刚也有所介绍和相关的源代码。

1.android实现播放gif动画,如何将gif动画打散,将gif图片打散本文介绍两个工具,可以帮我们打散图片:

gifsplitter2.0 下载地址:

easygifanimator 下载地址:

第一个软件分割图片都是bmp图片,图片比较大,这里不推荐使用,本站推荐使用第二种软件

以上两种软件的使用方法本站不在详细赘述,本站详细介绍安卓开发中使用的代码

2.android实现播放gif动画,假设我们已经得到了gif动画被打散的图片,分别为:x0.png、x1.png、x2.png、 x3.png,

关于gifgifffer播放代码和giftof的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/22228.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载