android 动态图gif显示俩种方法
2015-04-02 17:47
148 查看
//使用条件
1》都叫兽 GIF制作(软件):把gif动态图分解成一帧一帧的
*************************************************************************8
*********方法一(逐帧动画):
//dynamic_drawable.xml 设置好逐帧动画的播放逻辑
//定义,初始化,开始播放
//更多的一些用法
void start():开始播放逐帧动画。
void stop():停止播放逐帧动画。
void addFrame(Drawable frame,int duration):为AnimationDrawable添加一帧,并设置持续时间。
int getDuration(int i):得到指定index的帧的持续时间。
Drawable getFrame(int index):得到指定index的帧Drawable。
int getNumberOfFrames():得到当前AnimationDrawable的所有帧数量。
boolean isOneShot():当前AnimationDrawable是否执行一次,返回true执行一次,false循环播放。
boolean isRunning():当前AnimationDrawable是否正在播放。
void setOneShot(boolean oneShot):设置AnimationDrawable是否执行一次,true执行一次,false循环播放
*************************************************************************8
*********方法二(使用《AdapterFlipper》控件):
//activity_main.xml 就是定义一个很普通的AdapterViewFlipper控件
//MainAcivity.java 快一点只看注释
package com.example.xml03;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterViewFlipper;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.StackView;
public class MainActivity extends Activity {
private int[] imageIds = { R.drawable.dynamic01, R.drawable.dynamic02,
R.drawable.dynamic03, R.drawable.dynamic05, R.drawable.dynamic06,
R.drawable.dynamic07, R.drawable.dynamic08 };
AdapterViewFlipper filpper;
StackView mStackView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
filpper = (AdapterViewFlipper)findViewById(R.id.filpper);
BaseAdapter adapter = new BaseAdapter() { //新建<span style="font-family: Arial, Helvetica, sans-serif;">BaseAdapter,里面放若干帧图片</span>
@Override
public View getView(int position, View convertView, ViewGroup parent) //这里循环把帧图片加入<span style="font-family: Arial, Helvetica, sans-serif;">BaseAdapter中,一次加一帧</span>
{
// TODO Auto-generated method stub
ImageView imageview = new ImageView(MainActivity.this);
imageview.setImageResource(imageIds[position]);
imageview.setScaleType(ImageView.ScaleType.FIT_XY);
imageview.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
return imageview;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return imageIds.length;
}
};
filpper.setAdapter(adapter); //把<span style="font-family: Arial, Helvetica, sans-serif;">建好的</span><span style="font-family: Arial, Helvetica, sans-serif;">BaseAdapter加到</span><span style="font-family: Arial, Helvetica, sans-serif;">AdapterViewFlipper控件中</span><span style="font-family: Arial, Helvetica, sans-serif;">
</span>
public void prev(View view){ //点击前一帧
filpper.showPrevious();
filpper.stopFlipping();
}
public void next(View view){ //点击下一帧
filpper.showNext();
filpper.stopFlipping();
}
public void auto(View view){ //点击自动播放即“动态图”,按实现在xml文件中设定好的时间进行播放
filpper.startFlipping();
}
}
1》都叫兽 GIF制作(软件):把gif动态图分解成一帧一帧的
*************************************************************************8
*********方法一(逐帧动画):
//dynamic_drawable.xml 设置好逐帧动画的播放逻辑
<?xml version="1.0" encoding="utf-8"?> <!-- 根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画 根标签下,通过item标签对动画中的每一个图片进行声明 android:duration 表示展示所用的该图片的时间长度 --> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false" > <item android:drawable="@drawable/icon1" android:duration="100"></item> <item android:drawable="@drawable/icon2" android:duration="100"></item> <item android:drawable="@drawable/icon3" android:duration="100"></item> <item android:drawable="@drawable/icon4" android:duration="100"></item> <item android:drawable="@drawable/icon5" android:duration="100"></item> <item android:drawable="@drawable/icon6" android:duration="100"></item> </animation-list> <!--在res文件夹下新建一个drawale的文件夹,然后在其下编写自己的xml <pre name="code" class="html">icon1为一帧一帧的图<span style="font-family: Arial, Helvetica, sans-serif;">--></span>
//定义,初始化,开始播放
frameAnim = (AnimationDrawable) getResources().getDrawable(R.drawable.dynamic_drawable);//初始化播放资源及逻辑 DynamicIv = (ImageView)findViewById(R.id.DynamicIv1);//<span style="font-family: Arial, Helvetica, sans-serif;">DynamicIv1布局文件中一个很普通的</span><span style="font-family: Arial, Helvetica, sans-serif;">ImageView控件即可</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span>DynamicIv.setBackgroundDrawable(frameAnim); frameAnim.start();
//更多的一些用法
void start():开始播放逐帧动画。
void stop():停止播放逐帧动画。
void addFrame(Drawable frame,int duration):为AnimationDrawable添加一帧,并设置持续时间。
int getDuration(int i):得到指定index的帧的持续时间。
Drawable getFrame(int index):得到指定index的帧Drawable。
int getNumberOfFrames():得到当前AnimationDrawable的所有帧数量。
boolean isOneShot():当前AnimationDrawable是否执行一次,返回true执行一次,false循环播放。
boolean isRunning():当前AnimationDrawable是否正在播放。
void setOneShot(boolean oneShot):设置AnimationDrawable是否执行一次,true执行一次,false循环播放
*************************************************************************8
*********方法二(使用《AdapterFlipper》控件):
//activity_main.xml 就是定义一个很普通的AdapterViewFlipper控件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <AdapterViewFlipper android:id="@+id/filpper" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:flipInterval="200" > <!--控制播放的时间,帧图之间的播放间隔 --> </AdapterViewFlipper> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:onClick="prev" android:text="prev" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:onClick="next" android:text="next" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:onClick="auto" android:text="auto" /> </RelativeLayout>
//MainAcivity.java 快一点只看注释
package com.example.xml03;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterViewFlipper;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.StackView;
public class MainActivity extends Activity {
private int[] imageIds = { R.drawable.dynamic01, R.drawable.dynamic02,
R.drawable.dynamic03, R.drawable.dynamic05, R.drawable.dynamic06,
R.drawable.dynamic07, R.drawable.dynamic08 };
AdapterViewFlipper filpper;
StackView mStackView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
filpper = (AdapterViewFlipper)findViewById(R.id.filpper);
BaseAdapter adapter = new BaseAdapter() { //新建<span style="font-family: Arial, Helvetica, sans-serif;">BaseAdapter,里面放若干帧图片</span>
@Override
public View getView(int position, View convertView, ViewGroup parent) //这里循环把帧图片加入<span style="font-family: Arial, Helvetica, sans-serif;">BaseAdapter中,一次加一帧</span>
{
// TODO Auto-generated method stub
ImageView imageview = new ImageView(MainActivity.this);
imageview.setImageResource(imageIds[position]);
imageview.setScaleType(ImageView.ScaleType.FIT_XY);
imageview.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
return imageview;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return imageIds.length;
}
};
filpper.setAdapter(adapter); //把<span style="font-family: Arial, Helvetica, sans-serif;">建好的</span><span style="font-family: Arial, Helvetica, sans-serif;">BaseAdapter加到</span><span style="font-family: Arial, Helvetica, sans-serif;">AdapterViewFlipper控件中</span><span style="font-family: Arial, Helvetica, sans-serif;">
</span>
public void prev(View view){ //点击前一帧
filpper.showPrevious();
filpper.stopFlipping();
}
public void next(View view){ //点击下一帧
filpper.showNext();
filpper.stopFlipping();
}
public void auto(View view){ //点击自动播放即“动态图”,按实现在xml文件中设定好的时间进行播放
filpper.startFlipping();
}
}
相关文章推荐
- Android 显示 Gif动态图片的三种常用方法
- Android开发全程记录(十四)——Android显示gif动画的方法
- android显示gif动态图的方法
- android显示gif(全套方法)
- Android之ImageView既能普通图片又能显示gif的方法
- Android显示GIF动画的几种方法
- Android显示GIF图片的方法
- Android应用程序全屏显示的方法
- 关于qt显示gif图片的方法
- wince中显示BMP、JPG、Gif以及PNG的方法
- Android下Opengl程序显示文字的简单方法
- android gif 图片显示问题
- VC中导入图像(BMP,JPG,GIF)并显示的方法
- “android list targets 无target显示” 的解决方法。
- VC 显示GIF动画的两种方法
- vc显示jpg,gif图像简单方法
- android笔记之在WebView中显示ProgressBar的两种方法
- 在VC下显示JPEG、GIF格式图像的一种简便方法
- 显示JPG和GIF图片的简单方法
- VC++ 2005中显示jpg,bmp,gif图像的方法