文档章节

android动画

 梦想家Peng
发布于 2016/03/04 09:59
字数 824
阅读 37
收藏 0

补间动画【Tween Animation】

对res点击鼠标右键,创建Android XML File,在Resource Type栏选择Tween Animation,通常选择Root Element为set,创建新的文件之后,该文件会出现在res的anim文件夹下,所有的Tween动画配置文件都应该在该文件夹中。
1) alpha动画:淡入淡出动画
fromAlpha / toAlpha:表示透明度,取值为float类型,值应该为0~1之间,0表示完全透明,1表示完全不透明

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:duration="3000"
        android:fromAlpha="0.3"
        android:toAlpha="1"
        />
</set>

2) rotate:旋转动画
fromDegrees / toDegrees:表示旋转角度,取值为整型,值应该为0~N之间。
pivotX / pivotY:旋转的中心点坐标,取值通常使用百分比

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

    <rotate
        android:duration="3000"
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="720" />

</set>

3) scale:缩放动画
fromXScale / toXScale / fromYScale / toYScale:表示缩放比例,取值通常为百分比
pivotX / pivotY:参考上述rotate中的同名属性

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    
    <scale 
        android:fromXScale="0"
        android:toXScale="100%"
        android:fromYScale="0"
        android:toYScale="100%"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="3000"
        />

</set>

4) translate:平移动画
fromXDelta / toXDelta fromYDelta / toYDelta:表示平移位置,也可以理解为以左上角顶点为基准的移动位置,取值通常为百分比

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate 
        android:fromXDelta="0"
        android:toXDelta="100%"
        android:fromYDelta="0"
        android:toYDelta="0"
        android:duration="3000"
        />

</set>

5) 通用属性:
duration:持续时长,取值为整型数,单位为毫秒
repeatCount:重复次数,取值为整型数,动画的第1次执行并不会计入重复次数之内,所以,如果希望动画能执行2次,则取值应该为1
repeatMode:重复模式,取值为restart或reverse,当取值为restart时,重复时会直接从初始状态再次执行动画效果,当取值为reverse时,重复时会逆向执行动画效果回到初始状态,再继续后面的重复,该属性仅当repeatCount的值大于0时有效
startOffset:开始执行动画的时间偏移量,取值为整型数,单位为毫秒,表示过多长时间以后再开始执行动画,通常用于动画集中
6) 根节点属性:
fillAfter:是否停留在动画结束之后的状态,取值为布尔值
interpolator:执行动画的加速度,取值为@android :anim/decelerate_interpolator时表示减速度,取值为@android :anim/accelerate_interpolator时表示加速度,取值为@android :anim/accelerate_decelerate_interpolator表示先加速度后减速度
7) 使用动画:
通过AnimationUtils的静态方法loadAnimation()将动画的配置文件加载为Animation对象,并使用控件(例如TextView)的startAnimation()开始动画

public class MainActivity extends Activity implements View.OnClickListener {
    private TextView tvHelloWorld;
    private Animation alpha;
    private Animation rotate;
    private Animation scale;
    private Animation translate;

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

        tvHelloWorld = (TextView) findViewById(R.id.tv_hello_world);

        findViewById(R.id.btn_start_alpha).setOnClickListener(this);
        findViewById(R.id.btn_start_rotate).setOnClickListener(this);
        findViewById(R.id.btn_start_scale).setOnClickListener(this);
        findViewById(R.id.btn_start_translate).setOnClickListener(this);

        alpha = AnimationUtils.loadAnimation(this, R.anim.alpha);
        rotate = AnimationUtils.loadAnimation(this, R.anim.rotate);
        scale = AnimationUtils.loadAnimation(this, R.anim.scale);
        translate = AnimationUtils.loadAnimation(this, R.anim.translate);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_start_alpha:
            tvHelloWorld.startAnimation(alpha);
            break;

        case R.id.btn_start_rotate:
            tvHelloWorld.startAnimation(rotate);
            break;
            
        case R.id.btn_start_scale:
            tvHelloWorld.startAnimation(scale);
            break;
            
        case R.id.btn_start_translate:
            tvHelloWorld.startAnimation(translate);
            break;
        }

    }

}
  • Activity之间切换时自定义动画切换效果
    -----------------------------------
    在调用了startActivity()之后,调用overridePendingTransition(int enterAnim, int exitAnim)方法即可。




© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 34
码字总数 15605
作品 0
深圳

暂无文章

以太坊总结

一、概念说明 1.以太坊(Ethereum blockchain)由V神(Vitalik Buterin)发明,是一个交易记录的永久数据库,它以一个“无信任”的交易系统来运行,不需要任何第三方信任机构即可进行点对点的...

盼望明天
33分钟前
1
0
Java并发工具类——AtomicInteger

基本类型int的递增等操作并不是线程安全的,加上synchronized又会影响性能,因此在并发情况下我们应该使用AtomicInteger,下面通过一个例子验证一哈。 public class TestAtomicInteger {...

东都大狼狗
35分钟前
1
0
基于CentOS7.2系统对RabbitMQ单机版安装过程

准备虚拟机系统 我的系统如下 系统版本7.2 安装perl yum install perl 安装wget工具 yum install -y wget 安装相关依赖工具 yum install ncurses ncurses-base ncurses-devel ncurses-libs ...

凌晨一点
39分钟前
1
0
Maven常用命令

Maven常用命令 说到命令,则不得不提一下环境变量,在之前的博文中简单提了一下环境变量的配置,这里具体说一下。说完环境变量的配置,然后就是Maven的常用命令,这里说的是常用的几个命令,...

星汉
55分钟前
0
0
Flink操作mysql kafka和hbase

主程序 package com.streaming.flink;import java.util.Properties;import org.apache.flink.api.common.functions.FlatMapFunction;import org.apache.flink.api.common.functi......

守望者之父
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部