Android补间动画基本使用(位移、缩放、旋转、透明)

本文讲述了Android补间动画基本使用(位移、缩放、旋转、透明)。分享给大家供大家参考,具体如下:

补间动画

原形态变成新形态时为了过渡变形过程,生成的动画就叫补间动画
位移、旋转、缩放、透明

位移:

参数10指的是X的起点坐标,但不是指屏幕x坐标为10的位置,而是imageview的 真实X + 10
参数150指的是X的终点坐标,它的值是imageview的 真实X + 150

//创建为位移动画对象,设置动画的初始位置和结束位置

TranslateAnimation ta = new TranslateAnimation(10, 150, 20, 140);

1.  x坐标的起点位置,如果相对于自己,传0.5f,那么起点坐标就是 真实X + 0.5 * iv宽度;

2.  x坐标的终点位置,如果传入2,那么终点坐标就是 真实X + 2 * iv的宽度;

3.  y坐标的起点位置,如果传入0.5f,那么起点坐标就是 真实Y + 0.5 * iv高度;

4.  y坐标的终点位置,如果传入2,那么终点坐标就是 真实Y + 2 * iv高度。

 TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 2, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 2);

动画播放相关的设置

 //设置动画持续时间
ta.setDuration(2000);
 //动画重复播放的次数
ta.setRepeatCount(1);
 //动画重复播放的模式
ta.setRepeatMode(Animation.REVERSE);
 //动画播放完毕后,组件停留在动画结束的位置上
ta.setFillAfter(true);
 //播放动画
iv.startAnimation(ta);

缩放:

1.参数0.1f表示动画的起始宽度是真实宽度的0.1倍
2.参数4表示动画的结束宽度是真实宽度的4倍
3.缩放的中心点在iv左上角

ScaleAnimation sa = new ScaleAnimation(0.1f, 4, 0.1f, 4);

1.  参数0.1f和4意义与上面相同

2.  改变缩放的中心点:传入的两个0.5f,类型都是相对于自己,这两个参数改变了缩放的中心点

3.  中心点x坐标 = 真实X + 0.5 * iv宽度

4.  中心点Y坐标 = 真实Y + 0.5 * iv高度

 ScaleAnimation sa = new ScaleAnimation(0.1f, 4, 0.1f, 4, Animation.RELATIVETOSELF, 0.5f, Animation.RELATIVETOSELF, 0.5f);

透明:

0为完全透明,1为完全不透明

AlphaAnimation aa = new AlphaAnimation(0, 0.5f);

旋转:

1.  20表示动画开始时的iv的角度

2.  360表示动画结束时iv的角度

3.  默认旋转的圆心在iv左上角

RotateAnimation ra = new RotateAnimation(20, 360);

1.  20,360的意义和上面一样

2.  指定圆心坐标,相对于自己,值传入0.5,那么圆心的x坐标:真实X + iv宽度 * 0.5

3.  圆心的Y坐标:真实Y + iv高度 * 0.5

