Android动画Animation的两种加载执行方式

本文以简单的AlphaAnimation(“淡入淡出(透明度改变)”动画)为例,简单的说明Android动画Animation的两种加载执行方法:

(1) 直接写Java代码,制作Android动画。

(2) 写XML配置文件,加载XML资源文件执行。

其实这两者是一致的。要知道,在Android中,凡是可以在XML文件完成的View,代码亦可完全写出来。

现在先给出一个Java代码完成的动画AlphaAnimation,AlphaAnimation功能简单,简言之,可以让一个View在一个给定时间内从一个透明度变成另外一个透明度。0.0f是完全透明,1.0f是完全不透明。

A。第一种做法,写Java代码实现。

测试用的主Activity很简单,就一个居中显示的TextView,显示一串文字:Android动画,该TextView启动后在3秒内从完全透明渐变到完全不透明。MainActivity.java :

package zhangphil.animation;

import android.app.Activity;
import android.os.Bundle;
import android.view.animation.AlphaAnimation;
import android.view.animation.AnimationSet;
import android.widget.TextView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.activity_main);
		TextView text = (TextView) findViewById(R.id.text);

		// “淡入淡出”动画。
		// 0.0f,完全透明,
		// 1.0f,完全不透明。
		AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);
		alphaAnimation.setDuration(3000);

		// 动画集。
		AnimationSet animationSet = new AnimationSet(false);
		animationSet.addAnimation(alphaAnimation);

		// 开始播放动画。
		text.startAnimation(animationSet);
	}
}

MainActivity.java需要的activity_main.xml布局文件:

<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" >

    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:textSize="30sp"
        android:text="Android动画" />

</RelativeLayout>

这是第一种Java代码写法。

B。第二种做法,写XML文件实现。

介绍第二种XML写法。MainAvtivity.java:

package zhangphil.animation;

import android.app.Activity;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.TextView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		TextView text = (TextView) findViewById(R.id.text);

		// 初始化需要加载的动画资源
		Animation animation = AnimationUtils
				.loadAnimation(this, R.anim.my_anim);

		// 将TextView执行Animation动画
		text.startAnimation(animation);
	}
}

MainActivity.java需要的activity_main.xml文件不做任何修改和上述的A相同。

复杂代码工作转嫁到定义anim的XML。

一,需要在res/目录下建立一个anim文件夹,在里面创建一个Android资源文件,假设这个名字自定义为my_anim.xml。目录结构层次如图所示:

二,完成动画所需要的控制要素集代码,my_anim.xml具体代码:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator" >

    <alpha
        android:duration="3000"
        android:fromAlpha="0"
        android:toAlpha="1.0" />
    <!--
        透明度控制动画效果 alpha
        浮点型值:
            fromAlpha 动画起始时透明度
            toAlpha   动画结束时透明度
            说明:
                0.0表示完全透明
                1.0表示完全不透明
            以上值取0.0-1.0之间的float数据类型的数字

        整数:
            duration  动画持续时间
            说明:
                时间以毫秒为单位
    -->
</set>

版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明出处:http://blog.csdn.net/zhangphil

时间: 2024-10-09 12:27:41

Android动画Animation的两种加载执行方式的相关文章

UIImage的两种加载方式

