• Android(java)学习笔记150:开源项目使用之gif view


    1. 由于android没有自带的gif动画,我在Android(java)学习笔记198:Android下的帧动画(Drawable Animation) 播客中提到可以使用AnimationView(帧动画)方法先将一个gif动画利用软件分割成若干静态图片,

    然后按照一定的时间间隔和播放顺序一帧一帧播放图片,从而给用户体验仿佛是动画gif播放的效果

    2. 其实网上的开源项目中有更为完善的gif动画播放的代码,下面以此为例进一步了解开源项目的使用:

    (1)在https://github.com/网站中搜索:gif view,我们在挑选开源项目中的时候,不仅要像我们之前提到过的那样(考虑使用者数量,更新时间),还有考虑使用的方便程度,如下:

    在gif-movie-view,项目如下:

    使用的案例示例如下:极其简单好用

     下载gif-movie-view的源代码到PC机上

    3. 下面结合编写一个完整的案例使用上面的gif view:

    (1)新建一个Android工程,命名为:" 动画gif播放 ",工程如下:

    (2)解压gif-movie-view的源代码(压缩文件),解压之后文件夹为gif-movie-view-master,拷贝其中src文件夹下的com文件夹的整个内容 到 我们上面编写的 "动画gif播放" 工程,

    同时我们也把res/values中的xml文件也拷贝到工程中(不然会报错,项目使用必须应用自定义的样式)。如下:

    这里README.md(发布者提供的示例代码,方便用户使用),进入src如下:

     

    (3)代码如下:

    activity_main.xml

    <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="com.himi.gifview.MainActivity" >
    <!-- 这里的布局使用,直接引用示例代码的 -->
        <com.basv.gifmoviewview.widget.GifMovieView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onGifClick"
                android:id="@+id/gif1"/>
    
    </RelativeLayout>

    根据示例代码修改我们新建工程的MainActivity,代码内容如下:

     1 package com.himi.gifview;
     2 
     3 import com.basv.gifmoviewview.widget.GifMovieView;
     4 
     5 import android.app.Activity;
     6 import android.os.Bundle;
     7 import android.view.Menu;
     8 import android.view.MenuItem;
     9 import android.view.View;
    10 
    11 public class MainActivity extends Activity {
    12 
    13     @Override
    14     protected void onCreate(Bundle savedInstanceState) {
    15         super.onCreate(savedInstanceState);
    16         setContentView(R.layout.activity_main);
    17         
    18         final GifMovieView gif1 = (GifMovieView) findViewById(R.id.gif1);
    19         gif1.setMovieResource(R.drawable.gif_heart);
    20     }
    21 
    22     public void onGifClick(View v) {
    23         GifMovieView gif = (GifMovieView) v;
    24         gif.setPaused(!gif.isPaused());
    25     }
    26 
    27 }

    这里的gif_heart,我们这里可以改成其他任意的gif,只要名称对应就行;

    这里的点击方法 onGifClick()中,我们先判断gif是否在播放,如果gif不在播放,我们点击gif播放的画面就会开始播放。反之如果gif在播放,我们点击就会暂停播放,如此反复

    运行效果如下,经过验证,是成功的:

  • 相关阅读:
    Detect loop in a singly linked list
    Partition an array around an interger
    Binary search for the first element greater than target
    Searching in a rotated and sorted array
    where, group by, having
    [scalability] Find all documents that contain a list of words
    [DP] 堆盒子问题
    cocos2dx 内存管理的理解
    cocos2dx 2.x版本:简化提炼tolua++绑定自定义类到lua中使用
    OpenGl从零开始之坐标变换(下)
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4780119.html
Copyright © 2020-2023  润新知