RotateAnimation ra = new RotateAnimation(20, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

所有动画一起飞

 //创建动画集合
 AnimationSet set = new AnimationSet(false);
 //往集合中添加动画
 set.addAnimation(aa);
 set.addAnimation(sa);
 set.addAnimation(ra);
 iv.startAnimation(set);

效果如图:

布局代码:

 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".MainActivity">
 <ImageView
 android:id="@+id/iv"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:src="@drawable/ic_launcher"
 android:layout_centerVertical="true"
 android:layout_centerHorizontal="true" />
 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:gravity="center_horizontal"
 android:layout_alignParentBottom="true"
 android:orientation="horizontal">
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:onClick="translate"
 android:text="平移" />
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:onClick="scale"
 android:text="缩放" />
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:onClick="alpha"
 android:text="透明" />
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:onClick="rotate"
 android:text="旋转" />
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:onClick="fly"
 android:text="一起飞" />
 </LinearLayout>
</RelativeLayout>

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
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.TranslateAnimation;
import android.widget.ImageView;
 public class MainActivity extends Activity {
 private ImageView iv;
 private TranslateAnimation ta;
 private ScaleAnimation sa;
 private AlphaAnimation aa;
 private RotateAnimation ra;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 iv = (ImageView) findViewById(R.id.iv);
 }
 //平移
 public void translate(View view) {
// ta = new TranslateAnimation(10, 100, 20, 200);
 ta = new TranslateAnimation(Animation.RELATIVE_TO_SELF, -1, Animation.RELATIVE_TO_SELF, 2,
 Animation.RELATIVE_TO_SELF, -0.5f, Animation.RELATIVE_TO_SELF, 1.5f);
 //设置播放时间
 ta.setDuration(2000);
 //设置重复次数
 ta.setRepeatCount(1);
 //动画重复播放的模式
 ta.setRepeatMode(Animation.REVERSE);
 iv.startAnimation(ta);
 }
 //缩放
 public void scale(View view) {
// sa = new ScaleAnimation(2, 4, 2, 4, iv.getWidth() / 2, iv.getHeight() / 2);
 sa = new ScaleAnimation(0.5f, 2, 0.1f, 3, Animation.RELATIVE_TO_SELF, 0.5f,
 Animation.RELATIVE_TO_SELF, 0.5f);
 //设置播放时间
 sa.setDuration(2000);
 //设置重复次数
 sa.setRepeatCount(1);
 //动画重复播放的模式
 sa.setRepeatMode(Animation.ABSOLUTE);
 //动画播放完毕后,组件停留在动画结束的位置上
 sa.setFillAfter(true);
 iv.startAnimation(sa);
 }
 //透明
 public void alpha(View view) {
 aa = new AlphaAnimation(0, 1);
 //设置播放时间
 aa.setDuration(2000);
 //设置重复次数
 aa.setRepeatCount(1);
 //动画重复播放的模式
 aa.setRepeatMode(Animation.REVERSE);
 //动画播放完毕后,组件停留在动画结束的位置上
// aa.setFillAfter(true);
 iv.startAnimation(aa);
 }
 //旋转
 public void rotate(View view) {
 ra = new RotateAnimation(0, 720, Animation.RELATIVE_TO_SELF, 0.5f,
 Animation.RELATIVE_TO_SELF, 0.5f);
 //设置播放时间
 ra.setDuration(2000);
 //设置重复次数
 ra.setRepeatCount(1);
 //动画重复播放的模式
 ra.setRepeatMode(Animation.REVERSE);
 //动画播放完毕后,组件停留在动画结束的位置上
 ra.setFillAfter(true);
 iv.startAnimation(ra);
 }
 //位移、缩放、透明、旋转同时进行
 public void fly(View view) {
 AnimationSet set = new AnimationSet(false);
 set.addAnimation(ta);
 set.addAnimation(sa);
 set.addAnimation(aa);
 set.addAnimation(ra);
 iv.startAnimation(set);
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android编程实现popupwindow弹出后屏幕背景变成半透明效果

    本文实例讲述了Android编程实现popupwindow弹出后屏幕背景变成半透明效果的方法.分享给大家供大家参考,具体如下: android中popupwindow弹出后,屏幕背景变成半透明这个效果很普通.实现的方法也很多.我使用的可能是最简单的一种,就是设置一下getWindows的透明度.不多说上代码 /** * 设置添加屏幕的背景透明度 * @param bgAlpha */ public void backgroundAlpha(float bgAlpha) { WindowManag

  • android 对话框弹出位置和透明度的设置具体实现方法

    例如,屏幕的上方或下方.要实现这种效果.就需要获得对话框的Window对象,获得这个Window对象有多种方法.最容易的就是直接通过AlertDialog类的getWindow方法来获得Window对象. 复制代码 代码如下: AlertDialog dialog = new AlertDialog.Builder(this).setTitle("title")                       .setMessage("message").create(

  • Android应用中设置alpha值来制作透明与渐变效果的实例

    Android系统支持的颜色是由4个值组成的,前3个为RGB,也就是我们常说的三原色(红.绿.蓝),最后一个值是A,也就是Alpha.这4个值都在0~255之间.颜色值越小,表示该颜色越淡,颜色值越大,表示该颜色越深.如果RGB都是0,就是黑色,如果都为255,就是白色.Alpha也需要在0~255之间变化.Alpha的值越小,颜色就越透明,Alpha的值越大,颜色就不透明.当Alpha的值为0时,颜色完全透明,完全透明的位图或者图形从View上消失.当Alpha的值为255时,颜色不透明.从A

  • Android编程实现设置按钮背景透明与半透明及图片背景透明的方法

    本文实例讲述了Android编程实现设置按钮背景透明与半透明及图片背景透明的方法.分享给大家供大家参考,具体如下: Button或者ImageButton的背景设为透明或者半透明: 半透明 复制代码 代码如下: <Button android:background="#e0000000" ... /> 透明 复制代码 代码如下: <Button android:background="#00000000" ... /> 颜色和不透明度 (al

  • Android设置Activity背景为透明style的简单方法(必看)

    方法一: 通过Theme.Translucent @android:style/Theme.Translucent @android:style/Theme.Translucent.NoTitleBar @android:style/Theme.Translucent.NoTitleBar.Fullscreen 只需要在Manifest中需要透明的Activity内设置theme为以上任意一个就可以了 <activity android:name="com.vixtel.simulate.

  • 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 图片缩放与旋转的实现详解

    本文使用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开发之图形图像与动画(二)Animation实现图像的渐变/缩放/位移/旋转

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

  • Android编程中调用Camera时预览画面有旋转问题的解决方法

    本文实例讲述了Android编程中调用Camera时预览画面有旋转问题的解决方法.分享给大家供大家参考,具体如下: 在调用Camera写应用的时候,前后摄像头的情况有时候是不一样的.有时候,明明后摄像头没有问题,而调用到前摄像头时,却倒转了180°,或者其他角度,百思不得其解.在查看了Android源码之后,发现它的解决办法很是好,接下来贴个源码,以备日后查看. public static int getDisplayRotation(Activity activity) { int rotat

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

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

  • android 多点触摸图片缩放的具体实现方法

    布局: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/relativeLayout1"    android:layout_width="fill_parent

  • Android动画之渐变动画(Tween Animation)详解 (渐变、缩放、位移、旋转)

    本文实例讲述了Android动画之渐变动画(Tween Animation).分享给大家供大家参考,具体如下: Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似. 下面就讲一下Tweene Animations. 主要类: Animation                  动画 AlphaAnimation          

  • Android动画之补间动画(Tween Animation)实例详解

    本文实例讲述了Android动画之补间动画.分享给大家供大家参考,具体如下: 前面讲了<Android动画之逐帧动画(Frame Animation)>,今天就来详细讲解一下Tween动画的使用. 同样,在开始实例演示之前,先引用官方文档中的一段话: Tween动画是操作某个控件让其展现出旋转.渐变.移动.缩放的这么一种转换过程,我们称为补间动画.我们可以以XML形式定义动画,也可以编码实现. 如果以XML形式定义一个动画,我们按照动画的定义语法完成XML,并放置于/res/anim目录下,文

随机推荐