Android旋转、平移、缩放和透明度渐变的补间动画

android实现旋转、平移、缩放和透明度渐变的补间动画,具体实现如下:

1.在新建项目的res目录中,创建一个名为anim的目录,并在该目录中创建实现旋转、平移、缩放和透明度渐变的动画资源文件。

透明度渐变的动画资源文件anim_alpha.xml(完全不透明->完全透明->完全不透明)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
 <alpha android:fromAlpha="1"
 android:toAlpha="0"
 android:fillAfter="true"
 android:repeatMode="reverse"
 android:repeatCount="1"
 android:duration="2000"/>
</set> 

旋转的动画资源文件anim_rotate.xml(0度->720度->360度->0度)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
 <rotate
 android:interpolator="@android:anim/accelerate_interpolator"
 android:fromDegrees="0"
 android:toDegrees="720"
 android:pivotX="50%"
 android:pivotY="50%"
 android:duration="2000"/>
 <rotate
 android:interpolator="@android:anim/accelerate_interpolator"
 android:startOffset="2000"
 android:fromDegrees="360"
 android:toDegrees="0"
 android:pivotX="50%"
 android:pivotY="50%"
 android:duration="2000"/>
</set>

缩放动画资源文件anim_scale.xml(放大2倍->收缩回来)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
 <scale android:fromXScale="1"
 android:interpolator="@android:anim/decelerate_interpolator"
 android:fromYScale="1"
 android:toXScale="2.0"
 android:toYScale="2.0"
 android:pivotX="50%"
 android:pivotY="50%"
 android:fillAfter="true"
 android:repeatCount="1"
 android:repeatMode="reverse"
 android:duration="2000"/>
 </set>

平移动画资源文件anim_translate.xml(屏幕左侧->屏幕右侧->屏幕左侧)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
 <translate
 android:fromXDelta="0"
 android:toXDelta="860"
 android:fromYDelta="0"
 android:toYDelta="0"
 android:fillAfter="true"
 android:repeatMode="reverse"
 android:repeatCount="1"
 android:duration="2000"/>
</set>

主界面资源文件:

res/layout/main.xml:
[html] view plain copy
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:id="@+id/linearLayout1"
 android:orientation="vertical"
 >
 <LinearLayout
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:id="@+id/linearLayout2"
 android:orientation="horizontal">
 <Button android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/button1"
 android:text="旋转"/>
 <Button android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/button2"
 android:text="平移"/>
 <Button android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/button3"
 android:text="缩放"/>
 <Button android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/button4"
 android:text="透明度变化"/>
 </LinearLayout>
 <ImageView android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/imageView1"
 android:src="@drawable/img1"/>
</LinearLayout>

效果如图

2.MainActivity:

在onCreat()方法中,首先获取动画资源文件中创建的动画资源,然后获取要应用动画效果的ImageView,再获取“旋转”按钮,并为该按钮添加单击事件监听器,在重写onClik()方法中,播放动画。具体代码如下:

[java] view plain copy
package com.example.test; 

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 MainActivity extends Activity { 

 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main); 

 final Animation rotate=AnimationUtils.loadAnimation(this, R.anim.anim_rotate);//获取旋转动画资源
 final Animation translate=AnimationUtils.loadAnimation(this, R.anim.anim_translate);//获取平移动画资源
 final Animation scale=AnimationUtils.loadAnimation(this, R.anim.anim_scale);//获取缩放动画资源
 final Animation alpha=AnimationUtils.loadAnimation(this, R.anim.anim_alpha);//获取透明度变化动画资源
 //获取要应用动画效果的ImageView
 final ImageView iv=(ImageView)findViewById(R.id.imageView1);
 Button button1=(Button)findViewById(R.id.button1);//获取"旋转"按钮
 button1.setOnClickListener(new OnClickListener() { 

 @Override
 public void onClick(View arg0) {
 //播放旋转动画
 iv.startAnimation(rotate); 

 }
 }); 

 Button button2=(Button)findViewById(R.id.button2);//获取"平移"按钮
 button2.setOnClickListener(new OnClickListener() { 

 @Override
 public void onClick(View arg0) {
 //播放平移动画
 iv.startAnimation(translate); 

 }
 }); 

 Button button3=(Button)findViewById(R.id.button3);//获取"缩放"按钮
 button3.setOnClickListener(new OnClickListener() { 

 @Override
 public void onClick(View arg0) {
 //播放缩放动画
 iv.startAnimation(scale); 

 }
 }); 

 Button button4=(Button)findViewById(R.id.button4);//获取"透明度渐变"按钮
 button4.setOnClickListener(new OnClickListener() { 

 @Override
 public void onClick(View arg0) {
 //播放透明度渐变动画
 iv.startAnimation(alpha);
 }
 });
 }
}

