zoukankan      html  css  js  c++  java
  • 022_01Animation简单应用

    Android提供了2种动画:

      一. Frame动画,即顺序播放事先做好的图像,跟放胶片电影类似。

        开发步骤:1,把准备好的图片放进项目res/ drawable下

             2,定义动画XML文件。当然也可以采用编码方式定义动画效果(使用AnimationDrawable类)

             3,为View控件绑定动画效果。 iv.setImageResource(R.drawable.myframeanim)

      二. Tween动画,通过对 View 的内容进行一系列的图形变换 (包括平移、缩放、旋转、改变透明度)来实现动画效     果。动画效果的定义可以采用XML来做也可以采用编码来做。Tween动画有4种类型:

    overridePendingTransition简介

       Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画。

      它包括两个部分:一部分是第一个activity退出时的动画;

              另外一部分时第二个activity进入时的动画;

      可以用overridePendingTransition(int enterAnim, int exitAnim)来实现

      //实现淡入浅出的效果

        overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);

      // 由左向右滑入的效果
        overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);

      // 实现zoommin 和 zoomout (自定义的动画)

        overridePendingTransition(R.anim.zoomin, R.anim.zoomout);

    Frame动画开发过程:

       1,把准备好的图片放进项目res/ drawable下(使用在线分解GIF动态图片工具将GIF分解成多张图片,比如

    http://www.360doc.com/content/13/0314/18/699582_271506280.shtml)

      2,定义动画xml文件

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
     3 
     4     <item
     5         android:drawable="@drawable/a1"
     6         android:duration="100"/>
     7     <item
     8         android:drawable="@drawable/a2"
     9         android:duration="100"/>
    10     <item
    11         android:drawable="@drawable/a3"
    12         android:duration="100"/>
    13     <item
    14         android:drawable="@drawable/a4"
    15         android:duration="100"/>
    16     <item
    17         android:drawable="@drawable/a5"
    18         android:duration="100"/>
    19     <item
    20         android:drawable="@drawable/a6"
    21         android:duration="100"/>
    22     <item
    23         android:drawable="@drawable/a7"
    24         android:duration="100"/>
    25     <item
    26         android:drawable="@drawable/a8"
    27         android:duration="100"/>
    28     <item
    29         android:drawable="@drawable/a9"
    30         android:duration="100"/>
    31     <item
    32         android:drawable="@drawable/a10"
    33         android:duration="100"/>
    34     <item
    35         android:drawable="@drawable/a11"
    36         android:duration="100"/>
    37     <item
    38         android:drawable="@drawable/a12"
    39         android:duration="100"/>
    40     <item
    41         android:drawable="@drawable/a13"
    42         android:duration="100"/>
    43     <item
    44         android:drawable="@drawable/a14"
    45         android:duration="100"/>
    46     <item
    47         android:drawable="@drawable/a11"
    48         android:duration="100"/>
    49     <item
    50         android:drawable="@drawable/a15"
    51         android:duration="100"/>
    52     <item
    53         android:drawable="@drawable/a11"
    54         android:duration="100"/>
    55     <item
    56         android:drawable="@drawable/a16"
    57         android:duration="100"/>
    58     <item
    59         android:drawable="@drawable/a11"
    60         android:duration="100"/>
    61     <item
    62         android:drawable="@drawable/a17"
    63         android:duration="100"/>
    64     <item
    65         android:drawable="@drawable/a11"
    66         android:duration="100"/>
    67     <item
    68         android:drawable="@drawable/a18"
    69         android:duration="100"/>
    70 
    71 </animation-list>

      

    3,为View控件绑定动画效果。

    1 iv.setImageResource(R.drawable.animation);

    源代码

     1 package com.example.day22_01animationdemo;
     2 
     3 import android.app.Activity;
     4 import android.os.Bundle;
     5 import android.view.View;
     6 import android.view.animation.AlphaAnimation;
     7 import android.view.animation.Animation;
     8 import android.view.animation.RotateAnimation;
     9 import android.view.animation.TranslateAnimation;
    10 import android.view.animation.ScaleAnimation;
    11 import android.widget.ImageView;
    12 
    13 public class MainActivity extends Activity {
    14     private ImageView iv;
    15     @Override
    16     protected void onCreate(Bundle savedInstanceState) {
    17         super.onCreate(savedInstanceState);
    18         setContentView(R.layout.activity_main);
    19         iv = (ImageView) findViewById(R.id.iv_anim);
    20     }
    21 
    22     public void playanimation(View v){    
    23         iv.setImageResource(R.drawable.animation);    
    24     }    
    25     /**
    26      * @param v
    27      * 透明渐变效果动画
    28      *  1.0 means fully opaque 完全不透明
    29      *  0.0 means fully transparent. 完全透明
    30      */
    31     public void alpha(View v){    
    32         AlphaAnimation aa =  new AlphaAnimation(1, 0);
    33         aa.setDuration(2000);  //设置每一次播放的时间 第一帧到最后一帧
    34         aa.setFillAfter(true); //设置播放完毕之后 停留在哪一个帧 true表示最后一帧
    35         aa.setRepeatCount(2); //不包含你的第一次播放 ,表示再重复的次数
    36         aa.setRepeatMode(Animation.REVERSE); //表示你需要重复的第二次 是重新开始,还是从上一次的结束帧开始
    37         iv.setAnimation(aa);
    38     }
    39     
    40     /**
    41      * @param v
    42      * 缩放动画
    43      * 步骤 1.把需要的动画效果 自己设定好 
    44      *    2.将该动画效果使用 setAnimation 设置到需要应用该动画的imageview上
    45      * Animation.ABSOLUTE, 绝对的  x坐标就需要填像素 0 0
    46      * Animation.RELATIVE_TO_SELF,  相对于本身 
    47      * Animation.RELATIVE_TO_PARENT.
    48      */
    49     public void scale(View v){
    50         ScaleAnimation  sa = new ScaleAnimation(1, 2, 1, 2, 
    51                 Animation.RELATIVE_TO_SELF, 0.5f, 
    52                 Animation.RELATIVE_TO_SELF, 0.5f);
    53         sa.setFillAfter(true);
    54         sa.setRepeatCount(1);
    55         sa.setRepeatMode(Animation.REVERSE);
    56         sa.setDuration(2000);  
    57         iv.setAnimation(sa);
    58         
    59     }
    60     
    61     public void transfrom(View v){        
    62         TranslateAnimation ta = new TranslateAnimation(
    63                 Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 1, 
    64                 Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 1);
    65         
    66         ta.setFillAfter(true);
    67         ta.setDuration(2000);  
    68         ta.setRepeatCount(1);
    69         ta.setRepeatMode(Animation.REVERSE);
    70         iv.setAnimation(ta);
    71     }
    72     
    73     public void rotate(View v){
    74         RotateAnimation ra = new RotateAnimation(
    75                 0, 3600,
    76                 Animation.RELATIVE_TO_SELF, 0.5f, 
    77                 Animation.RELATIVE_TO_SELF, 0.5f);
    78         ra.setDuration(5000);  
    79         iv.setAnimation(ra);
    80     }
    81 }

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:paddingBottom="@dimen/activity_vertical_margin"
     6     android:paddingLeft="@dimen/activity_horizontal_margin"
     7     android:paddingRight="@dimen/activity_horizontal_margin"
     8     android:paddingTop="@dimen/activity_vertical_margin"
     9     tools:context="com.example.day22_01animationdemo.MainActivity" 
    10     android:orientation="vertical">
    11 
    12      <Button
    13         android:layout_width="wrap_content"
    14         android:layout_height="wrap_content"
    15         android:text="播放动画"
    16         android:onClick="playanimation" />
    17      <Button
    18         android:layout_width="wrap_content"
    19         android:layout_height="wrap_content"
    20         android:text="透明渐变动画"
    21         android:onClick="alpha" />
    22      <Button
    23         android:layout_width="wrap_content"
    24         android:layout_height="wrap_content"
    25         android:text="缩放渐变动画"
    26         android:onClick="scale" />
    27      <Button
    28         android:layout_width="wrap_content"
    29         android:layout_height="wrap_content"
    30         android:text="移动渐变动画"
    31         android:onClick="transfrom" />
    32      <Button
    33         android:layout_width="wrap_content"
    34         android:layout_height="wrap_content"
    35         android:text="旋转渐变动画"
    36         android:onClick="rotate" />
    37          
    38      <ImageView
    39          android:id="@+id/iv_anim"
    40         android:layout_width="wrap_content"
    41         android:layout_height="wrap_content"
    42         android:src="@drawable/a"/>
    43 </LinearLayout>

    两种方式播放合成效果的动画以及Activity切换时的效果代码:

      建立动态播放格式的xml文件。一种是建立两个XML文件用于设定不同效果,一种是将两种效果的设定放在同一个xml文件中。

    /Day22_01AnimationDemo/res/anim/alpha_anim.xml

    1 <?xml version="1.0" encoding="utf-8"?>
    2 <alpha 
    3     xmlns:android="http://schemas.android.com/apk/res/android"
    4     android:fromAlpha="0"
    5     android:toAlpha="1"
    6     android:duration="500"
    7     android:fillAfter="true"  >
    8 </alpha>

    /Day22_01AnimationDemo/res/anim/scale_anim.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <scale
     3     xmlns:android="http://schemas.android.com/apk/res/android"
     4     android:fromXScale="1"
     5     android:toXScale="2"
     6     android:fromYScale="1"
     7     android:toYScale="2"
     8     android:pivotX="0.5"
     9     android:pivotY="0.5"
    10     android:duration="500" >
    11 </scale>

    /Day22_01AnimationDemo/res/anim/myanimation.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <set>
     3     <alpha
     4         xmlns:android="http://schemas.android.com/apk/res/android"
     5         android:duration="2000"
     6         android:fromAlpha="1"
     7         android:repeatCount="2"
     8         android:repeatMode="reverse"
     9         android:toAlpha="0" >
    10     </alpha>
    11 
    12     <scale
    13         xmlns:android="http://schemas.android.com/apk/res/android"
    14         android:duration="2000"
    15         android:fromXScale="1"
    16         android:fromYScale="1"
    17         android:pivotX="0.5"
    18         android:pivotY="0.5"
    19         android:repeatCount="2"
    20         android:toXScale="2"
    21         android:toYScale="2" >
    22     </scale>
    23 </set>
     1 package com.example.day22_01animationdemo;
     2 
     3 import android.app.Activity;
     4 import android.content.Intent;
     5 import android.os.Bundle;
     6 import android.view.View;
     7 import android.view.animation.AnimationSet;
     8 import android.view.animation.AnimationUtils;
     9 import android.widget.ImageView;
    10 
    11 public class MainActivity extends Activity {
    12     private ImageView iv;
    13     @Override
    14     protected void onCreate(Bundle savedInstanceState) {
    15         super.onCreate(savedInstanceState);
    16         setContentView(R.layout.activity_main);
    17         iv = (ImageView) findViewById(R.id.iv_anim);
    18     }
    19     
    20     public void animset(View v){
    21         /*AnimationSet as = new AnimationSet(true);    
    22         AlphaAnimation aa =     (AlphaAnimation) AnimationUtils.loadAnimation(this, R.anim.alpha_anim);            
    23         ScaleAnimation sa =     (ScaleAnimation) AnimationUtils.loadAnimation(this, R.anim.scale_anim);            
    24         as.addAnimation(aa);
    25         as.addAnimation(sa);    
    26         iv.setAnimation(as);*/
    27 
    28         AnimationSet as = (AnimationSet) AnimationUtils.loadAnimation(this, R.anim.myanimation);
    29         iv.setAnimation(as);
    30     }
    31  
    32     public void jump(View v){    
    33         Intent intent = new Intent(this, MySecondActivity.class);
    34         startActivity(intent);
    35         
    36         /*enterAnim A resource ID of the animation resource to use for the incoming activity. Use 0 for no animation.
    37           exitAnim  A resource ID of the animation resource to use for the outgoing activity. Use 0 for no animation.*/
    38         //overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
    39         overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);    
    40     }     
    41 }

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:paddingBottom="@dimen/activity_vertical_margin"
     6     android:paddingLeft="@dimen/activity_horizontal_margin"
     7     android:paddingRight="@dimen/activity_horizontal_margin"
     8     android:paddingTop="@dimen/activity_vertical_margin"
     9     tools:context="com.example.day22_01animationdemo.MainActivity222" 
    10     android:orientation="vertical">       
    11      <Button
    12         android:layout_width="wrap_content"
    13         android:layout_height="wrap_content"
    14         android:text="动画合成效果"
    15         android:onClick="animset" />       
    16      <Button
    17         android:layout_width="wrap_content"
    18         android:layout_height="wrap_content"
    19         android:text="切换到下一个Activity"
    20         android:onClick="jump" /> 
    21      <ImageView
    22          android:id="@+id/iv_anim"
    23         android:layout_width="wrap_content"
    24         android:layout_height="wrap_content"
    25         android:src="@drawable/a"/>
    26 </LinearLayout>
    物随心转,境由心造,一切烦恼皆由心生。
  • 相关阅读:
    Appium Android sdk自动化工具安装
    roboframework-ride运行案例时报 Error 267 错误问题
    Flask 编写http接口api及接口自动化测试
    ssh免密码登录快速配置方法
    Ansible 介绍和使用
    Python 递归返回树形菜单JSON串 <flask>
    python学习之路web框架续
    python学习之路web框架续
    python学习之路web框架
    python学习之路前端-Dom
  • 原文地址:https://www.cnblogs.com/woodrow2015/p/4552894.html
Copyright © 2011-2022 走看看