安卓开发_浅谈Android动画(三)

简介: 一、LayoutAnimation布局动画 用于为一个layout里面的控件,或者是一个ViewGroup里面的控件设置动画效果 在res-anim文件下新建一个动画xml文件 1 2 4 5 13 17 zoom_in list为列表...

一、LayoutAnimation布局动画

用于为一个layout里面的控件,或者是一个ViewGroup里面的控件设置动画效果

在res-anim文件下新建一个动画xml文件

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <set xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:interpolator="@android:anim/decelerate_interpolator" >
 4   
 5   <scale
 6         android:duration="1000"
 7         android:fromXScale="0.1"
 8         android:fromYScale="0.1"
 9         android:pivotX="50%"
10         android:pivotY="50%"
11         android:toXScale="1.0"
12         android:toYScale="1.0" />
13   <alpha
14         android:duration="1000"
15         android:fromAlpha="0"
16         android:toAlpha="1.0" />
17 </set>
zoom_in

list为列表

//布局动画控制器
LayoutAnimationController lac = new LayoutAnimationController(AnimationUtils.loadAnimation(this,R.anim.zoom_in));
//动画方式 
lac.setOrder(LayoutAnimationController.ORDER_RANDOM);
//加载布局动画
list.setLayoutAnimation(lac);
//开始动画
list.startLayoutAnimation();
//为列表视图中选中的项添加响应事件

效果图:

全部代码:

 1 package other;
 2 
 3 import com.example.allcode.R;
 4 
 5 import android.app.Activity;
 6 import android.os.Bundle;
 7 import android.view.View;
 8 import android.view.animation.AnimationUtils;
 9 import android.view.animation.LayoutAnimationController;
10 import android.widget.AdapterView;
11 import android.widget.AdapterView.OnItemClickListener;
12 import android.widget.ListView;
13 import android.widget.Toast;
14 
15 public class Donghua_List extends Activity{
16     private ListView list;
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         // TODO Auto-generated method stub
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.donghua_layout);
22         
23         
24         list = (ListView) findViewById(R.id.listView1);
25         //布局动画控制器
26         LayoutAnimationController lac = new LayoutAnimationController(AnimationUtils.loadAnimation(this,R.anim.zoom_in));
27         //动画方式
28         lac.setOrder(LayoutAnimationController.ORDER_RANDOM);
29         //加载布局动画
30         list.setLayoutAnimation(lac);
31         //开始动画
32         list.startLayoutAnimation();
33         //为列表视图中选中的项添加响应事件
34         list.setOnItemClickListener(new OnItemClickListener() {
35 
36             @Override
37             public void onItemClick(AdapterView<?> parent, View arg1, int pos,
38                     long id) {
39                 // TODO Auto-generated method stub
40                  String result = parent.getItemAtPosition(pos).toString(); //获取选择项的值
41                     Toast.makeText(Donghua_List.this, "点击了 "+result, Toast.LENGTH_SHORT).show();//输出选中项消息
42             }
43         });
44     }
45     
46     
47 
48 }
Donghua_list.java
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6 
 7     <ListView
 8         android:id="@+id/listView1"
 9         android:entries="@array/list"          
10     
11         android:layout_width="match_parent"
12         android:layout_height="wrap_content" >
13     </ListView>
14 
15 </LinearLayout>
donghua_layout.xml

------------------------------------------------------------------------------------------------------------------

二、Drawable动画(帧动画)

即多张连续的动画顺序播放

核心类:AnimationDrawable 

使用步骤:

1、在res下创建drawable文件夹创建资源文件 xx.xml (名字随便取)

有个属性 android:oneshot="false" 判断是否重复播放帧动画,默认false  表示循环播放,true表示只播放一次

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <animation-list xmlns:android="http://schemas.android.com/apk/res/android" 
 3     android:oneshot="true"
 4     >
 5     <item android:drawable="@drawable/refresh_001" android:duration="200" />
 6     <item android:drawable="@drawable/refresh_002" android:duration="200" />
 7     <item android:drawable="@drawable/refresh_003" android:duration="200" />
 8     <item android:drawable="@drawable/refresh_004" android:duration="200" />
 9     <item android:drawable="@drawable/refresh_005" android:duration="200" />
