简单的animation动画效果的实现过程
来源:互联网 发布:怎么屏蔽网络基站定位 编辑:程序博客网 时间:2024/05/16 10:15
Animations的分类:
1.TweenedAnimation :提供旋转、移动、伸展、和淡出的效果
Alpha:淡入淡出效果 Scale:缩放效果
Rotate:旋转效果 Translate: 移动效果
2.Frame-by-Frame Animation :创建Drawable的序列,可以按照指定的时间间隙一个个显示(1s中播放24张以上的图片就可以变成视频了)也可以做成动态广告的形式
3.res文件加下加入XMl文件,可以使用XML文件实现控制动画,XML文件中添加Set标签,标签中加入rotate、alpha、scale、或者translate 代码中实现AnimationUtil装载xml
文件并生成,Animation对象需要注意的是
<!--pivotX pivotY旋转时候 的坐标绝对位置的
50这种方法使用的是绝对位置50%相对于空间本身定位
"50%p"的意思是相对于空控件的父控件的定位 -->
4.接着咱们看看代码的实现过程
首先看看两种方法共同的布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/Alpha" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="淡入淡出" /> <Button android:id="@+id/scale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="缩放效果" /> <Button android:id="@+id/rotate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="旋转效果" /> <Button android:id="@+id/translate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="移动效果" /> </LinearLayout> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/a" /> </LinearLayout>5.看看第一种方法的活动实现的过程
package com.wang;import com.wang.R.id;import android.R.anim;import android.R.integer;import android.app.Activity;import android.os.Bundle;import android.provider.ContactsContract.CommonDataKinds.Im;import android.view.View;import android.view.View.OnClickListener;import android.view.animation.AccelerateDecelerateInterpolator;import android.view.animation.AccelerateInterpolator;import android.view.animation.AlphaAnimation;import android.view.animation.Animation;import android.view.animation.AnimationSet;import android.view.animation.RotateAnimation;import android.view.animation.ScaleAnimation;import android.view.animation.Transformation;import android.view.animation.TranslateAnimation;import android.widget.Button;import android.widget.ImageView;public class AnimationTestActivity extends Activity {private ImageView image = null;private Button Alphabutton = null;private Button scalebutton = null;private Button rotatebutton = null;private Button translatebutton = null;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);image = (ImageView) findViewById(R.id.image);Alphabutton = (Button) findViewById(R.id.Alpha);scalebutton = (Button) findViewById(R.id.scale);rotatebutton = (Button) findViewById(R.id.rotate);translatebutton = (Button) findViewById(R.id.translate);// 淡入淡出按钮的监听时间Alphabutton.setOnClickListener(new OnClickListener() {public void onClick(View v) {// 创建一个AnimationSet对象AnimationSet animationSet = new AnimationSet(true);// j加速播放animationSet.setInterpolator(new AccelerateInterpolator());// //创建一个AnimationSet对象淡出旋转二合一AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);RotateAnimation rotateAnimation = new RotateAnimation(0, 360,Animation.RELATIVE_TO_PARENT, 1f,// X轴Animation.RELATIVE_TO_PARENT, 0f);// y轴// 将alphaAnimation对象添加到animationSet中animationSet.addAnimation(alphaAnimation);animationSet.addAnimation(rotateAnimation);// 显示的时间为1salphaAnimation.setDuration(3000);// 开始执行动画image.startAnimation(animationSet);// 设置重复的次数animationSet.setRepeatCount(4);}});// 缩放按钮的监听事件scalebutton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {AnimationSet animationSet = new AnimationSet(true);// 从1缩放的0.1ScaleAnimation scaleAnimation = new ScaleAnimation(1, 0.1f, 1,0.1f, Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);animationSet.addAnimation(scaleAnimation);// 执行前等待的时间animationSet.setStartOffset(1000);// dd动画执行之前和之后的状态animationSet.setFillAfter(true);animationSet.setFillBefore(false);animationSet.setDuration(5000);image.startAnimation(animationSet);}});// 旋转按钮的单击事件rotatebutton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {AnimationSet animationSet = new AnimationSet(true);// 创建对象 参数 从0度转到360度/********* **一个动画控制旋转的一个对象。这个旋转发生int xy平面。 您可以指定点使用的中心旋转,在那里(0,0)是左上角点。 * 如果未指定,(0,0)是默认的旋转点 **/RotateAnimation rotateAnimation = new RotateAnimation(0, 360,Animation.RELATIVE_TO_PARENT, 1f,// X轴Animation.RELATIVE_TO_PARENT, 0f);// y轴rotateAnimation.setDuration(5000);animationSet.addAnimation(rotateAnimation);image.startAnimation(animationSet);}});// 移动按钮的点击事件translatebutton.setOnClickListener(new OnClickListener() {public void onClick(View v) {AnimationSet animationSet = new AnimationSet(true);TranslateAnimation translatebutton = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f,// //X轴Animation.RELATIVE_TO_SELF, 0.5f,// y轴Animation.RELATIVE_TO_SELF, 0f,// X轴Animation.RELATIVE_TO_SELF, 1.0f);// y轴translatebutton.setDuration(5000);}});}}6.第二种方式实现的时候要在res的文件之下在建一个文件夹anim。文件夹里面包含的四个文件如下
alpha.xml 淡入淡出效果的文件
<?xml version="1.0" encoding="UTF-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" > <alpha android:duration="500" android:fromAlpha="1.0" android:startOffset="500" android:toAlpha="0.0" /></set>
rotate.xml 旋转效果的文件
<?xml version="1.0" encoding="UTF-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" > <rotate android:fromDegrees="0" android:toDegrees="350" android:pivotX="50%p" android:pivotY="50%p" android:duration="3000" /><!--pivotX pivotY旋转时候 的坐标绝对位置的50这种方法使用的是绝对位置50%相对于空间本身定位"50%p"的意思是相对于空控件的父控件的定位 --></set>
sacle.xml 缩放效果的文件
<?xml version="1.0" encoding="UTF-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" > <scale android:fromXScale="1.0" android:toXScale="0.0" android:fromYScale="1.0" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:duration="3000"/></set>
translate.xml 移动效果的文件
<?xml version="1.0" encoding="UTF-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" > <translate android:fromXDelta="50%" android:toXDelta="100%" android:fromYDelta="0%" android:toYDelta="100%" android:duration="3000" /></set>
7.接着看看第二种方法的Activity的实现过程
package com.wang;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.Button;import android.widget.ImageView;public class AnimationXMLActivity extends Activity {private ImageView image;private Button alphabutton;private Button rotatebutton;private Button saclebutton;private Button translatebutton;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);image = (ImageView) findViewById(R.id.image);alphabutton = (Button) findViewById(R.id.alpha);rotatebutton = (Button) findViewById(R.id.roate);saclebutton = (Button) findViewById(R.id.scale);translatebutton = (Button) findViewById(R.id.translate);// 淡入淡出按钮的监听事件alphabutton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// s使用AnimationUtils装载动画设置文件Animation animation = AnimationUtils.loadAnimation(AnimationXMLActivity.this, R.anim.alpha);// 启动image.startAnimation(animation);}});// 旋转效果的监听事件rotatebutton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// s使用AnimationUtils装载动画设置文件Animation animation = AnimationUtils.loadAnimation(AnimationXMLActivity.this, R.anim.rotate);image.startAnimation(animation);// TODO Auto-generated method// stub}});// 缩放组件的效果监听saclebutton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// s使用AnimationUtils装载动画设置文件Animation animation = AnimationUtils.loadAnimation(AnimationXMLActivity.this, R.anim.sacle);image.startAnimation(animation); // TODO Auto-generated method// stub}});// 移动效果的监听事件translatebutton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub// s使用AnimationUtils装载动画设置文件Animation animation = AnimationUtils.loadAnimation(AnimationXMLActivity.this, R.anim.translate);image.startAnimation(animation);}});}}
8.殊路同归,这两种方法实现的功能都差不多,第一张图片是原图,第二张图片是淡入淡出的效果,第三张是旋转的效果图,第四章是缩放的效果图,第五章是移动的效果图
由于是动画效果,所以只能截取图片的一部分
,运行结果如下
- 简单的animation动画效果的实现过程
- Animation动画效果的实现
- Animation动画效果的实现
- Animation动画效果的实现
- Animation动画效果的实现
- Animation动画效果的实现
- Animation动画效果的实现
- Android Animation动画效果的实现
- Animation动画效果的实现(一)
- Animation动画效果的实现(二)
- Animation动画效果的开发
- android的动画效果Animation
- css3的简单动画效果(animation和transition)
- Animation动画效果的实现(三)----Animation-list实现逐帧动画
- android 视图动画的使用,Animation重写 实现旋转效果
- Animation动画效果的实现(四)------总结
- android animation动画效果的两种实现方式
- 动画Animation两种实现方式的不同效果
- svn获取spring源码方法
- IE下用ReportView显示RDLC报表,提示“您的浏览器不支持脚本或已配置为不允许使用脚本”
- qt运用phonon播放音乐出现问题
- HQL
- Oracle存储过程返回记录集
- 简单的animation动画效果的实现过程
- 查看端口号是否被占用(情况 命令) 详解
- JAVA_POI处理Excel
- 2012—07—11
- linux—select详解
- 自定义UITableViewCell
- JS创建对象的几种方法
- PHP extract()函数
- x86,x64,Any CPU