文档章节

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
深圳
私信 提问

暂无文章

js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
10
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
13
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
18
0
MYSQL索引

索引的作用 索引类似书籍目录,查找数据,先查找目录,定位页码 性能影响 索引能大大减少查询数据时需要扫描的数据量,提高查询速度, 避免排序和使用临时表 将随机I/O变顺序I/O 降低写速度,占用磁...

关元
昨天
11
0
撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
昨天
30
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部