Android帧动画(WiFi动画)

注意:逐帧动画在Android下可以通过代码和XML文件两种方式定义

下面简单介绍一下AnimationDrawable的常用方法:

 

void start():开始播放逐帧动画。

void stop():停止播放逐帧动画。

void addFrame(Drawable frame,int duration):为AnimationDrawable添加一帧,并设置持续时间。

int getDuration(int i):得到指定index的帧的持续时间。

Drawable getFrame(int index):得到指定index的帧Drawable。

int getNumberOfFrames():得到当前AnimationDrawable的所有帧数量。

boolean isOneShot():当前AnimationDrawable是否执行一次,返回true执行一次,false循环播放。

boolean isRunning():当前AnimationDrawable是否正在播放。

void setOneShot(boolean oneShot):设置AnimationDrawable是否执行一次,true执行一次,false循环播放

资源图片


1.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=".MainActivity" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="@drawable/frame"/>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:onClick="doClick"
        android:text="动起来!" />

</RelativeLayout>

2.在res/drawble/frame.xml

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 配置文件中定义帧动画的执行过程 android:oneshot="false" 设置为false会不停的循环播放动画  
	android:duration 表示展示所用的该图片的时间长度-->
	<item  android:duration="150"  android:drawable="@drawable/p1"/>
	<item  android:duration="150"  android:drawable="@drawable/p2"/>
	<item  android:duration="150"  android:drawable="@drawable/p3"/>
	<item  android:duration="150"  android:drawable="@drawable/p4"/>
	<item  android:duration="150"  android:drawable="@drawable/p5"/>
	<item  android:duration="150"  android:drawable="@drawable/p6"/>	
</animation-list>

3.MainActivity.java

package cn.tedu.android_day12_animation;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {
	private TextView textView;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		setViews();
	}

	private void setViews() {
		textView = (TextView) findViewById(R.id.textView);
	}

	public void doClick(View view){
		switch (view.getId()) {
		case R.id.button1:
			startFrameAnimation();
			break;
		}
	}

	//启动帧动画
	private void startFrameAnimation() {
		//配置文件方式
		AnimationDrawable ad=(AnimationDrawable) textView.getBackground();
	/*	
	 * //使用代码给animationDrawable添加帧
		ad.addFrame(getResources().getDrawable(R.drawable.p6), 150);
		ad.addFrame(getResources().getDrawable(R.drawable.p5), 150);
		ad.addFrame(getResources().getDrawable(R.drawable.p4), 150);
		ad.addFrame(getResources().getDrawable(R.drawable.p3), 150);
		ad.addFrame(getResources().getDrawable(R.drawable.p2), 150);
		ad.addFrame(getResources().getDrawable(R.drawable.p1), 150);
	*/	
	
		// 动画是否正在运行  
        if(ad.isRunning()){  
            //停止动画播放  
            ad.stop();  
        }  
        else{  
            //开始或者继续动画播放  
            ad.start();  
        }  
	}	
}



4.效果图



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值