文档章节

android动画

 梦想家Peng
发布于 2016/03/04 09:59
字数 824
阅读 37
收藏 0
点赞 1
评论 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
博文 33
码字总数 15605
作品 0
深圳

暂无相关文章

【elasticsearch】 随笔 Date datatype

一。时间类型的本质 首先json是没有时间类型的,对于es来说,时间类型的标示可以是下面三种情况 1.一个时间格式的字符串,如:"2014-11-27T08:05:32Z","2015-01-01" or "2015/01/01 12:10:3...

xiaomin0322 ⋅ 12分钟前 ⋅ 0

阿里云资源编排ROS使用教程

阿里云资源编排ROS详细内容: 阿里云资源编排ROS使用教程 资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、...

mcy0425 ⋅ 14分钟前 ⋅ 0

适配器设计模式

1、适配器模式 把一个类的接口变换成客户端所期待的另一种接口 使原本因接口不匹配而无法在一起工作的两个类能够在一起工作 分为类的适配器模式和对象的适配器模式 2、类适配器模式 类的适配...

职业搬砖20年 ⋅ 19分钟前 ⋅ 0

npm操作报错 _stream_writable.js:61

有一天 不知道什么原因(估计和node的版本有关),无论你做什么npm的操作 都会报错/usr/local/lib/node_modules/npm/node_modules/readable-stream/lib/_stream_writable.js:61 这时候只要执...

lilugirl ⋅ 22分钟前 ⋅ 0

Eclipse安装插件的几种方式

Eclipse魅力之一就是支持可扩展的插件,来丰富自身的功能,这种方式也是建立在开源思想之上的。具体使用什么方式去安装插件,要看我们拿到的是什么。 1. 拿到的是一串URL,如http://subclips...

GordonNemo ⋅ 25分钟前 ⋅ 0

div图片叠加

css实现代码如下: <div style="position: relative;"><!--这个层为外面的父层,需设置相对位置样式--> <div style="position: absolute;"><!--子层,需设置绝对位置样式--> <i......

niithub ⋅ 26分钟前 ⋅ 0

作用域slot

如果父组件需要使用子组件中的内容怎么办,比如父组件需要控制子组件的显示 <div id="root"><child><template slot-scope="props"><h1>{{props.item}} <div>编辑</div></h1><......

金于虎 ⋅ 29分钟前 ⋅ 1

HongHu commonservice-eureka 项目构建过程

上一篇我们回顾了关于 spring cloud eureka的相关基础知识,现在我们针对于HongHu cloud的eureka项目做以下构建,整个构建的过程很简单,我会将每一步都构建过程记录下来,希望可以帮助到大家...

明理萝 ⋅ 32分钟前 ⋅ 1

xml和对象的相互转化

@Data//setter和getter方法,toString和equals,hashcode方法@EqualsAndHashCode//代表重写equals和hashcode方法@XmlAccessorType(XmlAccessType.FIELD)public class Classroom {@X......

拐美人 ⋅ 32分钟前 ⋅ 0

tableView cell的高度 分组头部尾部的高度 自适应

@property (nonatomic) CGFloat rowHeight; // default is UITableViewAutomaticDimension@property (nonatomic) CGFloat sectionHeaderHeight; // default is UITableViewA......

娜一片蓝色星海 ⋅ 33分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部