Android 2.2 API demos --- animation

2024-03-25 02:18
文章标签 android api 2.2 animation demos

本文主要是介绍Android 2.2 API demos --- animation,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android主要提供了两种创建动画机制:补间动画(tweened animation)和逐帧动画(frame-by-frame animation)。

补间动画主要完成一些简单的转场,例如位置、大小变化;

逐帧动画主要是依次加载一系列的可绘制资源。

一、补间动画

1. Tweened Animation可以运用在view,surface或者其它对象上,主要分四类:

Alpha         透明度渐变动画
Scale         尺寸渐变动画
Translate         位置移动动画
Rotate         画面旋转动画

动画属性介绍:

Alpha         
fromAlpha         动画起始时透明度,0.0表示完全透明
toAlpha         动画结束时透明度,1.0表示完全不透明
Scale         
fromXScale         动画起始时X坐标上的伸缩尺寸
toXScale         动画结束时X坐标上的伸缩尺寸
fromYScale         动画起始时Y坐标上的伸缩尺寸
toYScale         动画结束时Y坐标上的伸缩尺寸
pivotX         动画相对于物件的X坐标的开始位置
pivotY         动画相对于物件的Y坐标的开始位置
Translate         
fromXDelta         动画起始时X坐标上的位置
toXDelta         动画结束时X坐标上的位置
fromYDelta         动画起始时Y坐标上的位置
toYDelta         动画结束时Y坐标上的位置
Rotate         
fromDegrees         动画起始时物件的角度
toDegrees         动画结束时物件旋转的角度,可以大于360度
pivotX         动画相对于物件的X坐标的开始位置
pivotY         动画相对于物件的Y坐标的开始位置

2. 使用Animation的方式有两种,一种是在XML中定义动画,另一种是在Java代码中定义动画。

一)在XML中定义动画

示例一:将动画应用在View上

(1) 创建animation,新建res\anim\alpha.xml。

Xml代码

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



 

 

(2) 创建layout,新建res\layout\main.xml。

Xml代码

<?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" ><TextView  android:id="@+id/text01"android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /><Button android:id="@+id/button01"android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/alpha" /></LinearLayout>


 

(3) 创建Activity,AnimationActivity.java。通过AnimationUtils.loadAnimation加载动画,然后aView.startAnimation来运行动画。

Java代码

 

package com.example.android.apis.app;import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.animation.AnimationUtils;public class AnimationActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);findViewById(R.id.button01).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {findViewById(R.id.text01).startAnimation(AnimationUtils.loadAnimation(AnimationActivity.this,R.anim.alpha));}});}
}


 

 

(4) 运行应用,点击Alpha按钮,文本信息会出现渐变效果。

示例二:将动画应用在Activity上

Android官方示例,com.example.android.apis.app.Animation。在此只列出关键部分。

(1) animation xml文件。

res/anim/fade.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?><alpha xmlns:android="http://schemas.android.com/apk/res/android"android:interpolator="@android:anim/accelerate_interpolator"android:fromAlpha="0.0" android:toAlpha="1.0"android:duration="@android:integer/config_longAnimTime" />


 

 

res/anim/hold.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android"android:interpolator="@android:anim/accelerate_interpolator"android:fromXDelta="0" android:toXDelta="0"android:duration="@android:integer/config_longAnimTime" />


 

res/anim/zoom_enter.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"android:interpolator="@android:anim/decelerate_interpolator"><scale android:fromXScale="2.0" android:toXScale="1.0"android:fromYScale="2.0" android:toYScale="1.0"android:pivotX="50%p" android:pivotY="50%p"android:duration="@android:integer/config_mediumAnimTime" />
</set>


<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"android:interpolator="@android:anim/decelerate_interpolator"><scale android:fromXScale="2.0" android:toXScale="1.0"android:fromYScale="2.0" android:toYScale="1.0"android:pivotX="50%p" android:pivotY="50%p"android:duration="@android:integer/config_mediumAnimTime" />
</set>

res/anim/zoom_exit.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"android:interpolator="@android:anim/decelerate_interpolator"android:zAdjustment="top"><scale android:fromXScale="1.0" android:toXScale=".5"android:fromYScale="1.0" android:toYScale=".5"android:pivotX="50%p" android:pivotY="50%p"android:duration="@android:integer/config_mediumAnimTime" /><alpha android:fromAlpha="1.0" android:toAlpha="0"android:duration="@android:integer/config_mediumAnimTime"/>
</set>


 

(2) 主要Activity 文件,com/example/android/apis/app/Animation.java。通过overridePendingTransition方法将自定义动画覆盖Activity之间跳转时默认的动画,
Java代码
package com.example.android.apis.app;import com.example.android.apis.R;
import com.example.android.apis.view.Controls1;import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class Animation extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_animation);Button button = (Button)findViewById(R.id.fade_animation);button.setOnClickListener(mFadeListener);button = (Button)findViewById(R.id.zoom_animation);button.setOnClickListener(mZoomListener);}private OnClickListener mFadeListener = new OnClickListener() {public void onClick(View v) {startActivity(new Intent(Animation.this, Controls1.class));overridePendingTransition(R.anim.fade, R.anim.hold);}};private OnClickListener mZoomListener = new OnClickListener() {public void onClick(View v) {startActivity(new Intent(Animation.this, Controls1.class));overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);}};
}


 

   

二)在Java代码中定义动画

示例一:

(1) layout文件同上文的res\layout\main.xml。

(2) 修改AnimationActivity.java代码。在代码里创建animation并设置属性。
Java代码

com.example.android.apis.app;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;public class AnimationActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);findViewById(R.id.button01).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 创建rotate animationAnimation anim = new RotateAnimation(0, 360);anim.setDuration(5000);anim.setInterpolator(new AccelerateDecelerateInterpolator());findViewById(R.id.text01).startAnimation(anim);}});}
}


 

二、逐帧动画

这篇关于Android 2.2 API demos --- animation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/843544

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

一分钟带你上手Python调用DeepSeek的API

《一分钟带你上手Python调用DeepSeek的API》最近DeepSeek非常火,作为一枚对前言技术非常关注的程序员来说,自然都想对接DeepSeek的API来体验一把,下面小编就来为大家介绍一下... 目录前言免费体验API-Key申请首次调用API基本概念最小单元推理模型智能体自定义界面总结前言最

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加