• 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);        
                }
            });
            
            
        }
    }

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

  • 相关阅读:
    JavaScript window对象属性和方法
    bzoj1878 [SDOI2009]HH的项链
    bzoj3289 Mato的文件管理
    bzoj2038 [2009国家集训队]小Z的袜子(hose)
    bzoj2333 [SCOI2011]棘手的操作
    bzoj2809 [Apio2012]dispatching
    hdu1512 Monkey King
    免费航班
    bzoj4538 [Hnoi2016]网络
    bzoj3207 花神的嘲讽计划Ⅰ
  • 原文地址:https://www.cnblogs.com/alwaysfirst/p/4004712.html
Copyright © 2020-2023  润新知