Android动画-帧动画-属性动画
来源:互联网 发布:装修花费知乎 编辑:程序博客网 时间:2024/06/10 08:18
说起android动画,肯定大家都不会太陌生,想来实现动画的效果也有很多方法,今天小弟就给大家分享一下,安卓中比较常见的动画,帧动画,属性动画。
帧动画:
其实就是一组图片按照一定的时间间隔和顺序循环切换,因为切换时间间隔通常较短,以至于给人们一种“会动”的感觉,从而达到动画效果。举个例子,小时候常看到的放电影,其实就是一张张(图片)胶卷切换的而成的效果。
特点:帧动画通常是由多张相似的图片组成。
属性动画:
所谓属性动画,就更好理解了。属性就是对象的属性,比如动画中我们用一张图片那么图片的属性就有 尺寸 宽度,高度,透明度,角度等,属性动画就是通过改变图片对象的这些属性而达到一个动画的效果。
特点:属性动画的操作对象通常是一张图片
好了,说了这么多理论,我们来看看实际的吧,先预览下效果:
提示:真机上测试是好的,但是不知道为什么录制成gif后就出现缩放的时候有阴影。应该是跟录制软件有关。
贴心服务,在此给出图片素材。
接下来,要开始撸代码了,作为一个屌丝程序员,其实对撸代码这件事还是心里很**的。哈哈。
- 首先在drawable下创建一个xml文件
<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <!--oneshot为false表示动画一直循环播放,反之--> <!-- 一个item标签描述 一帧 动画 --> <item android:drawable="@drawable/h1" android:duration="50"/> <item android:drawable="@drawable/h2" android:duration="50"/> <item android:drawable="@drawable/h3" android:duration="50"/> <item android:drawable="@drawable/h4" android:duration="50"/> <item android:drawable="@drawable/h5" android:duration="50"/> <item android:drawable="@drawable/h6" android:duration="50"/> <item android:drawable="@drawable/h7" android:duration="50"/> <item android:drawable="@drawable/h8" android:duration="50"/> <item android:drawable="@drawable/h9" android:duration="50"/> <item android:drawable="@drawable/h10" android:duration="50"/></animation-list>
同时图片h1-h10也是在drawable文件夹下的。
- 下来是布局文件 activity_main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="anim.com.anim.MainActivity"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:clickable="true" android:text="动起来"/> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/button1" android:layout_alignBottom="@+id/button1" android:clickable="true" android:layout_centerHorizontal="true" android:text="平移"/> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/button2" android:layout_alignBottom="@+id/button2" android:layout_alignParentRight="true" android:clickable="true" android:text="属性动画缩放"/> <ImageView android:id="@+id/anim_iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:background="@drawable/h1"/></RelativeLayout>
布局很简单,就放了三个Button和一个Imageview,没什么可说的。
做完以上,顺便给三个Button和Imageview添加监听和初始化
- ManiActivity中核心代码:
@Override public void onClick(View v) { switch (v.getId()){ //当点击“动起来”按钮时 执行 case R.id.button1: Toast.makeText(MainActivity.this,"点击了动起来",Toast.LENGTH_SHORT).show(); imageView.setBackgroundResource(R.drawable.huitailang); //创建anim对象 获取imageView的背景 赋给anim对象 AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground(); animationDrawable.start(); break; //当点击"平移"时执行 case R.id.button2: //平移轨迹 TranslateAnimation translateAnimation = new TranslateAnimation(0,0,0,450); translateAnimation.setDuration(4000); //动画完成后是否回归原位 translateAnimation.setFillAfter(false); //启动动画 imageView.startAnimation(translateAnimation); break; //当点击"属性动画缩放"时执行 case R.id.button3: ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(imageView,"alpha",0f,1f); objectAnimator.setInterpolator(new LinearInterpolator()); objectAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { Float value = (Float) animation.getAnimatedValue(); imageView.setAlpha(value); imageView.setScaleX(value*3); imageView.setScaleY(value*3); } }); objectAnimator.setDuration(5000); //设置重复次数,无限重复 objectAnimator.setRepeatCount(ObjectAnimator.INFINITE); //设置重复模式,从头开始 objectAnimator.setRepeatMode(ObjectAnimator.REVERSE); //启动动画 objectAnimator.start(); break; } }
到这里就基本完成了,其实这里说的只是Android动画的一部分,还有更多的需要我们平时自己去深入研究和学习的。。。
2 0
- Android动画-帧动画-属性动画
- Android动画--属性动画
- android动画 -- 属性动画
- Android动画-属性动画
- Android动画【属性动画】
- Android动画--属性动画
- android中的动画:帧动画、补间动画、属性动画
- Android动画:帧动画、补间动画、属性动画
- Android动画 帧动画、补间动画、属性动画 (一)
- Android动画 帧动画、补间动画、属性动画 (二)
- Android动画解析 View动画,帧动画与属性动画
- Android属性动画和帧动画
- Android的帧动画、补间动画、属性动画
- android 帧动画,补间动画,属性动画区别
- android属性动画--布局动画
- Android 动画之属性动画
- Android中的动画,属性动画
- android-属性动画、视图动画
- iOS让键盘消失,取消第一响应,取消一级响应
- crontab语法高亮
- Linux系统下连接Oracle数据库,创建新的数据库用户及分配权限
- MongoDB学习笔记—Linux下搭建MongoDB环境
- 用Maven部署war包到远程Tomcat服务器
- Android动画-帧动画-属性动画
- [isayme]Xshell配色方案
- CWnd与HWND的区别与转换
- centos安装redis
- 文件描述符和文件指针
- jquery中$('form').submit()和$("form").submit()有什么区别?注意一个是双引号,一个是单引号
- easyui的datebox的bug
- c++::用模板实现List
- laravel使用Caching缓存数据减轻数据库查询压力