Use of Android Open Source Library android-gif-drawable
Android's Open Source Library is used to display GIF images on Android. I checked on the internet, everyone said this framework is good, loading large GIF images will not be memory overflow, so I would like to try this open source Library, I under the author's source code and examples, but I do not get up. I do not know why, I went to the Internet to find the use of this open Source Library example found that there is a, I also downloaded down, found or not run up. I decided to try this source code, and finally I can use it now. Now I'm going to teach you how to use this library. people don't want to see what to do. You can download the demo code later.
Source code for 1.android-gif-drawable: https://github.com/koral--/android-gif-drawable
2. Tap it, as shown
3. Click on the download, we can see the following interface PS: is the download. aar file I wrote it wrong.
4. After downloading this file, we right-click the open mode to
5. Then unzip the file into an empty folder, and the copy can also
6. Then get the following
7. Click to open the Jni folder to get the following
8. Copy the jar package (Classes.jar) of these 4 folders and open Source Library to your Android code location as shown in
9. Here is how the authors teach you how to use
PS: Want to see the original, please come here to see: https://github.com/koral--/android-gif-drawable
From XML
The simplest-to-use GifImageView
(or)-like- GifImageButton
a normal ImageView
:
<pl.droidsonroids.gif.gifimageview android:layout_width= "match_parent" android:layout_height= "Match_parent" an droid:src= "@drawable/src_anim" android:background= "@drawable/bg_anim"/>
If Drawables declared by android:src
and/or is android:background
GIF files then they would be automatically recognized as GifDrawable
s and animate D. If given drawable is not a GIF then mentioned-like plain and ImageView
ImageButton
.
GifTextView
Allows use GIFs as compound drawables and background.
<pl.droidsonroids.gif.giftextview android:layout_width= "match_parent" android:layout_height= "Match_parent" and roid:drawabletop= "@drawable/left_anim" android:drawablestart= "@drawable/left_anim" android:background= "@drawable /bg_anim "/>
From Java code
GifImageView
, and has GifImageButton
GifTextView
also hooks for setters implemented. So animated GIFs can is set by calling and setImageResource(int resId)
setBackgroundResource(int resId)
GifDrawable
Can is constructed directly from various sources:
//asset file gifdrawable giffromassets = new gifdrawable ( getassets (), "Anim.gif" ); //resource (Drawable or raw) gifdrawable giffromresource = new gifdrawable ( Getresources (), r.drawable.anim ); //byte array byte[] rawGifBytes = ... gifdrawable giffrombytes = new gifdrawable ( rawGifBytes ); //filedescriptor filedescriptor fd = new randomaccessfile ( "/path/anim.gif", "R" ). GETFD (); gifdrawable giffromfd = new gifdrawable ( fd ); //file path gifdrawable giffrompath = new gifdrawable ( "/path/anim.gif" ); //file file giffile = new file (Getfilesdir (), "Anim.gif"); Gifdrawable giffromfile = new gifdrawable (Giffile); //assetfiledescriptor assetfiledescriptor afd = getassets (). OPENFD ( "anim.gif" ); Gifdrawable giffromafd = new gifdrawable ( afd ); //InputStream (it must support marking) inputstream sourceis = ... bufferedinputstream bis = new bufferedinputstream ( sourceIs, GIF_LENGTH ); gifdrawable giffromstream = new gifdrawable ( bis ); //direct ByteBuffer bytebuffer rawgifbytes = ... gifdrawable Giffrombytes = new gifdrawable ( rawGifBytes );
Inputstreams was closed automatically in finalizer if gifdrawable was no longer needed so you don ' t need to explicitly clos e them. Calling would recycle()
also close underlaying input source.
Note that all input sources need to the begining of ability to rewind. It is required to correctly play animated GIFs (where animation is repeatable) since subsequent frames be decoded on Dema nd from source.
Animation Control
GifDrawable
Implements an and so can with its methods and more Animatable
MediaPlayerControl
:
-
stop ()
-stops the animation, can be called from any thread
-
Start ( )
-starts the animation, can be called from any thread
-
isrunning ()
-Retu RNs Whether animation is currently running or not
-
reset ()
-rewinds the animation, Doe s not restart stopped one
-
setspeed (float factor)
-sets new animation speed factor, eg . Passing 2.0f would double the animation speed
-
seekto (int position)
-seeks animation (w Ithin current loop) to given , position
(in milliseconds) , only seeking forward is Supported
-
getduration ()
-returns duration of one loop of the animation
/li>
-
getcurrentposition ()
-returns elapsed time from the beginning of a current loop of Animat Ion
Using MediaPlayerControl
Standard controls for a MediaPlayer (as in Videoview) can is used to control GIF animation and show it current progress .
Just Set as GifDrawable
MediaPlayer on your mediacontroller like this:
@Override protected void onCreate ( bundle savedInstanceState ) { Super.oncreate ( savedInstanceState ); gifimagebutton gib = new gifimagebutton ( this ); setcontentview ( gib ); gib.setimageresource ( R.drawable.sample ); final mediacontroller mc = new mediacontroller ( this ); mc.setmediaplayer ( ( GifDrawable ) gib.getdrawable () ); mc.setanchorview ( gib ); Gib.setonclicklistener ( new Onclicklistener () { @Override public void onClick ( View v ) { mc.show (); } } ); }
Retrieving GIF metadata
getLoopCount()
-Returns a loop count as defined in NETSCAPE 2.0
extension
getNumberOfFrames()
-Returns number of frames (at least 1)
getComment()
-Returns comment text ( null
if GIF has no comment)
getFrameByteCount()
-Returns minimum number of bytes that can is used to store pixels of the single frame
getAllocationByteCount()
-Returns size (in bytes) of the allocated memory used to store pixels of given gifdrawable
getInputSourceByteCount()
-Returns Length (in bytes) of the backing input data
toString()
-Returns human readable information about image size and number of frames (intended for debugging purpose)
10.demo:http://pan.baidu.com/s/1gdd27v1