• android学习笔记35——AnimationDrawable资源


    AnimationDrawable资源

    AnimationDrawable,代表一个动画。

    android既支持传统的逐帧动画(类似于电影方式,一张图片一张图片的切换),也支持通过平移、变换计算出来的补间动画、属性动画。

    下面以补间动画为例,介绍如何定义AnimationDrawable资源。

    定义补间动画的XML资源文件以<set.../>元素作为根元素,该元素内可定义如下4个元素:

      1.alpha:设置透明度的改变;

      2.scale:设置图片进行缩放改变;

      3.translate:设置图片进行位移变换;

      4.rotate:设置图片进行旋转;

    定义动画的XML资源文件存放于/res/anmi路径下,当使用ADT(Android Development Tools)创建一个android应用时,默认不会包含该路径,开发者需要自行创建该路径。

    定义补间动画的思路:

      设置一张图片的开始状态(包括透明度、位置、缩放比、旋转度)

      设置该图片的结束状态(包括透明度、位置、缩放比、旋转度)

      设置动画的持续时间,android系统会使用动画效果把这张图片从开始状态变换到结束状态。

    设置补间动画的语法格式如下图:

    实例:实现图片资源的缩放变换、位移变换

    访问方式:java-->R.anim.filename  xml-->anim.filename

    java中获取Animation对象,可通过AnimationUtils的LoadAnimation(context ctx,int resId)方法获取。

    动画资源文件==》myanim
    需要手动创建res/anim文件夹
    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/linear_interpolator" >
    
        <!-- 定义缩放变换 -->
        <scale
            android:duration="2000"
            android:fillAfter="true"
            android:fromXScale="1.0"
            android:fromYScale="1.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toXScale="1.4"
            android:toYScale="0.6" />
        <!-- 定义位移变换 -->
        <translate
            android:duration="2000"
            android:fromXDelta="10"
            android:fromYDelta="30"
            android:toXDelta="130"
            android:toYDelta="-80" />
        <!-- 设置透明度的改变 -->
        <alpha />
        <!-- 设置图片进行旋转 -->
        <rotate />
    
    </set>
    
    布局文件==》
    <LinearLayout 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:orientation="vertical"
        tools:context=".MainActivity" >
    
        <Button
            android:id="@+id/btnStar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center|center"
            android:gravity="center"
            android:text="启动"
            tools:ignore="HardcodedText" />
        <!-- tools:ignore="HardcodedText" 表示忽略编码方式警告 -->
        <!-- tools:ignore="ContentDescription"  表示忽略编码方式警告 -->
    
        <ImageView
            android:id="@+id/image"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:src="@drawable/nicenice"
            tools:ignore="ContentDescription" />
    
    </LinearLayout>
    
    代码实现==》
    package com.example.myanimationdrawable;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    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 Activity
    {
    	@Override
    	protected void onCreate(Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    
    		final ImageView img = (ImageView) this.findViewById(R.id.image);
    		// 加载动画资源
    		final Animation anim = AnimationUtils.loadAnimation(this, R.anim.myanim);
    		// 设置动画结束后保留结束状态,false表示动画结束后恢复到最初状态
    		anim.setFillAfter(false);
    
    		Button btnStart = (Button) this.findViewById(R.id.btnStar);
    		btnStart.setOnClickListener(new OnClickListener()
    		{
    			@Override
    			public void onClick(View v)
    			{
    				img.startAnimation(anim);// 开始动画
    			}
    		});
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu)
    	{
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    }
    
  • 相关阅读:
    导出csv 随便记录
    mysql 5.7.27 win64 安装步骤
    mysql 报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executin
    Mysql 基本命令
    遇到summernote编辑器的坑,解决上传图片性能问题。
    ajax提交json格式数组
    idea导入eclipse项目,tomcat启动报错org.apache.catalina.deploy.WebXml addFilter
    Spring(一)
    MyBatis源码分析(一)--SqlSessionFactory的生成
    MyBatis(八)--逆向工厂(generatorSqlmapCustom)
  • 原文地址:https://www.cnblogs.com/YYkun/p/5850204.html
Copyright © 2020-2023  润新知