`
苗振忠
  • 浏览: 59715 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Android中显示gif动态图片

 
阅读更多
在Android中显示一个静态图片比如png jpg等等都很方便,但是如果要显示一个gif 动态图片就需要进行一些处理。

本文是采用自定义view 然后进行重新onDraw方法来实现

首先自定义View【MyGifView.java】

[java] view plain copy
在CODE上查看代码片派生到我的代码片

    /** 
     * MyGifView.java 
     * Copyright(C) 2014 
     * creator:cuiran 2014-5-16 下午2:01:56 
     */  
    package com.cayden.videodemo.view;  
      
    import com.cayden.videodemo.R;  
      
    import android.content.Context;  
    import android.graphics.Canvas;  
    import android.graphics.Movie;  
    import android.util.AttributeSet;  
    import android.view.View;  
      
    /** 
     * 自定义View 播放gif动画  
     * @author cuiran 
     * @version 1.0.0 
     */  
    public class MyGifView extends View {  
      
        private long movieStart;  
          
        private Movie movie=Movie.decodeStream(getResources().openRawResource(R.drawable.football));  
      
      
        private MyGifView(Context context, AttributeSet attrs, int defStyleAttr) {  
            super(context, attrs, defStyleAttr);  
            // TODO Auto-generated constructor stub  
        }  
      
        private MyGifView(Context context, AttributeSet attrs) {  
            super(context, attrs);  
            // TODO Auto-generated constructor stub  
        }  
          
        public MyGifView(Context context) {  
            super(context);  
            // TODO Auto-generated constructor stub  
                  
        }  
      
          
      
        /* (non-Javadoc) 
         * @see android.view.View#onDraw(android.graphics.Canvas) 
         */  
        @Override  
        protected void onDraw(Canvas canvas) {  
            // TODO Auto-generated method stub  
                long curTime=android.os.SystemClock.uptimeMillis();  
            //第一次播放  
            if (movieStart == 0) {  
            movieStart = curTime;  
            }  
            if (movie != null) {  
                int duraction = movie.duration();  
                int relTime = (int) ((curTime-movieStart)%duraction);  
                movie.setTime(relTime);  
                movie.draw(canvas, 0, 0);  
                //强制重绘  
                invalidate();  
            }  
            super.onDraw(canvas);  
              
              
        }  
      
          
    }  


然后写Activity

[java] view plain copy
在CODE上查看代码片派生到我的代码片

    /** 
     * GifMainActivity.java 
     * Copyright(C) 2014 
     * creator:cuiran 2014-5-16 下午2:10:29 
     */  
    package com.cayden.videodemo;  
      
    import com.cayden.videodemo.view.MyGifView;  
      
    import android.app.Activity;  
    import android.os.Bundle;  
      
    /** 
     * TODO  
     * @author cuiran 
     * @version 1.0.0 
     */  
    public class GifMainActivity extends Activity {  
      
          
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
              
            //第一种 直接使用代码  
            MyGifView gifView=new MyGifView(getApplicationContext());  
            setContentView(gifView);  
              
            //第二种采用xml 貌似出错了?????  
    //      setContentView(R.layout.gif_main);  
        }  
    }  

本来还可以使用布局xml的但是报错了

[java] view plain copy
在CODE上查看代码片派生到我的代码片

    <?xml version="1.0" encoding="utf-8"?>  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
         >  
          
        <TextView   
           android:text="====Gif图片测试布局===="  
            android:layout_height="wrap_content"  
           android:layout_width="wrap_content"  
           />  <span id="transmark"></span>
          
         <com.cayden.videodemo.view.MyGifView   
           android:id="@+id/iv"  
           android:layout_height="wrap_content"  
           android:layout_width="wrap_content"  
           android:layout_margin="20dp"  
           />   
    </LinearLayout>  


以上是部分代码,仅供参考!


分享到:
评论

相关推荐

    android中显示本地或网络GIF图片

    总结来说,Android中显示GIF图片主要依赖于`Movie`类,结合`InputStream`或字节数组进行解析。对于本地和网络资源,处理方式略有不同,但核心原理一致。自定义`View`或使用已有的`GifMovieView`可以帮助简化代码,...

    android TextView 显示Gif 图片

    本篇将详细介绍如何在`Android TextView`中显示GIF动态图片。 首先,我们需要理解`TextView`的基本工作原理。`TextView`是Android系统提供的一个UI组件,用于显示单行或多行文本。它基于`Spannable`和`Editable`...

    android gif图片循环显示

    在Android开发中,GIF图片的处理是一项常见的需求,特别是在创建动态效果或者用户交互时。本文将详细讲解如何实现一个可以循环显示10张GIF图片的功能,这对于初学者来说是一次很好的学习机会。 首先,我们需要理解...

    Android从网络上获取Gif图片并显示

    利用android开源库android-gif-drawable和android-async-http不仅能显示本地的gif图片,还能从网络上获取Gif图片并显示.即使是较大的gif图片,也不会报OOM异常。

    Android中Gif图片的d动态显示

    在Android开发中,Gif动态图的显示是一个常见的...综上所述,Android中动态显示Gif涉及到多个层面,包括原生支持、第三方库的选择与使用,以及性能优化策略。理解这些知识点对于构建流畅、高效的Android应用至关重要。

    Android 显示gif图片

    本文将深入探讨如何在Android中有效地显示gif图片,并提供相关的知识点。 首先,Android原生的ImageView控件并不支持直接显示GIF动态图,因此我们需要借助第三方库或者自定义控件来实现这个功能。其中,两个常用的...

    android显示gif图片完整代码

    以下是一个关于如何在Android应用中显示GIF图片的详细步骤和知识点。 1. **选择库** 在Android开发中,常见的用于显示GIF的库有`GIFDrawable`(自Android 4.3引入,但功能有限)和第三方库如`NineOldAndroids`、`...

    Android动态gif图片显示与监听

    总的来说,Android中动态显示GIF图片需要借助第三方库如Glide,并结合自定义监听来实现对GIF播放状态的控制。通过理解这些基础知识,开发者可以更好地在应用中集成和管理动态GIF,为用户提供丰富的视觉体验。

    Android-android-gif-drawable用于在Android上显示动画GIF

    在Android应用开发中,有时我们需要在界面上展示动态GIF图像,这时`android-gif-drawable`库就显得非常实用。这个库是专门为在Android平台上高效、流畅地播放GIF动画而设计的。本文将深入探讨如何使用`android-gif-...

    android中gif格式图片的显示

    以上就是Android中显示GIF格式图片的基本方法,无论是使用第三方库还是自定义控件,都能有效地解决这个问题。需要注意的是,在处理GIF时,应考虑性能和内存管理,因为GIF动画可能占用大量内存,尤其是在低内存设备上...

    Android显示GIF图片

    综上所述,Android显示GIF图片涉及到了第三方库的选择与集成、Android原生GIFDrawable的使用,以及自定义View的开发。理解这些概念并熟练运用,可以帮助你在Android应用中实现流畅的GIF图片显示。

    可以显示gif图片的Edittext

    在Android开发中,有时为了提供更丰富的用户体验,我们可能需要在EditText控件中展示动态的GIF图片,例如,将GIF图片作为密码输入框的占位符。这个"可以显示gif图片的Edittext" demo就是针对这种情况设计的,它实现...

    Android GIF动态图片效果

    在Android开发中,引入GIF动态图片效果可以让应用更加生动有趣。本文将深入探讨如何在Android平台上实现GIF动态图片的显示,以及相关的优化策略。 首先,我们需要了解Android系统对GIF格式的支持情况。Android原生...

    android 加载(显示)gif图片

    在Android平台上,加载和显示GIF图片是一项常见的需求,特别是在创建动态效果或者动画时。GIF是一种支持多帧图像和简单动画的文件格式,但在原生的Android SDK中,并不直接支持显示GIF。因此,我们需要借助第三方库...

    Android显示Gif图片Demo

    在Android平台上,显示Gif动图是一个常见的需求,特别是在创建动态表情、加载动画效果或者游戏场景时。在本示例中,我们将探讨如何利用引入的`GifView.jar`包来实现在Android应用中显示Gif图片。首先,我们需要了解`...

    android 显示gif图片

    在Android平台上,显示GIF图片是一项常见的需求,特别是在创建动态壁纸、消息提示或者动画效果时。在Android 2.1(API级别7)及更高版本中,我们可以利用多种方法来实现这一功能。以下将详细介绍如何在Android ...

    android显示网络gif图片

    在Android开发中,显示网络GIF图片是一项常见的需求,特别是在社交应用、游戏或者任何需要动态图展示的场景中。这篇文章将深入探讨如何在Android应用程序中加载并显示从网络获取的GIF图片。 首先,我们需要一个能够...

    android 显示大的gif图片 能解决内存溢出的问题

    综上所述,解决Android中显示大GIF图片导致的内存溢出问题,需要结合多种策略,包括但不限于选择合适的GIF解析库、使用JNI进行优化、异步加载、流式处理、内存管理和预处理等。同时,不断地测试和调整,以找到最佳的...

    gifView, android中显示gif

    android中现在没有直接显示gif的view,只能通过mediaplay来显示,且还常常不能正常显示出来,为此写了这个gifview,其用法和imageview一样 已知bug: 如果图档过大,会出现OOM 1.1 版本增加以下功能 1.增加gif在...

Global site tag (gtag.js) - Google Analytics