android 动画入门(一)

本文是Android动画的基础入门,主要讲解了在属性动画出现之前的View动画,包括Tween动画和Frame动画。重点介绍了Tween动画的四种类型:Alpha、Translate、Scale和Rotate,详细解析了它们的属性,并通过实例展示了如何在XML和代码中使用这些动画。同时,文章还探讨了动画执行的时间设置、坐标参照点以及动画组合使用的方法。
摘要由CSDN通过智能技术生成

准备花一些时间研究下androd动画,因为一些酷的效果是离不开动画的,但是所有的知识都是要从最基本的讲起,只有把基础打好,学一些高级的技术或者效果才会有思路,而不会在某一基础点卡住,今天就讲下动画的入门知识,


我们知道android动画有好几种,什么属性动画,过渡动画等,这篇讲下动画最基础,在属性动画出现之前就是view 动画了,

它有二种

第一类是Tween动画,就是对view进行(旋转、平移、放缩和渐变)等动画。

第二类就是 Frame动画,就好像看电影一样,只是帧每表播放的很快,这样就感觉我们的肉眼就感觉是动画,


Tween动画

tween动画有四种,如图:


tween动画可以在xml中定义也可以用android自带的类实现,如果要在xml中定义的话,首先要在res文件夹下创建一个anim文件夹,然后创建的xml文件就放在anim文件夹下,在使用的时候就是R.anim.(创建的动画xml)


alpha动画

第一个讲alpha动画,这是因为这是四种中最简单的,首先在anim文件夹下创建一个alpha.xml文件,


发现alpha动画有那么多属性,其实除了

 android:fromAlpha=""
 android:toAlpha=""

这二个属性,其他属性都是和其他三种共有的,先把上面的二个属性讲下,android:fromAlpha就是渐变动画起始的渐变度,android:toAlpha是结束时候的透明度,0表示完全透明就是看不到,1表示完全可见,

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

代码使用:

final Animation alpha = AnimationUtils.loadAnimation(this, R.anim.alpha);
iv_anim = (ImageView) findViewById(R.id.iv_anim);
btn_start_anim.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
iv_anim.setAnimation(alpha);
}
});

效果:


这是因为动画执行需要时间,在xml文件中并没有这属性,那么现在添加这个动画执行时间的属性:android:duration="3000" 单位为毫表,为了演示效果我把时间设置长点,方便看效果:


总结:动画一定要设置时间,否则无效

ranslate动画

就是让view控件在屏幕上可以移动,先看下translate动画都有那些属性:


上面的前四个方法都是平移动画独有的,其他都是共有的,现在对其四个属性进行详细说明:

 android:fromXDelta="" 起点x轴方向坐标值,这些数值可以是数字 百分比,比如:30,30%,30%p,这些数据分别是代表什么意思呢?30是代表以自身view的左上角为原点,进行向右移动30像素,30%表示以自身view的宽度(width)*30%为起始x轴坐标点,30%p这个是当前执行动画view的父view左上角为坐标点的父view的宽度*30%,记住是以哪个为坐标点为参考点很重要,如图:



 android:toXDelta="" 平移结束后的x轴方向终点坐标
 android:fromYDelta="" //同理上
 android:toYDelta=""//同理上

现在写例子验证下刚才讲的原理是否正确,

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff"
  >
    <Button
        android:id="@+id/btn_start"
        android:layout_width="200px"
        android:layout_height="60px"
        android:text="开始动画"
        />
    <ImageView
        android:id="@+id/iv_anim"
        android:layout_width="150px"
        android:layout_height="150px"
        android:background="@mipmap/aa"
        android:layout_marginTop="20px"
        android:layout_marginLeft="20px"
        android:layout_below="@+id/btn_start"
        />
</RelativeLayout>
看到我宽和高为什么用了px而不是dp呢?是为了我在屏幕上画点,以方便画图

动画xml文件:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:toXDelta="80"
    android:fromYDelta="0"
    android:toYDelta="80&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值