layout animation

本文详细介绍了如何使用LayoutAnimationController为布局内的视图设置动画效果。包括通过代码和XML两种方式实现子视图的动画,设置了动画的播放顺序及子视图间的延迟时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LayoutAnimationController

A layout animation controller is used to animated a layout's, or a view group's, children. Each child uses the same animation but for every one of them, the animation starts at a different time.

LayoutAnimationController用于为一个Layout里面的控件或者是Viewgroup的控件设置动画效果的,layout或者ViewGroup的子Veiw都使用同一个动画,但是每一个子Veiw的动画开始的时间是不一样的。同时我们也可以同过相关属性来设置子Veiw之间的这个时间间隔,以达到我们想要的效果。同时还可以,子view通话的播放顺序。我们通过他可以实现非常绚丽的效果.

实现方式


一、用代码实现


代码片段:

ListView  lv = (ListView) rootView.findViewById(R.id.lv);

/**
 * 首先创建一个动画
 */
Animation animation = AnimationUtils.loadAnimation(getActivity(),R.anim.layout_item_animation);

/**
 * 创建一个lyaoutd动画控制器,并将我们定义的animation 传入其构造函数,则此layout动画控制器实例就拿到了我们定义的动画。
 */
LayoutAnimationController layoutAnimationController = new LayoutAnimationController(animation);




/**
 *layout动画控制器的播放模式
 *
 *normal   0     默认
 *reverse  1    倒序
 *random   2    随机
 */
layoutAnimationController.setOrder(LayoutAnimationController.ORDER_RANDOM);


/**
 * 设置子view之间动画的延迟时间,这个延迟时间为设置的这个值乘以动画的时常得到,
 * 比如:我们这里设置为0.3 ,假设动画设置的android:duration="500"
 * 则这个延迟时间为 0.3 *500 =150毫秒
 */
layoutAnimationController.setDelay(0.3f);

/**
 * 将我们设置好的布局控制器,然后再layout初始化的时候就会播放该动画
 */
lv.setLayoutAnimation(layoutAnimationController);


一、用xml实现



1.在res/anim/下创建一个xxx.xml文件,我这里取名layout_test_animation.xml


    <layoutAnimation />对应的是一个


<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:animation="@anim/layot_animation_set"
android:animationOrder="reverse"
android:delay="50%"

    >

<!--android:delay  view动画时间间隔 (延迟)   70% 也可以是一个浮点数 如“1.2”等 这个值乘以动画的播放时间就得到延迟的时间
    android:animationOrder="random"   view的显示方式 random表示随机
    android:animationOrder 的取值有
    normal 0     默认
    reverse    1    倒序
    random 2    随机
    android:animation="@anim/layot_animation_set" 表示孩子显示时的具体动画是什么
   android:repeatCount="infinite" 重复次数 -->

</layoutAnimation>

接着定义我们的animation文件layot_animation_set.xml 如果是当个动画也可不用<set />标签,直接用当个动画的标签即可。


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

    <alpha
        android:duration="400"
        android:fromAlpha="0.2"
        android:toAlpha="1.0">
        <!--fromAlpha属性为动画起始时透明度
            toAlpha    属性为动画结束时透明度
            0.0表示完全透明
            1.0表示完全不透明
            以上值取0.0-1.0之间的float数据类型的数字-->
    </alpha>
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXDelta="0"
        android:fromYDelta="-100%p"
        android:toXDelta="0"
        android:duration="550"
        android:toYDelta="0">

        <!--此处的单位可以是具体的设定为某个值(任意值都可以),也可以可以用百分比,用百分比时,不带p是对View自身的百分比,
P是相对父类的百分比 可以为正数也可以为负数 ,此处组好使用百分比,因为百分比的值在不同的设备上基本一致-->

    </translate>

    <scale
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="400"
        android:toXScale="1.0"
        android:toYScale="1.1">
        <!--

        fromXScale[float] fromYScale[float]    为动画起始时,XY坐标上的伸缩尺寸 0.0表示收缩到没有
        toXScale [float]  toYScale[float]  为动画结束时,XY坐标上的伸缩尺寸
        1.0表示正常无伸缩
        值小于1.0表示收缩
        值大于1.0表示放大
        此处pivotX,pivotY的单位可以是具体的设定为某个值(任意值都可以,以为旋转的中心点可以是任意一点),也可以可以用百分比,用百分比时,不带p是对View自身的百分比,
P是相对父类的百分比 可以为正数也可以为负数 ,此处组好使用百分比,因为百分比的值在不同的设备上基本一致-->
    </scale>

</set>

接着在要使用动画的Layout或者VeiwGroup的xml文件中引用我们定义的<layoutAnimation /> 文件


<ListView
    android:id="@+id/lv"
    android:layout_width="wrap_content"
    android:layoutAnimation="@anim/layout_test_animation"
    android:background="#00ffffff"
    android:dividerHeight="1dp"
    android:divider="@null"
    android:layout_height="wrap_content"
    />

到此我们的Layout animation就设置完成了。


效果:




基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值