UIImage的两种加载方式 1.有缓存:读取后放入缓存中下次可直接读取,适用于图片较少且频繁使用. [UIImage imageNamed:@"文件名"]: 在缓存中由系统管理,当收到memoryWarning时会释放这些内存资源. 2.无缓存:用完就释放掉,参数传的是全路径,适用于图片较多较大的情况下. NSString *path = [[NSBundlemainBundle] pathForResource: @"1.png"ofType: nil]; [U

Linux驱动的两种加载方式过程分析

一.概念简述 在Linux下可以通过两种方式加载驱动程序:静态加载和动态加载. 静态加载就是把驱动程序直接编译进内核,系统启动后可以直接调用.静态加载的缺点是调试起来比较麻烦,每次修改一个地方都要重新编译和下载内核,效率较低.若采用静态加载的驱动较多,会导致内核容量很大,浪费存储空间. 动态加载利用了Linux的module特性,可以在系统启动后用insmod命令添加模块(.ko),在不需要的时候用rmmod命令卸载模块,采用这种动态加载的方式便于驱动程序的调试,同时可以针对产品的功能需求,进行

ios 图片的两种加载方式

控件加载图片,plist,懒加载,序列帧动画,添加动画效果. IOS中有2种加载图片的方式. 方式一:有缓存(图片所占用的内存会一直停留在程序中) [objc] view plaincopy + (UIImage *)imageNamed:(NSString *)name; 注:必须是png文件.需要把图片添加到 images.xcassets中 例如: [objc] view plaincopy @property (weak, nonatomic) IBOutlet UIImageView 

Linux共享库两种加载方式简述

动态库技术通常能减少程序的大小,节省空间,提高效率,具有很高的灵活性,对于升级软件版本也更加容易.与静态库不同,动态库里面的函数不是执行程序本身 的一部分,而是在程序执行时按需载入,其执行代码可以同时在多个程序中共享.由于在编译过程中无法知道动态库函数的地址,所以需要在运行期间查找,这对程 序的性能会有影响. 共享库 对于共享库来讲,它只包括2个段:只读的代码段 和可修改的数据段.堆和栈段,只有进程才有.如果你在共享库的函数里,分配了一块内存,这段内存将被算在调用该函数的进程的堆中.代码段由于其

【Android进阶篇】Fragment的两种加载方式

一.概述 Fragment(碎片,片段)是在Android 3.0后才引入的,主要的目的是为了实现在大屏幕设备上的更加动态更加灵活的UI设计.这是因为平板电脑的屏幕比手机大得多,所以屏幕上可以放更多的组件,而不是简单地只是把手机上的组件放大.所以Fragment在应用中的是一个可重用的模块化组件,它有自己的布局.自己的生命周期,在一个Activity中可以包含多个Fragment. 二.在Activity中加载Fragment Fragment的加载方式包含两种:静态加载和动态加载.静态加载很简

dll的两种加载方式(pend)+ delayload

看过关于动态库的调用例子,于是决定动手做一做:dll的对外接口声明头文件,Mydll.h: //Mydll.h #include <stdio.h> #include <stdlib.h> #include "Public.h" #define DLL_EXPORT /*extern "c"*/ __declspec(dllexport) //导出 #define CUST_API _stdcall //标准调用 DLL_EXPORT voi

android三种加载图片方式

package smalt.music.utils; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.BitmapFactory.Options; //载入图片的方法:3种 public class BitmapUntil { // 直接加载图片 public static Bitmap getBitmap(String path) { Bitmap bt

Android loading界面的一种加载动态图片的方式

效果图:(方框从左到右进行显示) 图片资源: 原理介绍: 第一步:将三张图片按位置放好.此时图片资源是全部显示.(目的是坚持位置的正确性) 第二步:编写 shader.通过纹理s坐标进行判断,大于某个值时discard.当值为0时,全部不显示,当值为1时全部显示,中间显示的分段由值得大小决定. 顶点着色器: uniform mat4 uMVPMatrix; attribute vec3 aPosition; attribute vec2 aTexCoor; varying vec2 vTextu

Android---33---四种加载模式

Android的四种加载模式: 首先在配置Activity时即可指定该Activity用哪种加载模式,通过android:launchMode属性. 四种加载模式: standard:标准模式,默认 singleTop:Task顶单例模式 singleTask:Task内单例模式 singleInstance:全局单例模式 Android是通过Task对Activity进行管理的,通过getTaskID()方法可以获得当前活动的Task的ID. 可以把Task理解成Activity栈,Task以