`
Bauble
  • 浏览: 67476 次
  • 性别: Icon_minigender_1
  • 来自: Mercury
社区版块
存档分类
最新评论

Android34_Animations使用(二)

阅读更多

 

在代码中使用Animations可以很方便的调试、运行,但是代码的可重用性差,重复代码多。同样可以在xml文件中配置Animations,这样做可维护性变高了,只不过不容易进行调试。

一、在xml中使用Animations步骤

1.在res文件夹下建立一个anim文件夹;

2.创建xml文件,并首先加入set标签,更改标签如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
	android:interpolator="@android:anim/accelerate_interpolator">
</set>

        3.在该标签当中加入rotatealphascale或者translate标签;

<alpha
    	android:fromAlpha="1.0"
    	android:toAlpha="0.0"
    	android:startOffset="500"
    	android:duration="500"/>

         4.在代码当中使用AnimationUtils当中装载xml文件,并生成Animation对象。因为AnimationAnimationSet的子类,所以向上转型,用Animation对象接收。

//使用AnimationUtils装载动画配置文件
Animation animation = AnimationUtils
	.loadAnimation(AnimationActivity.this, R.anim.alpha);
//启动动画
image.startAnimation(animation);

 二、完整代码

       目录结构:


 Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
	<LinearLayout
	    android:orientation="horizontal"
	    android:layout_height="wrap_content" 
	    android:layout_width="wrap_content">
		<Button 
			android:id="@+id/rotateButton"
	    	android:layout_width="wrap_content"
	    	android:layout_height="wrap_content"
	    	android:text="旋转"/>
		<Button 
			android:id="@+id/scaleButton"
	    	android:layout_width="wrap_content"
	    	android:layout_height="wrap_content"
	    	android:text="缩放"/>
		<Button 
			android:id="@+id/alphaButton"
	    	android:layout_width="wrap_content"
	    	android:layout_height="wrap_content"
	    	android:text="淡入淡出"/>
		<Button 
			android:id="@+id/translateButton"
	    	android:layout_width="wrap_content"
	    	android:layout_height="wrap_content"
	    	android:text="移动"/>
	</LinearLayout>
	<LinearLayout
	    android:orientation="vertical"
	    android:layout_width="fill_parent"
	    android:layout_height="fill_parent">
		<ImageView 
			android:id="@+id/image"
	    	android:layout_width="wrap_content"
	    	android:layout_height="wrap_content"
	    	android:layout_centerInParent="true"
	    	android:src="@drawable/image"/>	
	</LinearLayout>
</LinearLayout>

 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">
    <!-- fromAlpha和toAlpha是起始透明度和结束时透明度 -->
    <alpha
    	android:fromAlpha="1.0"
    	android:toAlpha="0.0"
    	android:startOffset="500"
    	android:duration="500"/>
</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">
    <!--
    	fromDegrees:开始的角度
    	toDegrees:结束的角度,+表示是正的
    	pivotX:用于设置旋转时的x轴坐标
    	例
    		1)当值为"50",表示使用绝对位置定位
    		2)当值为"50%",表示使用相对于控件本身定位
    		3)当值为"50%p",表示使用相对于控件的父控件定位
    	pivotY:用于设置旋转时的y轴坐标
      -->
    <rotate 
    	android:fromDegrees="0"
    	android:toDegrees="+360"
    	android:pivotX="50%"
    	android:pivotY="50%"
    	android:duration="1000"/>
</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">
    <!--
    		始x轴坐标
    		止x轴坐标
    		始y轴坐标
    		止y轴坐标
      -->
    <translate 
    	android:fromXDelta="0%"
    	android:toXDelta="100%"
    	android:fromYDelta="0%"
    	android:toYDelta="100%"
    	android:duration="2000"/>
</set>

 Scale.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
	android:interpolator="@android:anim/accelerate_interpolator">
   <!--
   		起始x轴坐标
    		止x轴坐标
    		始y轴坐标
    		止y轴坐标
    		轴的坐标
    		轴的坐标
     -->
   <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="1000"/> 
</set>

 AnimationActivity.java

package com.android.activity;
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 AnimationActivity extends Activity {
	private Button rotateButton = null;
	private Button scaleButton = null;
	private Button alphaButton = null;
	private Button translateButton = null;
	private ImageView image = null;
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        rotateButton = (Button)findViewById(R.id.rotateButton);
        scaleButton = (Button)findViewById(R.id.scaleButton);
        alphaButton = (Button)findViewById(R.id.alphaButton);
        translateButton = (Button)findViewById(R.id.translateButton);
        image = (ImageView)findViewById(R.id.image);
        
        rotateButton.setOnClickListener(new RotateButtonListener());
        scaleButton.setOnClickListener(new ScaleButtonListener());
        alphaButton.setOnClickListener(new AlphaButtonListener());
        translateButton.setOnClickListener(
			 TranslateButtonListener());
    }
	class AlphaButtonListener implements OnClickListener{
		public void onClick(View v) {
			//使用AnimationUtils装载动画配置文件
			Animation animation = AnimationUtils
				.loadAnimation(AnimationActivity.this, R.anim.alpha);
			//启动动画
			image.startAnimation(animation);
		}
	}
	class RotateButtonListener implements OnClickListener{
		public void onClick(View v) {
			Animation animation = AnimationUtils
				.loadAnimation(AnimationActivity.this, R.anim.rotate);
			image.startAnimation(animation);
		}
	}
	class ScaleButtonListener implements OnClickListener{
		public void onClick(View v) {
			Animation animation = AnimationUtils
				.loadAnimation(AnimationActivity.this, R.anim.scale);
			image.startAnimation(animation);
		}
	}
	
	class TranslateButtonListener implements OnClickListener{
		public void onClick(View v) {
			Animation animation = AnimationUtils
				.loadAnimation(AnimationActivity.this, R.anim.translate);
			image.startAnimation(animation);
		}
	}
}

 运行结果:


  • 大小: 13.9 KB
  • 大小: 35.9 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Android-android_additive_animations.zip

    Android-android_additive_animations.zip,Android附加动画!,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。

    android-sdk-sources-android-28.rar

    它提供了屏幕使用时间统计、应用使用限制、睡前模式等工具,帮助用户建立健康的数字生活习惯。 3. ** Adaptive Battery 和 Adaptive Brightness**:Android 9.0引入了Adaptive Battery技术,通过机器学习预测用户...

    android_additive_animations:Android的加性动画!

    在此处获得此库的良好概述: : 一体化要在您的项目中使用AdditiveAnimator ,请在build.gradle添加以下几行: dependencies { compile 'at.wirecube:additive_animations:1.9.0'}...repositories { jcenter()}快速...

    android-UI.zip_android_android java 界面_android ui_android 界面_校园导

    6. **动画(Animations)**:Android提供多种动画类型,如属性动画(Property Animation)、视图动画(View Animation)和过渡动画(Transition Animation),可用于创建吸引人的用户交互。 7. **自定义视图...

    Androidg_java_android_acceptxpj_

    在Android开发中,动画是提升用户体验的关键因素之一。"Androidg_java_android_acceptxpj_"这个主题聚焦...Material-Animations-master项目应该提供了丰富的示例代码和实践指导,是学习和提升Android动画技能的好资源。

    android_animations:Android动画-准备使用XML文件

    本教程将聚焦于“android_animations”项目,这个项目主要关注如何使用XML文件来创建和管理Android应用程序中的动画。 首先,让我们理解XML在Android动画中的作用。XML(eXtensible Markup Language)是一种用于...

    Android-UI.rar_android_android ui_ui

    在Android中,可以使用XML文件定义颜色资源,方便在整个应用中复用。同时,通过设置主题(Theme),可以全局改变应用的视觉样式,如字体、背景色、控件样式等。 5. **响应式布局(Responsive Layouts)**: 使用...

    android-UI.rar_android_android ui_ui

    6. **动画(Animations)**:Android支持多种类型的动画,如属性动画(Property Animation)、视图动画(View Animation)等,为用户界面增添动态效果,提高用户体验。 7. **触摸反馈(Touch Feedback)**:通过...

    Android-animations

    通过学习和使用"Android-animations",开发者不仅可以提高应用的视觉吸引力,还能确保应用在不同版本的Android系统上保持一致的用户体验。此外,熟悉"nineoldandroids"也有助于理解和使用Android的原生动画系统,这...

    Android_UI.rar_Android_UI_android_ui

    7. **动画(Animations)**:Android支持属性动画(Property Animation)、视图动画(View Animation)和过渡动画(Transition Animation),用于增强用户体验。例如,滑动切换效果、淡入淡出等。 8. **对话框...

    Android Animations动画使用详解

    ### Android Animations动画使用详解 #### 一、概述 Android平台提供了丰富的动画支持来增强用户界面的交互体验。本文档将详细介绍Android中的四种基本动画类型:`Alpha`(透明度变化)、`Scale`(缩放变化)、`...

    mars《Android开发视频教程》第二季part1

    11_Animations01、12_Animations02、14_Animations04、15_Animations05和17_Animations07这些章节,会深入讲解如何创建和使用这些动画,以及如何实现复杂的过渡效果,提升用户体验。 2. **AppWidget**:AppWidget是...

    Android代码-Animations

    Animations Beautiful animations from AOSP 依賴 Add it in your root build.gradle at the end of repositories: allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 查詢最新...

    Android View Animations

    For making animations more real, I created another project named Android Easing Functions which is an implementations of easing functions on Android. So, we need to dependent that project. Step 1 ...

    Android开发之Animations动画用法实例详解

    本文实例讲述了Android开发之Animations动画用法。分享给大家供大家参考,具体如下: 一、动画类型 Android的animation由四种类型组成:alpha、scale、translate、rotate XML配置文件中 alpha 渐变透明度...

    十大热门Android开源项目之 Material-Animations

    Material-Animations是专门为Android平台设计的一款开源项目,它致力于实现Material Design规范中的各种动画效果,使得开发者可以轻松地在自己的应用中添加生动、流畅的过渡动画。 项目的核心目标是提供Activity...

    [android.开发书籍].Android.3.0.Animations

    - 掌握Android 3.0中各种动画框架的使用方法。 - 学会如何设计和实现复杂的动画效果。 - 了解如何优化动画性能,避免影响用户体验。 - 能够独立完成包含高级动画效果的应用开发项目。 #### 六、结语 《Android 3.0...

    Android代码-Learning_Android_Open_Source

    Android 开发学习过程中,有两处重要的代码资料来源,一是 Android Training 及其 Sample,二是 GitHub。 Github 上已经有各种高质量的「集锦」,它们的工作是按某种主题分类整理高质量的开源项目,给出链接、总结优...

    EventsCalendar_kotlinandroid_kotlin_

    【标题】"EventsCalendar_kotlinandroid_kotlin_" 指示这是一个使用Kotlin语言开发的Android日历应用,重点在于其包含多种动画效果。在Android应用开发中,Kotlin已经逐渐成为主流语言,以其简洁、安全和面向现代...

Global site tag (gtag.js) - Google Analytics