Android属性动画元素,Android 动画基础-属性动画(二)

前面我们已经使用JAVA代码创建了一个属性动画中的ObjectAnimator,这里我们将讲解下怎么在xml代码定义同时分析相关的属性。

1. 分清属性动画和普通动画xml定义

普通动画xml的定义是在res文件夹下的anim里面(没有anim文件夹的,自己创建),而属性动画xml的定义是在res文件夹下的animator文件夹里面(没有animator文件夹的自己创建),这一点一定注意。

2. 属性动画xml代码中的属性分析

首先我们创建一个xml代码,是以set为根元素的,在根元素的属性中,只有一个属性--android:ordering

(1). android:ordering

在Set根元素中,它有两个供选择的参数,sequentially或者together。在set元素下,动画通常不只有一个,而是多个,意思说在set元素下,有很多的子元 素,每一个元素都是一个动画。sequentially表示的是多个动画按照顺序发生,together表示的同时发生

其次,我们来看子元素(objectAnimator)中的属性(以下内容,我是按照着安卓官方的api来写的,由于英语水平有限,因此分析可能错误,望原谅)

(2).android:propertyName

需要操作的属性名,通常有X,Y(这俩是对他们的坐标进行移动操作), alpha(对透明度进行操作),rotation(对旋转进行操作),rerotationX,rerotationY(绕对称轴进行旋转),

(3).android:valueFrom

动画开始前时的值,这个值是android:propertyName属性里面的值。如果不设置的话,则是view本身的值。供选择参数的类型有:int,float,color

(4).android:valueTo

动画完成后的值,这个是一个相对值,是相对于android:valueFrom的值变化的。供选择参数的类型有:int,float,color

(5).android:valueType

这是动画属性值的参数类型,供选择的有intType,floatType。默认(不设置的情况下)为color。

这里我分析这四种属性,其他的属性要么在Animation中有,要么就是我也不知道什么意思,实在不好意思。

3. JAVA代码引用xml文件

首先我们分清楚Animation的引用方法--相应的动画使用不同类来引用。

(1).变换动画

使用AnimationUtils来调用静态方法loadAnimation,创建一个Animation对象,在通过view对象的startAnimation加载动画。

(2).布局动画

给一个view集合加载动画,通常先使用LayoutAnimationController来new一个对象,在靠view集合的setLayoutAnimation方法加载动画。

(3).帧动画

通常在drawable下创建一个xml文件,以animation-list为根元素,item作为子元素,用来加载每一帧图片。再在JAVA代码中,view通过调用setImageResource,来引用xml文件

其次我们再来看看Animator的引用方法

通过AnimatorInflater来调用静态方法loadAnimator来创建一个AnimatorSet对象,其次使用其对象来调用setTarget方法来设置哪个view需要加载该动画,最后在调用start方法开始动画。

4.完整代码展示

布局文件代码

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.example.android_propertyaniamtion.MainActivity" >

android:id="@+id/imageview"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentTop="true"

android:src="@drawable/ic_launcher" />

android:id="@+id/button"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:text="@string/button_string" />

res下的animator文件夹下的代码

>

android:propertyName="X"

android:duration="1000"

android:valueTo="500"

android:valueType="floatType"

/>

Activity代码

package com.example.android_propertyaniamtion;

import android.animation.AnimatorInflater;

import android.animation.AnimatorSet;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.animation.AnimationSet;

import android.widget.Button;

import android.widget.ImageView;

public class MainActivity2 extends Activity implements OnClickListener{

private Button button = null;

private ImageView imageview = null;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

button = (Button) findViewById(R.id.button);

imageview = (ImageView) findViewById(R.id.imageview);

button.setOnClickListener(this);

}

public void onClick(View v) {

if(v.getId() == R.id.button)

{

AnimatorSet set =(AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.property);

set.setTarget(imageview);

set.start();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值