Android开发之动画实现
/*
* Android开发之动画实现
* 北京Android俱乐部群:167839253
* Created on: 2011-12-09
* Author: blueeagle
* Email: liujiaxiang@gmail.com
*/
在《Android开发之PopupWindow》这篇文章中,已经初步涉及到了动画的相关内容。对于一个弹出对话框。其动画效果可以利用xml文件进行设置,复习一下,就是对于对话框的飞进飞出,定义两个XML文件。例如:
飞入动画xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromYDelta="-100"
android:toYDelta="0"
android:duration="1000"
android:fillEnabled="true"
android:fillAfter="true"
/>
<scale android:fromXScale="0.6" android:toXScale="1.0"
android:fromYScale="0.6" android:toYScale="1.4" android:pivotX="50%"
android:pivotY="50%" android:duration="2000"
android:fillAfter="false"/>
<alpha android:interpolator="@android:anim/decelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="2000" />
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+359"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000">
</rotate>
</set>
anin.xml
飞出动画:
anout.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true"
>
<translate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromYDelta="0"
android:toYDelta="-100"
android:duration="1000"
android:fillEnabled="true"
android:fillAfter="true"
/>
<scale android:fromXScale="1.0" android:toXScale="0.4"
android:fromYScale="1.0" android:toYScale="0.4" android:pivotX="50%"
android:pivotY="50%" android:duration="2000" />
<alpha android:interpolator="@android:anim/decelerate_interpolator"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="2000"
/>
</set>
总结一下上面动画的特点:
1. 透明度渐变
2. 尺寸伸缩
3. 画面旋转
4. 位置移动
那么这类动画,可以在xml中体现,当然也可以在代码中的体现。在代码中对于上述四种动画形式可以总结成:
1. 透明度渐变
AlphaAnimation(float fromAlpha,float toAlpha);
这里的参数跟xml文件中的参数为对应的,(后面的也均为对应)功能跟xml文件中的保持一致。
fromAlpha:表示动画起始时的透明度;
toAlpha:表示动画结束时的透明度;
0.0表示完全透明,1.0表示完全不透明。
2. 尺寸伸缩
ScaleAnimation(float fromXScale,float toXScale,float fromYScale,float toYScale,int pivotXType,float pivotX,int pivotYType,float pivotY)
fromXScale,toXScale:起始和结束时的X坐标的伸缩;
fromYScale,toYScale:起始和结束时的Y坐标的伸缩;
pivotX:表示伸缩动画相对于X坐标的开始位置;
pivotY:表示伸缩动画相对于Y坐标的开始位置;
pivotXType:X坐标上的伸缩模式;
pivotYType:Y坐标上的伸缩模式。
3. 画面旋转
RotateAnimation(float fromDegrees,float toDegrees,int pivotXType,float pivotX,int pivotYType,float pivotY)
fromDegrees,toDegrees:起始和结束时的角度;
fromYScale,toYScale:起始和结束时的Y坐标的伸缩;
pivotX:表示伸缩动画相对于X坐标的开始位置;
pivotY:表示伸缩动画相对于Y坐标的开始位置;
pivotXType:X坐标上的伸缩模式;
pivotYType:Y坐标上的伸缩模式。
4. 位置移动
TranslateAnimation(float fromXDelta,float toXDelta,float fromYDelta,float toYDelte)
fromXDelta, fromYDelta:起始时候的坐标;
toXDelta, toYDelte:结束时候的坐标;
当然,在代码中做了这些设置后,是需要将动画播放出来的,那么播放动画的函数就为:
startAnimation(Animation animation)
animation为要播放的动画。
同时,需要设定一个播放动画的时间,利用:
setDuration(long duration)
duration为动画显示的时间,以毫秒为单位。
以上介绍的是Android平台下的Tween动画,Android平台下一共提供了两种动画,另外一种就是Frame动画。
Frame动画播放,需要有很多帧的图片。首先还是可以在XML文件中来说明。
framean.xml:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/pic1" android:duration="100" />
<item android:drawable="@drawable/pic2" android:duration="100" />
<item android:drawable="@drawable/pic3" android:duration="100" />
…
…
…
</animation-list>
JAVA代码:
public class GameView extends View
{
// 定义AnimationDrawable动画对象
private AnimationDrawable frameAnimation = null;
Context mContext = null;
public GameView(Context context)
{
super(context);
mContext = context;
//定义一个ImageView用来显示动画
ImageView myImageView = new ImageView(mContext);
// 装载动画布局文件
myImageView.setBackgroundResource(R.anim.framean);
//构建动画
frameAnimation = (AnimationDrawable)myImageView.getBackground();
//设置是否循环
frameAnimation.setOneShot( false );
//设置该类显示的动画
this.setBackgroundDrawable(frameAnimation);
}
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
}
public boolean onKeyUp(int keyCode, KeyEvent event)
{
switch ( keyCode )
{
case KeyEvent.KEYCODE_DPAD_UP:
/* 开始播放动画 */
frameAnimation.start();
break;
}
return true;
}
}
直接用代码,而不用xml描述的方法为:
public class GameView extends View {
// 定义AnimationDrawable动画对象
private AnimationDrawable frameAnimation = null;
Context mContext = null;
//定义一个Drawable对象
Drawable myBitAnimation = null;
public GameView(Context context) {
super(context);
//实例化AnimationDrawable对象
mContext = context;
frameAnimation = new AnimationDrawable();
//装载资源,循环装载需要作为动画的图片
for(int i=1;i<=3;i++)
{
int id = getResources().getIdentifier("pic"+i, "drawable", mContext.getPackageName());
myBitAnimation = getResources().getDrawable(id);
//为动画添加一帧,参数myBitAnimation是该帧的图片,参数100是显示时间,毫秒为单位
frameAnimation.addFrame(myBitAnimation, 100);
}
//设置是否循环,false表示循环
frameAnimation.setOneShot(false);
//设置本类将要显示这个动画
this.setBackgroundDrawable(frameAnimation);
public void onDraw(Canvas canvas){
super.onDraw(canvas);
public boolean onKeyUp(int keyCode, KeyEvent event)
{
switch ( keyCode )
{
case KeyEvent.KEYCODE_DPAD_UP:
//开始播放动画
frameAnimation.start();
break;
}
return true;
}
}
分享到:
相关推荐
本文实例讲述了Android开发之动画实现方法。分享给大家供大家参考。具体分析如下: 动画分为三种: 逐帧动画、布局动画和控件动画 控件动画实现 通过重写Animation的 applyTransformation (float interpolatedTime, ...
这是用androidOpenGL 实现的3D 动画 导入工程即可运行。
在Android开发中,动画是提升用户体验的关键因素之一。"android气泡动画实现"是指在Android应用中创建一种独特的视觉效果,即用户点击屏幕任意位置后,该位置会呈现出气泡爆炸的效果。这种动画通常用于吸引用户的...
在Android开发中,实现丰富的用户交互和视觉效果是提升应用体验的关键之一。本文将深入探讨如何在Android 5.0及以上版本中实现类似微信的点击分享动画,即当用户点击分享按钮时,整个屏幕会充满动画效果。我们将通过...
在Android开发中,动画是提升用户体验的关键元素之一。"Android 抖动动画效果"是一种常见的交互反馈机制,常用于向用户指示输入错误或提示注意某些信息。本篇将深入探讨如何实现这种效果,并讨论其在不同场景中的...
在Android游戏开发中,Tween动画是一种非常常见的动画形式,它主要用于实现对象的平滑移动、缩放、旋转等效果。Tween动画,源自于图形设计领域,意为“时间插值”,在Android中,它是通过`android.animation....
本文将深入探讨如何使用属性动画实现一个酷炫的登录界面,以响应群友分享的登录原型图。 首先,让我们了解什么是属性动画。在Android 3.0及以上版本引入的属性动画系统,不同于早期的视图动画(View Animation),...
在Android应用开发中,为了提升用户体验,经常需要添加各种丰富的动画效果。点赞动画就是其中一种常见且有趣的交互设计,它可以增强用户与应用的互动性,让应用更具吸引力。本篇文章将详细探讨如何在Android平台上...
在Android开发中,实现引人入胜的用户体验是至关重要的,而翻页动画效果就是其中一种可以提升用户交互感的视觉技巧。本实例代码着重展示了如何在Android平台上创建逼真的翻页动画,使得应用程序看起来更加生动有趣。...
在Android开发中,属性动画(Property Animation)是一个强大的工具,用于创建丰富的动态效果。相比于旧式的视图动画(View Animation),属性动画系统允许开发者对对象的属性进行改变,并且这些改变能够在帧之间...
在选择合适的动画实现方式时,开发者应考虑性能、兼容性以及需求的复杂性。 通过阅读“Android 游戏开发之使用AnimationDrable实现Frame动画”相关资料,你可以深入理解`AnimationDrawable`的工作原理,并学习如何...
在Android开发中,ViewFlipper是一个非常有用的布局组件,它允许开发者轻松地在多个视图之间切换,并且可以添加各种动画效果,使用户界面更加生动和互动。本篇将深入探讨如何利用ViewFlipper实现Switch动画特效,...
在Android开发中,动画效果是提升用户体验的关键因素之一。渐变动画是Android动画体系中的一种基本类型,它可以为用户界面带来生动和动态的感觉。本文将深入探讨四种主要的渐变动画:Alpha(透明度)、Scale(缩放)...
在Android开发中,SVG(Scalable Vector Graphics)是一种用于绘制矢量图形的XML格式,它允许开发者创建高质量、可缩放的图像,且在不同分辨率的设备上表现一致。相较于传统的位图图像(如PNG或JPEG),SVG具有更小...
这里我们将深入探讨Android Studio中的动画实现方法,以及如何利用这些技术来优化你的应用。 首先,Android提供了两种主要的动画类型:属性动画(Property Animation)和视图动画(View Animation)。属性动画系统...
在Android开发中,动画(Animation)是提升用户体验和视觉效果的重要工具之一,特别是在创建加载(Loading)效果时。本文将深入探讨如何使用Android Animation来实现动态的Loading效果。 一、Android Animation概述 ...
在Android开发中,创建一个能够显示声波动画的录音应用是一项有趣的挑战,它结合了多媒体处理、用户界面设计以及实时数据可视化。以下是对这个"Android录音的声波动画"项目的关键知识点的详细解释: 1. **Android ...
标签"Android开发-动画效果"进一步确认了这个库专注于Android平台的动画实现。在Android中,动画分为两种主要类型:属性动画(Property Animation)和视图动画(View Animation)。粒子动画库可能是基于属性动画系统...
博文介绍:http://blog.csdn.net/qq_21376985/article/details/52847317 【Android】Android开发之常用的loading等待效果实现,仿微博等待动画。两种实现方式详解