zoukankan      html  css  js  c++  java
  • Android开发(25)--framebyframe帧动画并实现启动界面到主界面的跳转

          Drawable animation可以加载Drawable资源实现帧动画。AnimationDrawable是实现Drawable animations的基本类。推荐用XML文件的方法实现Drawable动画,不推荐在代码中实现。这种XML文件存放在工程中res/drawable/目录下。XML文件的指令(即属性)为动画播放的顺序和时间间隔。

    在XML文件中<animation-list>元素为根节点,<item>节点定义了每一帧,表示一个drawable资源的帧和帧间隔。此XML文件必须写在res资源文件目录下的anim文件夹下,

    下面是一个XML文件的实例:

    framebyframe.xml

    <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
        android:oneshot="false">
        <item android:drawable="@drawable/m1" android:duration="1000" />
        <item android:drawable="@drawable/m2" android:duration="1000" />
        <item android:drawable="@drawable/m3" android:duration="1000" />
        <item android:drawable="@drawable/m4" android:duration="1000" />
        <item android:drawable="@drawable/m5" android:duration="1000" />
        <item android:drawable="@drawable/m6" android:duration="1000" />
        <item android:drawable="@drawable/m7" android:duration="1000" />
    </animation-list>
    <!-- 
    oneshot :是否只播放一遍动画 true 播放一遍 false 循环播放
    默认就是false
     -->


    下面是StartActivity.java

    package com.example.lesson18_framebyframe;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.graphics.drawable.AnimationDrawable;
    import android.os.Bundle;
    import android.os.Handler;
    import android.view.Menu;
    import android.widget.ImageView;
    
    public class StartActivity extends Activity {
    	private ImageView imageView;
    	private AnimationDrawable animationDrawable;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_start);
    		//帧动画  
    				imageView = (ImageView) findViewById(R.id.imageView1);
    				
    				//第一种方式实现的动画
    				/*animationDrawable = (AnimationDrawable) getResources().getDrawable(R.anim.framebyframe);
    				imageView.setBackgroundDrawable(animationDrawable);*/
    				
    				//第二种方式实现的动画
    				imageView.setBackgroundResource(R.anim.framebyframe);
    				
    				animationDrawable = (AnimationDrawable) imageView.getBackground();
    				
    				animationDrawable.start();
    				
    				new Handler(){
    					public void handleMessage(android.os.Message msg) {
    					  if(msg.what==1){
    						  Intent intent = new Intent(StartActivity.this,NextActivity.class);
    						  startActivity(intent);
    					  }
    					};
    				}.sendEmptyMessageDelayed(1, 7000);
    				
    				
    				//animationDrawable.setOneShot(false);是否循环播放
    				//animationDrawable.stop();停止播放
    				//animationDrawable.isRunning();//是否播放
    				//animationDrawable.getNumberOfFrames();//播放帧
    				//animationDrawable.getFrame(index); 返回制定索引的 Drawable对象
    				//animationDrawable.getDuration(i);停留的时间
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.start, menu);
    		return true;
    	}
    
    }
    


    布局文件:

    <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=".StartActivity" >
    
     <ImageView
         android:id="@+id/imageView1"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_alignParentLeft="true" />
    
    </RelativeLayout>
    


    NextActivity.java

    package com.example.lesson18_framebyframe;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    
    public class NextActivity extends Activity {
    
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    
    		TextView tv = new TextView(this);
    		tv.setText("启动界面到主界面完成");
    
    		setContentView(tv);
    
    	}
    
    }
    

    效果如下:

                   

  • 相关阅读:
    Average of Levels in Binary Tree
    Maximum Average Subarray I
    Integer Replacement
    Add Digits
    Binary Tree Level Order Traversal II
    Majority Element II
    Majority Element
    匿名函数
    Django的Template不支持range()函数的问题解决办法
    python文件对比利用difflib库实现文件夹下详细内容对比
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3161531.html
Copyright © 2011-2022 走看看