zoukankan      html  css  js  c++  java
  • android 自定义动画

    android中主要有两种动画模式,一种是tweened animation(渐变动画),包含了4种动画类型,alpha(透明度)、scale(尺寸缩放)、translate(位置变换)、rotate(图形旋转),第二种是frame by frame (帧动画),就是逐帧播放设置好的动画

    我们看下第一种动画的实现

    第一步,定义好动画的xml文件,在res/anim下新建myanim.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 透明度变换| 开始透明度为10%| 目标透明度为100% |时间为2秒 -->
        <alpha    
         android:fromAlpha="0.1"
         android:toAlpha="1.0"
         android:duration="2000"
         />
        <!-- 缩放动画 | 开始X和Y都为0|动画结束时放大到140%|pivotX与pivotY设置动画相对于自身的位置|fillAfter表示播放完成后是否 被应用-->
        <scale 
            android:interpolator="@android:anim/accelerate_decelerate_interpolator"
            android:fromXScale="0.0"
            android:toXScale="1.4"
            android:fromYScale="0.0"
            android:toYScale="1.4"
            android:pivotX="50%"
            android:pivotY="50%"
            android:fillAfter="false"
            android:duration="3000"
            />
        <!-- 位置变换 |起始X和为Y都为30 | 结束X为0,Y为50,也就是会向左下方向移动|时间为3秒 -->
        <translate 
            android:fromXDelta="30"
            android:toXDelta="0"
            android:fromYDelta="30"
            android:toYDelta="50"
            android:duration="3000"
            />
        <!-- 旋转动画 |从0度开始 ,结束角度为350,动画相对于自身位置为50%,时间为3秒-->
        <rotate 
            android:interpolator="@android:anim/accelerate_decelerate_interpolator"
            android:fromDegrees="0"
            android:toDegrees="+350"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="3000"
            />
    </set>

    然后在activity_main.xml 新增加一个图片和按钮,按钮用来启动动画

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/RelativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.ssln.animation.MainActivity" >
    
        <ImageView
            android:id="@+id/myImageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center_horizontal"
            android:src="@drawable/img" />
    
        <Button
            android:id="@+id/butStart"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/myImageView"
            android:layout_alignParentBottom="true"
            android:text="开始动画" />
    
    </RelativeLayout>

    最后,在MainActivity.java中添加代码

    package com.ssln.animation;
     
     
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.animation.Animation;
    import android.view.animation.AnimationUtils;
    import android.widget.Button;
    import android.widget.ImageView;
    
    public class MainActivity extends ActionBarActivity {
    
        Animation myAnim;    //动画
        ImageView myImg;    //图像
        Button      myBtn;    //开始按钮
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            //加载动画
            myAnim=AnimationUtils.loadAnimation(this, R.anim.myanim);
            //查找图片
            myImg=(ImageView)findViewById(R.id.myImageView);
            //查走按钮
            myBtn=(Button)findViewById(R.id.butStart);
                    
            myBtn.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    //启动动画
                    myImg.startAnimation(myAnim);        
                }
            });
            
            
        }
    }

    显示效果如下,旋转中透明度增加,放大了图片并平移了位置

  • 相关阅读:
    slf4j日志框架绑定机制
    Btrace使用入门
    JVM反调调用优化,导致发生大量异常时log4j2线程阻塞
    [转载]Javassist 使用指南(三)
    [转载]Javassist 使用指南(二)
    [转载]Javassist 使用指南(一)
    数组升序排序的方法Arrays.sort();的应用
    copyOfRange的应用
    copyOf数组复制方法的使用(数组扩容练习)
    binarySearch(int[] a,int fromIndex,int toIndex, int key)的用法
  • 原文地址:https://www.cnblogs.com/alwaysfirst/p/4004712.html
Copyright © 2011-2022 走看看