效果如图1、图2、图3、图4:

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Android Tween动画之RotateAnimation实现图片不停旋转效果实例介绍

    主要介绍Android中如何使用rotate实现图片不停旋转的效果.Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生动画效果:第二类是 Frame 动画,即顺序播放事先做好的图像,跟电影类似.本文分析 Tween动画的rotate实现旋转效果. 在新浪微博客户端中各个操作进行中时activity的右上角都会有个不停旋转的图标,类似刷新的效果,给用户以操作中的提示.这种非模态的提示方式推荐使用,那么下面就分享下如何实现这种效果

  • Android开发 旋转屏幕导致Activity重建解决方法

    Android开发文档上专门有一小节解释这个问题.简单来说,Activity是负责与用户交互的最主要机制,任何"设置"(Configuration)的改变都可能对Activity的界面造成影响,这时系统会销毁并重建Activity以便反映新的Configuration. "屏幕方向"(orientation)是一个Configuration,通过查看Configuration类的javadoc可以看到其他Configuration还有哪些:如fontScale.ke

  • Android实现屏幕旋转方法总结

    本文实例总结了Android实现屏幕旋转方法.分享给大家供大家参考.具体如下: 在介绍之前,我们需要先了解默认情况下android屏幕旋转的机制: 默认情况下,当用户手机的重力感应器打开后,旋转屏幕方向,会导致当前activity发生onDestroy-> onCreate,这样会重新构造当前activity和界面布局,如果在Camera界面,则表现为卡顿或者黑屏一段时间.如果是在横竖屏UI设计方面,那么想很好地支持屏幕旋转,则建议在res中建立layout-land和layout-port两个

  • Android 3D旋转动画效果实现分解

    这篇文章主要介绍一下如何实现View的3D旋转效果,实现的主要原理就是围绕Y轴旋转,同时在Z轴方面上有一个深入的缩放. 演示的demo主要有以下几个重点: 1,自定义旋转动画 2,动画做完后,重置ImageView 先看一下程序的运行效果:  1,自定义动画类 这里实现了一个Rotate3dAnimation的类,它扩展了Animation类,重写applyTransformation()方法,提供指定时间的矩阵变换,我们在这个方法里,就可以利用Camera类得得到一个围绕Y轴旋转的matrix

  • Android实现图片反转、翻转、旋转、放大和缩小

    ********************************************************************** android 实现图片的翻转 ********************************************************************** Resources res = this.getContext().getResources(); img = BitmapFactory.decodeResource(res, R.

  • Android 图片缩放与旋转的实现详解

    本文使用Matrix实现Android实现图片缩放与旋转.示例代码如下: 复制代码 代码如下: package com.android.matrix;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.graphics.drawable.BitmapDrawable

  • Android UI之ImageView实现图片旋转和缩放

    这一篇,给大家介绍一下ImageView控件的使用,ImageView主要是用来显示图片,可以对图片进行放大.缩小.旋转的功能. android:sacleType属性指定ImageVIew控件显示图片的方式,例如:center表示图像以不缩放的方式显示在ImageView控件的中心,如果设置为fitCenter,表示图像按照比例缩放至合适的位置,并在ImageView控件的中心. 首先我们开发一个简单的案例,实现图片的放大缩小和旋转: 先看看实现的效果: 缩放截图1: 缩放截图2: 旋转截图1

  • Android中利用matrix 控制图片的旋转、缩放、移动

    本文主要讲解利用android中Matrix控制图形的旋转缩放移动,具体参见一下代码: 复制代码 代码如下: /**  * 使用矩阵控制图片移动.缩放.旋转  */  public class CommonImgEffectView extends View { private Context context ;      private Bitmap mainBmp , controlBmp ;      private int mainBmpWidth , mainBmpHeight , c

  • 完美解决Android三星手机从图库选择照片旋转问题

    最近解决了一个令我头疼好久的问题,就是三星手机拍照图片旋转的问题,项目中有上传图片的功能,那么涉及到拍照,从相册中选择图片,别的手机都ok没有问题,唯独三星的手机拍照之后,你会很清楚的看到会把照片旋转一下,然后你根据路径找到的图片就是已经被旋转的了,解决办法终于被我找到了.我们可以根据图片的路径读取照片exif(Exchangeable Image File 可交换图像文件)信息中的旋转角度,至于这个EXIF可以看一下大牛的文章 Android 下的EXIF 根据调试,可以清楚的发现三星手机拍照

  • Android开发之图形图像与动画(二)Animation实现图像的渐变/缩放/位移/旋转

    Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 下面就讲一下Tweene Animations. 主要类: Animation 动画 AlphaAnimation 渐变透明度 RotateAnimation 画面旋转 ScaleAnimation 渐变尺寸缩放 TranslateAnimation 位置移动 AnimationSet 动画集 一.AlphaAnimation 其中AlphaAnimatio

随机推荐