`
dcj3sjt126com
  • 浏览: 1876864 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android动画效果学习

 
阅读更多

1、透明动画效果

方法一:代码实现

	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
		{
			View rootView = inflater.inflate(R.layout.fragment_main, container, false);
			
			rootView.findViewById(R.id.btnAnimMe).setOnClickListener(new View.OnClickListener()
			{
				
				@Override
				public void onClick(View v)
				{
					AlphaAnimation aa = new AlphaAnimation(0, 1);
					aa.setDuration(1000);
					v.startAnimation(aa);
									}
			});
			
			return rootView;
		}

 方法二,用配置文件的形式

第一步,新建一个aa.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha
    android:fromAlpha="0"
    android:toAlpha="1"
    android:duration="1000"
    xmlns:android="http://schemas.android.com/apk/res/android">
    

</alpha>

 第二步,代码调用 

		public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
		{
			View rootView = inflater.inflate(R.layout.fragment_main, container, false);
			
			rootView.findViewById(R.id.btnAnimMe).setOnClickListener(new View.OnClickListener()
			{
				
				@Override
				public void onClick(View v)
				{
					v.startAnimation(AnimationUtils.loadAnimation(getActivity(), R.anim.aa));
				}
			});
			
			return rootView;
		

 

 

2、旋转动画效果

第一种实现方式:代码

	private RotateAnimation ra;

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		ra = new RotateAnimation(0, 360, 100, 50);
		ra = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
		ra.setDuration(1000);
		
		
		findViewById(R.id.btnRotateme).setOnClickListener(new View.OnClickListener()
		{
			
			@Override
			public void onClick(View v)
			{
				v.startAnimation(ra);
			}
		});
	

 第二种实现方式:配置文件

<?xml version="1.0" encoding="utf-8"?>
<rotate
    android:fromDegrees="0"
    android:toDegrees="360"
    android:duration="1000"
    android:pivotX="50%"  
    android:pivotY="50%"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- pivotY写数值当像素解析,写百分比,就是相对自身的百分比 -->
    

</rotate>

 代码部分:

protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		findViewById(R.id.btnRotateme).setOnClickListener(new View.OnClickListener()
		{
			
			@Override
			public void onClick(View v)
			{
				v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.ra));
			}
		});
	}

 

3、移动动画效果

第一种:代码实现方式

private TranslateAnimation ta;
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		ta = new TranslateAnimation(0, 200, 0, 200);//是增量的概念, 相对自身当前来说,向右移动200像素,向下移动200像素
		ta.setDuration(1000);
		
		findViewById(R.id.btnTranslateMe).setOnClickListener(new View.OnClickListener()
		{
			
			@Override
			public void onClick(View v)
			{
				v.startAnimation(ta);
			}
		});
	}

 第二种配置文件方式

<?xml version="1.0" encoding="utf-8"?>
<translate
    android:fromXDelta="0"
    android:toXDelta="200"
    android:fromYDelta="0"
    android:toYDelta="200"
    android:duration="1000"
    xmlns:android="http://schemas.android.com/apk/res/android">
    

</translate>

 

protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		findViewById(R.id.btnTranslateMe).setOnClickListener(new View.OnClickListener()
		{
			
			@Override
			public void onClick(View v)
			{
				v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.ta));
			}
		});
	}

 

 

4、缩放动画效果

第一种代码实现:

private ScaleAnimation sa;
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
//		sa = new ScaleAnimation(0, 1, 0, 1); //
//		sa = new ScaleAnimation(0, 1, 0, 1, 100, 50);
		sa = new ScaleAnimation(0, 1, 0, 1, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);//相对自己的中心点来绽放
		sa.setDuration(1000);
		findViewById(R.id.btnScaleMe).setOnClickListener(new View.OnClickListener()
		{
			
			@Override
			public void onClick(View v)
			{
				v.startAnimation(sa);
			}
		});
	}

 第二种配置文件:

<?xml version="1.0" encoding="utf-8"?>
<scale
    android:fromXScale="0"
    android:toXScale="1"
    android:fromYScale="0"
    android:toYScale="1"
    android:duration="1000"
    android:pivotX="50%"
    android:pivotY="50%"
    xmlns:android="http://schemas.android.com/apk/res/android">
    

</scale>

 代码部分:

	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		findViewById(R.id.btnScaleMe).setOnClickListener(new View.OnClickListener()
		{
			
			@Override
			public void onClick(View v)
			{
				v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.sa));;
			}
		});
	

 5、混合动画效果

第一种代码实现

private AnimationSet as;
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		as = new AnimationSet(true);//是否共用动画补间,动画执行的过程,匀速,加速,减速执行,这个为动画补间
		as.setDuration(1000);
		
		AlphaAnimation aa = new AlphaAnimation(0, 1);
		aa.setDuration(1000);
		as.addAnimation(aa);
		
		TranslateAnimation ta = new TranslateAnimation(200, 0, 200, 0);
		ta.setDuration(1000);
		as.addAnimation(ta);
		
		findViewById(R.id.btnAnimMe).setOnClickListener(new View.OnClickListener()
		{
			
			@Override
			public void onClick(View v)
			{
				v.startAnimation(as);
			}
		});
	}

 

第二种配置文件方式:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:shareInterpolator="true" >

    <alpha
        android:fromAlpha="0"
        android:toAlpha="1" />

    <translate
        android:fromXDelta="200"
        android:fromYDelta="200"
        android:toXDelta="0"
        android:toYDelta="0" />

</set>

 代码部分:

protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		findViewById(R.id.btnAnimMe).setOnClickListener(new View.OnClickListener()
		{
			
			@Override
			public void onClick(View v)
			{
				v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.anim));;
			}
		});
	}

 

6、动画侦听

protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		findViewById(R.id.btnAnimMe).setOnClickListener(new View.OnClickListener()
		{
			
			@Override
			public void onClick(View v)
			{
				Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.anim);
				animation.setAnimationListener(new Animation.AnimationListener()
				{
					
					@Override
					public void onAnimationStart(Animation animation)
					{
						Toast.makeText(MainActivity.this, "Animation start", Toast.LENGTH_SHORT).show();
					}
					
					@Override
					public void onAnimationRepeat(Animation animation)
					{
						Toast.makeText(MainActivity.this, "Animation repeat", Toast.LENGTH_SHORT).show();
					}
					
					@Override
					public void onAnimationEnd(Animation animation)
					{
						Toast.makeText(MainActivity.this, "Animation End", Toast.LENGTH_SHORT).show();
					}
				});
				v.startAnimation(animation);;
			}
		});
	}

 

7、自定义动画效果,比如单击按钮后,让按钮摇摆

第一步自定义一个类,继承自Animation

package com.michael.lcustomanimation;

import android.view.animation.Animation;
import android.view.animation.Transformation;

public class CustomAnim extends Animation
{
	
	@Override
	public void initialize(int width, int height, int parentWidth, int parentHeight)
	{
		System.out.println("init");
		super.initialize(width, height, parentWidth, parentHeight);
	}
	
	@Override
	protected void applyTransformation(float interpolatedTime, Transformation t)
	{
		//interpolatedTime 从0-1  
		System.out.println(interpolatedTime);

//		t.setAlpha(interpolatedTime);
//		t.getMatrix().setTranslate(200, 200);//这个会直接跳过去,不是我们想要的移动的效果,分别剩上一个补间就可以了,我们可以随意自定义动画 
//		t.getMatrix().setTranslate(200*interpolatedTime, 200*interpolatedTime);
		
		//比如在登录窗口,密码错了,我们给他一个这样的效果
		t.getMatrix().setTranslate((float) (Math.sin(interpolatedTime*10)*50), 0);//需要周期性的运动,数学里面有很多这样的函数,比如sin   
		
		super.applyTransformation(interpolatedTime, t);
	}
}

 代码调用

private CustomAnim ca;
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		ca = new CustomAnim();
		ca.setDuration(1000);
		
		findViewById(R.id.btnAnimMe).setOnClickListener(new View.OnClickListener()
		{
			
			@Override
			public void onClick(View v)
			{
				v.startAnimation(ca);
			}
		});
	}

 

分享到:
评论

相关推荐

    Android动画效果大全

    在Android开发中,动画效果是提升用户体验和应用视觉吸引力的关键元素。本文将深入探讨"Android动画效果大全",包括各种类型的动画以及如何基于这些技术实现炫酷的特效。 首先,Android提供两种主要的动画机制:帧...

    android path 动画效果 (很酷)

    标题中的"android path 动画效果 (很酷)"指的就是使用Android的动画系统来实现路径动画,使得UI元素能够沿着预定义的路径移动,产生流畅且酷炫的视觉效果。以下将详细介绍这一技术。 首先,Path Animation是Android...

    Android 动画效果集合

    Android 动画效果集合是一个资源库,专注于自定义动画,帮助开发者快速学习并实现各种动画效果,以满足在实际项目中的多样化需求。本资源集合通常会包含多种类型的动画,如视图过渡、平移、旋转、缩放等,为应用增添...

    android 各种加载动画效果

    通过"LoadingTest"这个压缩包,开发者可以学习如何在Android应用中实现这些加载动画效果,提升应用的交互体验。无论是简单的进度条设计还是复杂的动画逻辑,都可以从中获取灵感和实现方法。在实际开发中,根据应用的...

    Android翻页动画效果完整实例代码

    在Android中,这种动画可以通过自定义View或者使用开源库来实现。在这个实例中,开发者使用了贝塞尔曲线来模拟纸张的弯曲和翻转效果。 2. **贝塞尔曲线**:贝塞尔曲线是一种在二维图形设计中广泛应用的参数曲线,它...

    Android动画效果包

    在Android开发中,动画效果是提升用户体验的关键因素之一。Android动画效果包集合了多种基本的动画效果,旨在帮助开发者轻松创建出丰富的用户交互界面。这个资源包中的动画效果经过精心设计,可以为你的应用程序增添...

    Android学习之Android 5.0分享动画实现微信点击全屏效果

    本文将深入探讨如何在Android 5.0及以上版本中实现类似微信的点击分享动画,即当用户点击分享按钮时,整个屏幕会充满动画效果。我们将通过分析源码和使用一些工具来帮助我们完成这一过程。 首先,我们需要理解...

    android 动画大全 各种效果 欢迎下载

    在Android中,可以通过`AnimationDrawable`实现帧动画,适用于简单的2D动画场景。 4. **过渡动画(Transition Animation)** 自Android Lollipop(API level 21)起,过渡动画被引入,主要用于Activity和Fragment...

    史上最全的Android 动画效果

    在Android开发中,动画效果是提升用户体验的关键因素之一。这篇资料集合了史上最全的Android动画效果,涵盖了图片切换以及各种动态交互设计。以下是对这些关键知识点的详细解释: 1. **Android 动画效果**:Android...

    Android-一个用于Android的轻量级粒子动画库

    在Android中,动画分为两种主要类型:属性动画(Property Animation)和视图动画(View Animation)。粒子动画库可能是基于属性动画系统构建的,因为属性动画提供了更强大的功能,可以改变对象的任意属性,并且支持...

    Android动画学习总结Demo

    `RotateAnimation`是Android中实现旋转效果的专用动画类。它可以根据指定的初始角度和最终角度,使视图进行旋转。 1. 创建RotateAnimation 创建`RotateAnimation`对象,需要提供起始角度、结束角度、旋转中心X坐标...

    数百种Android动画效果源码

    这个名为"数百种Android动画效果源码"的项目,旨在提供一个丰富的动画库,帮助开发者快速理解和应用各种动画效果。下面将详细介绍这个项目中可能包含的知识点,并提供一些关于Android动画设计和实现的深入理解。 1....

    安卓动画效果相关-基于android旋转动画做的摇晃铃铛的动画效果代码很简单注释很简单可直接集成在项目中非常好用.rar

    在Android开发中,动画效果是提升用户体验的关键因素之一。这个压缩包文件提供的内容是一个基于Android旋转动画实现的摇晃铃铛的特效。这种动画效果可以让应用的交互更加生动有趣,适用于游戏、教育或者通知提示等...

    android高仿墨迹天气背景动画效果-云,风,雪等效果源码.zip

    本资源提供了“android高仿墨迹天气背景动画效果-云,风,雪等效果源码”,旨在帮助开发者实现类似墨迹天气应用中的高级天气背景动画。这些动画包括云朵飘动、风的吹拂以及雪花飘落等效果,能够为用户的天气应用带来...

    200多种Android动画效果的强悍框架

    在Android开发中,动画效果是提升用户体验的关键因素之一。本文将深入探讨一款强大的框架,它提供了超过200种不同的Android动画效果,帮助开发者轻松实现各种动态视觉效果,从而为用户带来更加生动、吸引人的应用...

    安卓动画效果相关-Android仿窗帘效果和登录界面拖动效果Scroller类的应用.rar

    在Android中实现这种效果,需要对View的移动进行精确控制,`Scroller`类就起到了关键作用。它能够帮助开发者计算出在一定时间内,View应该移动的距离和速度,使得动画过程更加平滑自然。开发者可以通过重写`...

    Android地图搜索,大头针坠落动画效果,圆环动画效果

    开发者可以通过阅读代码、理解逻辑和调试运行,进一步掌握如何在自己的Android项目中实现类似的动画效果。 总结起来,Android地图搜索中的大头针坠落和圆环动画效果是提升用户体验的关键元素。它们结合了自定义View...

    Android动画学习总结---下

    这意味着即使在动画结束后,对象的状态也会保持在最终位置,而视图动画则仅是模拟动画效果。 1. **属性动画的基本概念** - **ValueAnimator**:这是属性动画的核心类,负责管理动画的时间线和值的变化。你可以指定...

    z.h-android 翻折动画效果

    在Android中,我们可以利用`ObjectAnimator`、`PropertyValuesHolder`或者自定义`View`来实现这种效果。下面我们将深入探讨这个话题: 1. **ObjectAnimator与PropertyValuesHolder**: `ObjectAnimator`是Android...

Global site tag (gtag.js) - Google Analytics