android实现类似gif格式动画

   在开发应用的时候时常想用一些类似于gif能够变化的。网上也有些例子是通过对gif图片进行分解再解码实现的。但是比较麻烦,而起性能也不好。下面介绍利用ViewFlipper实现类似gif图片播放功能。
   实现原理:
   ViewFlipper组建可以可以实现图片的动态播放功能。
   setAutoStart(true);   设置为可以自动播放
   setFlipInterval(500);   设置播放间隔
   startFlipping();     开始自动播放
   废话不多说,直接上代码。
   1、main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <RelativeLayout 
        android:layout_width="fill_parent"
    	android:layout_height="fill_parent"
        >
        <RelativeLayout 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            >
            <ImageView 
                android:id="@+id/iv_test"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
            	android:background="@drawable/index_button_pull_up"
            	android:layout_alignParentBottom="true"
                />
            <ViewFlipper 
                android:id="@+id/vf_test1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="5dip"
                android:layout_alignBottom="@+id/iv_test"
                >
            </ViewFlipper>
            <ViewFlipper 
                android:id="@+id/vf_test2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_above="@+id/iv_test"
                >
            </ViewFlipper>
        </RelativeLayout>
    </RelativeLayout>

</LinearLayout>

   2、GifTestActivity.java
package org.sunday.main;

import android.app.Activity;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.ViewFlipper;

public class JpgTestActivity extends Activity {
    /** Called when the activity is first created. */
	private final String TAG = "JpgTestActivity";
	
	private ViewFlipper vf;
	private ViewFlipper vfNum;
	private int[] imgs = {
			R.drawable.location_show_tips_1, R.drawable.location_show_tips_2
	};
	private int[] imgsNum = {
		R.drawable.screensavers_s_number_0,R.drawable.screensavers_s_number_1,
		R.drawable.screensavers_s_number_2,R.drawable.screensavers_s_number_3,
		R.drawable.screensavers_s_number_4,R.drawable.screensavers_s_number_5,
		R.drawable.screensavers_s_number_6,R.drawable.screensavers_s_number_7,
		R.drawable.screensavers_s_number_8,R.drawable.screensavers_s_number_9
	};
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        vf = (ViewFlipper) findViewById(R.id.vf_test1);
        vfNum = (ViewFlipper) findViewById(R.id.vf_test2);
        
        for(int i=0; i<imgs.length; i++) {
        	ImageView iv = new ImageView(this);
        	iv.setImageResource(imgs[i]);
        	iv.setScaleType(ImageView.ScaleType.CENTER);
        	vf.addView(iv, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        }
        
        for(int i=0; i<imgsNum.length; i++) {
        	ImageView iv = new ImageView(this);
        	iv.setImageResource(imgsNum[i]);
        	iv.setScaleType(ImageView.ScaleType.CENTER);
        	vfNum.addView(iv, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        }
        vf.setAutoStart(true);
        vf.setFlipInterval(500);
        vf.startFlipping();
        vfNum.setAutoStart(true);
        vfNum.setFlipInterval(1000);
        vfNum.startFlipping();
    }
}

猜你喜欢

转载自ff20081528.iteye.com/blog/1612490
今日推荐