10     <item android:drawable="@drawable/refresh_006" android:duration="200" />
11     <item android:drawable="@drawable/refresh_007" android:duration="200" />
12     <item android:drawable="@drawable/refresh_008" android:duration="200" />
13     <item android:drawable="@drawable/refresh_009" android:duration="200" />
14     <item android:drawable="@drawable/refresh_010" android:duration="200" />
15     <item android:drawable="@drawable/refresh_011" android:duration="200" />
16     <item android:drawable="@drawable/refresh_012" android:duration="200" />
17     <item android:drawable="@drawable/refresh_013" android:duration="200" />
18     <item android:drawable="@drawable/refresh_014" android:duration="200" />
19     <item android:drawable="@drawable/refresh_015" android:duration="200" />
20     <item android:drawable="@drawable/refresh_016" android:duration="200" />
21     <item android:drawable="@drawable/refresh_017" android:duration="200" />
22     <item android:drawable="@drawable/refresh_018" android:duration="200" />
23     <item android:drawable="@drawable/refresh_019" android:duration="200" />
24     <item android:drawable="@drawable/refresh_020" android:duration="200" />
25     <item android:drawable="@drawable/refresh_021" android:duration="200" />
26     <item android:drawable="@drawable/refresh_022" android:duration="200" />
27     <item android:drawable="@drawable/refresh_023" android:duration="200" />
28     <item android:drawable="@drawable/refresh_024" android:duration="200" />
29     <item android:drawable="@drawable/refresh_025" android:duration="200" />
30     <item android:drawable="@drawable/refresh_026" android:duration="200" />
31     <item android:drawable="@drawable/refresh_027" android:duration="200" />
32     <item android:drawable="@drawable/refresh_028" android:duration="200" />
33     <item android:drawable="@drawable/refresh_029" android:duration="200" />
34     <item android:drawable="@drawable/refresh_030" android:duration="200" />
35     <item android:drawable="@drawable/refresh_031" android:duration="200" />
36     <item android:drawable="@drawable/refresh_032" android:duration="200" />
37     <item android:drawable="@drawable/refresh_033" android:duration="200" />
38     <item android:drawable="@drawable/refresh_034" android:duration="200" />
39     <item android:drawable="@drawable/refresh_035" android:duration="200" />
40     <item android:drawable="@drawable/refresh_036" android:duration="200" />
41     <item android:drawable="@drawable/refresh_037" android:duration="200" />
42     <item android:drawable="@drawable/refresh_038" android:duration="200" />
43     <item android:drawable="@drawable/refresh_039" android:duration="200" />
44     <item android:drawable="@drawable/refresh_040" android:duration="200" />
45     <item android:drawable="@drawable/refresh_041" android:duration="200" />
46     <item android:drawable="@drawable/refresh_042" android:duration="200" />
47     <item android:drawable="@drawable/refresh_043" android:duration="200" />
48     <item android:drawable="@drawable/refresh_044" android:duration="200" />
49     <item android:drawable="@drawable/refresh_045" android:duration="200" />
50     <item android:drawable="@drawable/refresh_046" android:duration="200" />
51     <item android:drawable="@drawable/refresh_047" android:duration="200" />
52     <item android:drawable="@drawable/refresh_048" android:duration="200" />
53     
54     
55 </animation-list>
View Code

2、布局文件

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context=".MainActivity" >
10 
11     <ImageView 
12         android:layout_width="wrap_content"
13         android:layout_height="wrap_content"
14         android:id="@+id/imageView"
15         android:background="@drawable/refresh_001"
16         
17         />
18 
19 </RelativeLayout>
activity_main.xml

3、使用AnimationDrawable 类

(1)找到要显示动画的ImageView控件

imageView = (ImageView) findViewById(R.id.imageView);

(2)给图片控件设置资源

imageView.setBackgroundResource(R.drawable.waiting_anim); //将帧动画资源文件作为View控件背景

 

(3)获取AnimationDrawable 类对象

AnimationDrawable rocketAnimation = (AnimationDrawable) imageView.getBackground(); //获取背景并强转成为帧动画对象

(4)启动动画

rocketAnimation.start();

效果图:

 

 

-------------------------------------------------------------------------------------------------------------------

动画汇总:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <set xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:interpolator="@android:anim/decelerate_interpolator" >
 4   
 5   <scale
 6         android:duration="1000"
 7         android:fromXScale="0.1"
 8         android:fromYScale="0.1"
 9         android:pivotX="50%"
10         android:pivotY="50%"
11         android:toXScale="1.0"
12         android:toYScale="1.0" />
13   <alpha
14         android:duration="1000"
15         android:fromAlpha="0"
16         android:toAlpha="1.0" />
17 </set>
zoom_in.xml 从右往左
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <set xmlns:android="http://schemas.android.com/apk/res/android">
 3     
 4     <translate android:fromXDelta="-100%p" 
 5         android:toXDelta="0" 
 6         android:duration="300"/>
 7     <alpha android:fromAlpha="0.0" 
 8         android:toAlpha="1.0"
 9          android:duration="300" />
10 </set>
push_left_in.xml从左往右
1 <?xml version="1.0" encoding="utf-8"?>
2 <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
3     <translate android:fromYDelta="-100%" android:toXDelta="0" android:duration="300" />
4     <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
5 </set>
slide_top_to_bottom.xml 从上往下
1 <?xml version="1.0" encoding="utf-8"?>
2 <set xmlns:android="http://schemas.android.com/apk/res/android" 
3     android:interpolator="@android:anim/decelerate_interpolator">
4     
5     <translate android:fromYDelta="100%" android:toXDelta="0" android:duration="300" />
6     <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
7 </set>
slide_bottom_to_top.xml从下往上

 

相关文章
|
13天前
|
前端开发 Java 编译器
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
71 36
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
|
1天前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
31 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
3天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
23 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
3天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
27 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
15天前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
116 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
13天前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
36 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
28天前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
79 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
6月前
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
131 2
基于Android P,自定义Android开机动画的方法
|
Android开发
Android自定义View,制作饼状图带动画效果
一个简单的自定义view饼状图,加入了动画效果
168 0

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    Android历史版本与APK文件结构
  • 3
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 4
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 5
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 6
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 8
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 9
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 10
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 1
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    24
  • 2
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    31
  • 3
    Android历史版本与APK文件结构
    119
  • 4
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    27
  • 5
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 6
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    55
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    36
  • 8
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    71
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    116
  • 10
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
    29