- 浏览: 27938 次
- 性别:
- 来自: 北京
最新评论
-
xiaojianhx:
Environment 是哪个包里面的?我开发4.0,用不了这 ...
Android 检测SD卡应用 -
qianlei541:
不错不错不错
android软键盘enter键的替换与事件监听 -
ihopethatwell:
到处都是转载的,楼主,你这个图片这个调用能贴上?
android yuv摄像 -
mikite:
mark,看看
Android中的动画研究 -
anyang763:
多谢lz分享,学习了!
android系统调用
Android中的动画研究
本文主要研究Android中的三种动画,第一种是单个View的各种动画效果,第二种是两个Active切换时的动画效果,第三种是类似于Gif的Frame By Frame动画效果,其中View的各种动画包括在xml文件中定义和代码中定义两种方式。
一、 动画基本类型:
如下表所示,Android的动画由四种类型组成,即可在xml中定义,也可在代码中定义,如下所示:
|
XML |
CODE |
渐变透明度动画效果 |
alpha |
AlphaAnimation |
渐变尺寸伸缩动画效果 |
scale |
ScaleAnimation |
画面转换位置移动动画效果 |
translate |
TranslateAnimation |
画面转移旋转动画效果 |
rotate |
RotateAnimation |
二、 如何在XML文件中定义动画
1. alpha
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 表示透明度从0.1到1.0,时长为3000ms。-->
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="3000"
/>
</set>
2. Scale
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator=
"@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0"
android:toXScale="1.4"
android:fromYScale="0.0"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="700" />
</set>
<!-- 尺寸伸缩动画效果 scale
属性:interpolator 指定一个动画的插入器,共三种:
accelerate_decelerate_interpolator 加速-减速 动画插入器
accelerate_interpolator 加速-动画插入器
decelerate_interpolator 减速- 动画插入器
其他的属于特定的动画效果
浮点型值:
fromXScale 属性为动画起始时 X坐标上的伸缩尺寸
toXScale 属性为动画结束时 X坐标上的伸缩尺寸
fromYScale 属性为动画起始时Y坐标上的伸缩尺寸
toYScale 属性为动画结束时Y坐标上的伸缩尺寸
说明:
以上四种属性值
0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大
pivotX 属性为动画相对于物件的X坐标的开始位置
pivotY 属性为动画相对于物件的Y坐标的开始位置
说明:
以上两个属性值 从0%-100%中取值
50%为物件的X或Y方向坐标上的中点位置
长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
布尔型值:
fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用
-->
3. Translate
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="30"
android:toXDelta="-80"
android:fromYDelta="30"
android:toYDelta="300"
android:duration="2000"
/>
<!-- translate 位置转移动画效果
整型值:
fromXDelta 属性为动画起始时 X坐标上的位置
toXDelta 属性为动画结束时 X坐标上的位置
fromYDelta 属性为动画起始时 Y坐标上的位置
toYDelta 属性为动画结束时 Y坐标上的位置
注意:
没有指定fromXType toXType fromYType toYType 时候,
默认是以自己为相对参照物
长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
-->
</set>
4. Rotate
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+350"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000" />
<!-- rotate 旋转动画效果
属性:interpolator 指定一个动画的插入器,共三种:
accelerate_decelerate_interpolator 加速-减速 动画插入器
accelerate_interpolator 加速-动画插入器
decelerate_interpolator 减速- 动画插入器
其他的属于特定的动画效果
浮点数型值:
fromDegrees 属性为动画起始时物件的角度
toDegrees 属性为动画结束时物件旋转的角度 可以大于360度
说明:
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(负数from——to正数:顺时针旋转)
(负数from——to负数:逆时针旋转)
(正数from——to正数:顺时针旋转)
(正数from——to负数:逆时针旋转)
pivotX 属性为动画相对于物件的X坐标的开始位置
pivotY 属性为动画相对于物件的Y坐标的开始位置
说明: 以上两个属性值 从0%-100%中取值
50%为物件的X或Y方向坐标上的中点位置
长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
-->
</set>
三、 如何使用XML中的动画效果
public static Animation loadAnimation (Context context, int id)
//第一个参数Context为程序的上下文
//第二个参数id为动画XML文件的引用
//例子:
myAnimation= AnimationUtils.loadAnimation(this,R.anim.my_action);
//使用AnimationUtils类的静态方法loadAnimation()来加载XML中的动画XML文件
findViewById(R.id.pw).startAnimation(myAnimation);//用此方法来启动动画
四、 如何在Java代码中定义动画
1. 代码:
//在代码中定义 动画实例对象
private Animation myAnimation_Alpha;
private Animation myAnimation_Scale;
private Animation myAnimation_Translate;
private Animation myAnimation_Rotate;
//根据各自的构造方法来初始化一个实例对象
myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);
myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
myAnimation_Translate=new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f);
myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f,
Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
2. 分析
1.1 AlphaAnimation
第一步:AlphaAnimation类对象定义
private AlphaAnimation myAnimation_Alpha;
第二步:AlphaAnimation类对象构造
AlphaAnimation(float fromAlpha, float toAlpha)
//第一个参数fromAlpha为 动画开始时候透明度
//第二个参数toAlpha为 动画结束时候透明度
myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);
//说明:
// 0.0表示完全透明
// 1.0表示完全不透明
第三步:设置动画持续时间
myAnimation_Alpha.setDuration(5000);
//设置时间持续时间为 5000毫秒
1.2 ScaleAnimation
第一步:ScaleAnimation类对象定义
private AlphaAnimation myAnimation_Scale;
第二步:ScaleAnimation类对象构造
ScaleAnimation(float fromX, float toX, float fromY, float toY,
int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
//第一个参数fromX为动画起始时 X坐标上的伸缩尺寸
//第二个参数toX为动画结束时 X坐标上的伸缩尺寸
//第三个参数fromY为动画起始时Y坐标上的伸缩尺寸
//第四个参数toY为动画结束时Y坐标上的伸缩尺寸
/*说明:
以上四种属性值
0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大
*/
//第五个参数pivotXType为动画在X轴相对于物件位置类型
//第六个参数pivotXValue为动画相对于物件的X坐标的开始位置
//第七个参数pivotXType为动画在Y轴相对于物件位置类型
//第八个参数pivotYValue为动画相对于物件的Y坐标的开始位置
myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
第三步:设置动画持续时间
myAnimation_Scale.setDuration(700);
//设置时间持续时间为 700毫秒
1.3 TranslateAnimation
第一步:TranslateAnimation类对象定义
private AlphaAnimation myAnimation_Translate;
第二步:TranslateAnimation类对象构造
TranslateAnimation(float fromXDelta, float toXDelta,
float fromYDelta, float toYDelta)
//第一个参数fromXDelta为动画起始时 X坐标上的移动位置
//第二个参数toXDelta为动画结束时 X坐标上的移动位置
//第三个参数fromYDelta为动画起始时Y坐标上的移动位置
//第四个参数toYDelta为动画结束时Y坐标上的移动位置
第三步:设置动画持续时间 m
myAnimation_Translate.setDuration(2000);
1.4 RotateAnimation
第一步:RotateAnimation类对象定义
private AlphaAnimation myAnimation_Rotate;
第二步:RotateAnimation类对象构造
RotateAnimation(float fromDegrees, float toDegrees,
int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
//第一个参数fromDegrees为动画起始时的旋转角度
//第二个参数toDegrees为动画旋转到的角度
//第三个参数pivotXType为动画在X轴相对于物件位置类型
//第四个参数pivotXValue为动画相对于物件的X坐标的开始位置
//第五个参数pivotXType为动画在Y轴相对于物件位置类型
//第六个参数pivotYValue为动画相对于物件的Y坐标的开始位置
myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f,
Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
第三步:设置动画持续时间
myAnimation_Rotate.setDuration(3000);
五、 如何使用Java代码中的动画效果
使用从View父类继承过来的方法startAnimation()来为View或是子类View等等添加一个动画效果
public void startAnimation (Animation animation)
六、 转场动画
在StartActivity后即调用overridePendingTransition(int enterAnim, int exitAnim)
//in
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="500"/>
</set>
//out
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration="500"/>
</set>
七、 Frame By Frame
Frame by frame 指将一幅幅图片按序播放,效果像gif动画:
第一步:将用到的图片资源加到工程。
第二步:在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/rkof" android:duration="200" />
<item android:drawable="@drawable/hkof" android:duration="200" />
<item android:drawable="@drawable/gkof" android:duration="200" />
<item android:drawable="@drawable/fkof" android:duration="200" />
<item android:drawable="@drawable/ekof" android:duration="200" />
<item android:drawable="@drawable/dkof" android:duration="200" />
<item android:drawable="@drawable/ckof" android:duration="200" />
<item android:drawable="@drawable/bkof" android:duration="200" />
<item android:drawable="@drawable/akof" android:duration="200" />
</animation-list>
<!-- android:oneshot属性为true,它将会在最后一帧停下来,如果设置
为false这个动画将循环播放 -->
第三步:定义AnimationDrawable对像
ImageView myImage = (ImageView) findViewById(R.id.rocket_image);
myImage.setBackgroundResource(R.anim.myframeanimation);
AnimationDrawable frameAnimation=(AnimationDrawable) myImage.getBackground();
第四步:播放
frameAnimation.start()
ApiDemo中的动画研究:
Android 系统所支持的动画特效
1. 平滑: Graphics/AnimateDrawables
2. 淡入淡出 App/Activity/Animation
3. 放大缩小 App/Activity/Animation && Graphics/ScaleToFit
4. 翻转 Views/Animation/3D Transition && Graphics/PolyToPoly
5. 透明 App/Activity/Translucent
6. 模糊 App/Activity/Translucent Blur
7. Overlay Graphics/SurfaceView OverLay
8. 反弹效果 Views/Animation/Shake
9. 文字效果 Views/Animation/Push && Views/Animation/Interpolators
ReadCode
1. FingerPaint
1.1. path用于存储一次绘画,mouse down to mouse up
1.2. Bitmap用于存储所有绘画,activity onCreate to OnDestory.
2. AnimateDrawables
1.1. 在View中创建变量AnimateDrawable
1.2. Drawable 从资源中获取图片。
1.3. Animation 定义动画
1.4. 开始动画
3. Animation
1.1. overridePendingTransition(R.anim.fade, R.anim.hold);
1.2. overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);
4. ScaleToFit
5. PolyToPoly
1.1. 画线 drawLine
1.2. 画矩形 drawRect
1.3. 设置矩阵 关键,具体算法不知。
6. Translucent
1.1. setContentView(R.layout.translucent_background);
7. Translucent Blur
1.1. getWindow().setFlags
1.2. WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
1.3. WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
8. SufaceView Overlay
1.1 CubeRenderer
1.2 GLSurfaceView
9. Shake
10. Interpolators
一、2D
1. Bitmap with alpha ort Alpha bitblt。
2. 平滑移动效果。
3. Arc Fills
4. BitmapDecode 旗帜飘动特效。
5. Mesh 网格特效。
6. Bitmap Pixels 渐变填充。
7. Camera Preview
8. Clipping
9. Color Filters
10. Color Matrix
11. Compass
12. Create Bitmap
13. Layers
14. Measure Text
15. Path Effect
16. Pattern
17. Poly to Poly
18. Regions
19. RoundRects
20. ScaleToFit
21. SurfaceView Overlay
22. Sweeps
23. Vertices
二、3D
1. Compressed Texture
2. Cube Map
3. GlSurfaceView
4. Kube
5. Matrix Palette Skinning
6. Sprite Text
7. Textured Triangle
8. Touch Rotate
9. Translucent GLSurfaceView
发表评论
-
android 的 Linkify
2011-12-29 09:03 1166Linkify是一个辅助类,通过RegEx样式匹配,自动地在T ... -
Android教程之AndroidManifest.xml文件详介绍及解析
2011-12-21 16:58 0一、关于AndroidManifest.xml Android ... -
obj文件应用
2011-12-20 09:27 0OBJ文件格式(转http://www.ategpu.com/ ... -
Android 应用程序多Activity跳转之后退出整个程序
2011-12-13 11:48 860http://txlong-onz.iteye.com/blo ... -
Android 检测SD卡应用
2011-12-13 10:21 7032if (Environment.getExternalStor ... -
android yuv摄像
2011-12-13 09:26 2869http://eyehere.net/2011/android ... -
Android拍摄视频流的格式转换(YUV --- RGB)
2011-12-13 08:56 1815Android允许用户实时捕获摄像头的视频流,这在利用摄像头的 ... -
android软键盘enter键的替换与事件监听
2011-12-12 09:03 3473软件盘的界面替换只有一个属性android:imeOption ... -
android listView
2011-12-06 09:11 0一、 1 listview中在设置了背景之后,会发生listv ... -
Android 即时通讯 XMPP
2011-12-05 09:47 0http://www.cnblogs.com/charley_ ... -
搭建XMPP协议,实现自主推送消息到手机
2011-12-05 09:46 0http://www.devdiv.com/article-2 ... -
xmpp协议实现消息推送
2011-12-05 09:43 0http://www.cnblogs.com/luxiaofe ... -
Android推送方式比较
2011-12-05 09:32 0http://blog.csdn.net/xyz_lmn/ar ... -
Android教程之AndroidManifest.xml文件详介绍及解析
2011-12-02 09:25 0Android教程之AndroidManifest.xml文 ... -
Android用GSon处理Json数据
2011-12-02 08:57 4http://www.cnblogs.com/VinC/arc ... -
Android访问WCF服务---服务端开发
2011-12-02 08:45 0Android访问WCF服务(上篇)-服务端开发 本章目的: ... -
高效率下载图片——防止内存溢出
2011-12-01 12:06 0在应用中经常需要下载很多的图片,因此,写好图片下载部分的代码非 ... -
ScrollListener
2011-12-01 12:00 0new OnScrollListener() { bo ... -
Android虚拟机(DVM)内存分配——内存溢出问题
2011-12-01 11:57 0大家都知道Android的上层应用是基于 Dalvik Vir ... -
bitmap溢出处理
2011-12-01 11:40 0当从SD卡中获取图片时,如果图片太大,加载会出现溢出异常。因此 ...
相关推荐
首先,开机动画的地址:system\media\...官方最原始的开机动画在system\ framework\framework-res.apk\assets\images里面,里面主要是2张图片,高手可以去研究一下,说不定通过这个文件可以用代码实现动画的过程。
android 过渡动画研究.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android_动画效果_--Animation_动画专题研究
Android 电视关闭的动画效果,需要学习的可以下载研究,效果很酷
Android中的动画研究 值得看看 Android动画详细探究+WidgetDemo
鄙人,反复研究qq动画,虽未能有所成,但是一些基本的也都研究明白了,比如手机QQ里的搜索框点击效果,我反复观察,发现居然是一个动画效果。这里是由本人亲手写的,代码简单明了,在模拟器上一跑便知。
属性动画帧动画补间动画合集的一个小demo,想对动画有所研究的朋友可以下载下来看下
本项目是一个可以输入自定义文字和设定文字大小的烟花动画效果项目源码,打开项目以后在主界面长按4秒就会出现设置界面,可以自定义烟花绽放后出现的文字,项目用到了大量的绘图和算法,感兴趣的朋友可以下载研究...
一个Android布局的例子:向大家演示一上结基本的UI特效技巧,比如自定义的圆环ImageView、ViewPager的动画切换、流式布局等,实现的功能主要是:1 、自定义的带圆环的ImageView; 2、ViewPager的切换动画; 3、流式...
Android应用源码之Android Layout UI 首页加载过渡动画,星期变化动画.zip项目安卓应用源码下载Android应用源码之Android Layout UI 首页加载过渡动画,星期变化动画.zip项目安卓应用源码下载 1.适合学生毕业设计...
Android动画效果 translate、scale、alpha、rotate 切换Activity动画 控件位置调整.zipAndroid动画效果 translate、scale、alpha、rotate 切换Activity动画 控件位置调整.zip 1.适合学生毕业设计研究参考 2.适合个人...
android应用源码动画效果 translate、scale、alpha、rotate 切换Activity动画.zip项目安android应用源码动画效果 translate、scale、alpha、rotate 切换Activity动画.zip项目安 1.适合学生毕业设计研究参考 2.适合...
Android 动画顺序播放源码.zip项目安卓应用源码下载Android 动画顺序播放源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
最近研究了一下属性动画,觉得非常有用,尤其是ValueAnimator,在自定义控件时要用到,所以我写了一个例子上传到这里和大家交流学习
Android 逐帧动画源码.zip项目安卓应用源码下载Android 逐帧动画源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
Android 显示GIF动画源码.zip项目安卓应用源码下载Android 显示GIF动画源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
Android 简单2D动画源码.zip项目安卓应用源码下载Android 简单2D动画源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
Android 等待提示动画源码.zip项目安卓应用源码下载Android 等待提示动画源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
项目需要研究了一下微信红包动画,即硬币转动的效果,原理其实就是三张不同角度的图片利用AnimationDrawable帧动画进行播放,在参考了案例之后,给自己记录一下完成的过程。 1,在XML文件中定义动画: 步骤如下: ①...