问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

安卓中如何添加显示gif动态图片?

发布网友 发布时间:2022-04-24 02:32

我来回答

2个回答

热心网友 时间:2022-05-15 18:45

大家都知道,Android开发模拟器为了节省内存,一般不支持直接显示gif图片,即使你强制设置了,也只会显示图片的第一帧。看到网上也有许多的方法,来实现此功能,可都比较的繁琐,需要修改android源代码来实现或者用gif解析器来实现。在此文章中,这里教大家一种比较简洁的一个方法,你可以把这个类当做是一种工具类。用的时候,直接搬到程序里面,更改下图片的资源,就可以非常轻松的显示gif图片了。

 


步骤1:看一下这个工具类的实例代码:MyGifView.java

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Movie;

import android.util.AttributeSet;

import android.view.View;

 

public class MyGifView extends View{

private long movieStart;

private Movie movie;

    //此处必须重写该构造方法

public MyGifView(Context context,AttributeSet attributeSet) {

super(context,attributeSet);

//以文件流(InputStream)读取进gif图片资源

movie=Movie.decodeStream(getResources().openRawResource(R.drawable.keyboard));

}

 

@Override

protected void onDraw(Canvas canvas) {

long curTime=android.os.SystemClock.uptimeMillis();

//第一次播放

if (movieStart == 0) {

movieStart = curTime;

}

if (movie != null) {

int raction = movie.ration();

int relTime = (int) ((curTime-movieStart)%raction);

movie.setTime(relTime);

movie.draw(canvas, 0, 0);

//强制重绘

invalidate();

}

super.onDraw(canvas);

}

}

此工具类中,只做了2件事情。1,构造方法;2,重写了onDraw()方法。大家以后用的话,只需拷贝此类到你的工程下即可起作用。


步骤2:布局文件代码 activity_main.xml

<LinearLayout 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" >

 

    <TextView 

       android:text="====Gif图片测试布局===="

        android:layout_height="wrap_content"

       android:layout_width="wrap_content"

       />

    

     <com.example.showgifimage.MyGifView 

       android:id="@+id/iv"

       android:layout_height="wrap_content"

       android:layout_width="wrap_content"

       android:layout_margin="20dp"

       /> 

   

</LinearLayout>

布局文件中,注意的是:标签的设置 <com.example.showgifimage.MyGifView/>.

格式:包名+.类名

 


步骤3:主activity中调用

public class MainActivity extends Activity {

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

}

    就这么轻松的把Gif图片显示了~~

热心网友 时间:2022-05-15 20:03

d
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电视屏幕不亮但有声音是怎么回事 电视只出声音不出画面怎么调 每天做踩单车的运动能瘦腿吗? 踩单车能瘦腿吗 知道踩自行车能瘦腿吗 注意姿势才是关键 踩自行车可以瘦腿吗 踩单车的好处是什么?怎样进行瘦腿? Adobe AIR是什么?能做什么? adobeair是什么软件,可不可以卸载?? 15--18万之间的车 《鲁班书》作为木匠鼻祖鲁班留下的书,为什么会成为禁书? 吃什么保肝护肝 安卓版x-plore不能看动态图片吗,也就是gif,查看图片时,图片是不会动的 木工的祖师是谁 Android开发怎样显示gif格式的图片 木匠的祖师是 说说吃什么东西对肝好能保护肝? 为什么木匠鼻祖鲁班留下的《鲁班书》成了禁书? 安卓手机如何查看gif动态图片? 木匠的祖先是谁? android怎么实现播放gif 谁知道,吃什么蔬菜护肝? 谁被木匠们奉为鼻祖? 安卓手机怎样看gif动画 木工祖师的来源 肝脏不好吃什么 12种蔬菜养出好肝脏 中国的木匠祖师爷是鲁班,瓦匠祖师爷是谁呢? 安卓手机里的GIF动态图,怎么才可以自动播放? 吃什么蔬菜对肝脏有好处 木匠祖师爷是鲁班,那其它各行各业的祖师爷是谁? 平时吃什么能保肝护胆? 我的安卓手机为什么看不了gif动态图??? 有些商城可以分期付款的是什么意思? 被称为木匠祖师的鲁班,还有哪些不为人知的职业? 安卓手机如何打开gif 为什么说鲁班是木匠的祖师爷 安卓手机里面的百思不得姐GIF动态图怎么才可以和苹果的一样不用点播放按钮自动在那里播放啊 借条的法律效力是如何的 商品分期业务是什么意思 木匠的师祖是谁? 安卓使用看别人的GIF都是静态的 苹果的就可以动态的? 鲁班是谁的祖师爷 QQ上用安卓手机看ios手机发的gif图只有点进去才会动怎么解决? 被称为木匠祖师的是谁 安卓手机怎么看动态图啊,在uc上看的图不动啊?我的手机是oppo find x907 信用卡商城里面的东西分期付款购买什么意思 为什么说鲁班是木匠的祖师爷 ? 微信怎么看消息记录 《最爱是中华中》说的“班门弄斧”是形容卖弄本领,不自量力。你知道我国古代的木匠祖师是谁吗? 安卓看图软件支持gif