android开发之动画的详解 整理资料 Android开发程序小冰整理
/** * 作者:David Zheng on 2015/11/7 15:38 * *网站:http://www.93sec.cc * *微博:http://weibo.com/mcxiaobing * *微博:http://weibo.com/93sec.cc */ 个人交流QQ986945193
一、分类:
(一)、概要:
- 属性动画:Property Animation
- 帧动画:Frame Animation (Drawable Animation)
- 补间动画:Tween Animation (View Animation)
- 透明度补间动画
- 缩放补间动画
- 旋转补间动画
- 移动补间动画
public class MainActivity extends Activity {
private ImageView imageView_main;
private Animation animation = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView_main = (ImageView) findViewById(R.id.imageView_main);
}
public void clickButton(View view) {
switch (view.getId()) {
case R.id.button_main_alpha:
animation = new AlphaAnimation(0.0f, 1.0f);
break;
case R.id.button_main_scale:
animation = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 1.0f);
break;
case R.id.button_main_translate:
animation = new TranslateAnimation(0, 150, 0, 0);
break;
case R.id.button_main_rotate:
animation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 1.0f);
break;
default:
break;
}
animation.setDuration(3000);
imageView_main.setAnimation(animation);
}
}
一、res/anim/frame_animation.xml的代码:
<animation-listxmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true"> <itemandroid:drawable="@drawable/anim1"android:duration="50"/> <itemandroid:drawable="@drawable/anim2"android:duration="50"/> <itemandroid:drawable="@drawable/anim3"android:duration="50"/> <itemandroid:drawable="@drawable/anim4"android:duration="50"/> <itemandroid:drawable="@drawable/anim5"android:duration="50"/> <itemandroid:drawable="@drawable/anim6"android:duration="50"/> <itemandroid:drawable="@drawable/anim7"android:duration="50"/> <itemandroid:drawable="@drawable/anim8"android:duration="50"/> <itemandroid:drawable="@drawable/anim9"android:duration="50"/> <itemandroid:drawable="@drawable/anim10"android:duration="50"/> <itemandroid:drawable="@drawable/anim11"android:duration="50"/> <itemandroid:drawable="@drawable/anim12"android:duration="50"/> </animation-list>
二、MainActivity.java代码:
public class MainActivity extends Activity {
private ImageView imageView_main_show;
private AnimationDrawable animationDrawable = null;
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView_main_show = (ImageView) findViewById(R.id.imageView_main_show);
imageView_main_show.setBackgroundResource(R.anim.frame_animation);
animationDrawable = (AnimationDrawable) imageView_main_show.getBackground();
}
public void clickButton(View
view) {
switch (view.getId()) {
case R.id.button_main_start:
if (!animationDrawable.isRunning()) {
//一组动画是否只播放一次
animationDrawable.setOneShot(false);
animationDrawable.start();
}
break;
case R.id.button_main_stop:
if (animationDrawable.isRunning()) {
animationDrawable.stop();
}
break;
}
}
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
if (!animationDrawable.isRunning()) {
animationDrawable.setOneShot(false);
animationDrawable.start();
}
}
}
- Duration动画的持续时间,默认300ms。
- Time interpolation:时间插值。LinearInterpolator、AccelerateDecelerateInterpolator,定义动画的变化率。
- Repeat count and behavior:重复次数、以及重复模式;可以定义重复多少次;重复时从头开始,还是反向。
- Animator sets: 动画集合,你可以定义一组动画,一起执行或者顺序执行。
- Frame refresh delay:帧刷新延迟,对于你的动画,多久刷新一次帧;默认为10ms,但最终依赖系统的当前状态;基本不用管。
- ObjectAnimator 动画的执行类(常用属性:alpha,rotation,rotationX,rotationY,translationX,translationY,scaleX,scaleY)
- ValueAnimator 动画的执行类
- AnimatorSet 用于控制一组动画的执行:线性,一起,每个动画的先后执行等。
- AnimatorInflater 用户加载属性动画的xml文件
- TypeEvaluator 类型估值,主要用于设置动画操作属性的值。
- TimeInterpolator 时间插值
- 总的来说,属性动画就是,动画的执行类来设置动画操作的对象的属性、持续时间,开始和结束的属性值,时间差值等,然后系统会根据设置的参数动态的变化对象的属性。
一、res/anim/property_anim.xml的代码:
<setxmlns:android="http://schemas.android.com/apk/res/android" android:ordering="sequentially"> <objectAnimator android:duration="4000" android:propertyName="x" android:valueTo="300" android:valueType="intType"/> <objectAnimator android:duration="4000" android:propertyName="y" android:valueTo="400" android:valueType="intType"/> <objectAnimator android:duration="4000" android:propertyName="x" android:valueTo="0" android:valueType="intType"/> <objectAnimator android:duration="4000" android:propertyName="y" android:valueTo="0" android:valueType="intType"/> </set>
二、MainActivity.java代码:
public class MainActivity extends Activity
{
private ImageView imageView_main_obj;
private Move move;
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView_main_obj = (ImageView) findViewById(R.id.imageView_main_obj);
move = new Move();
imageView_main_obj.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
setTitle(move.getX() + ":" + move.getY());
}
});
}
class Move {
private int y;
private int x;
publicint getY() {
return y;
}
public void setY(int y)
{
this.y = y;
imageView_main_obj.layout(imageView_main_obj.getLeft(), y,imageView_main_obj.getRight(),y
+ imageView_main_obj.getMeasuredHeight());
}
public int getX() {
return x;
}
publi cvoid setX(int x)
{
this.x = x;
imageView_main_obj.layout(x, imageView_main_obj.getTop(), x + imageView_main_obj.getMeasuredWidth(),imageView_main_obj.getBottom());
}
}
public void clickButton(View
view) {
// 装载属性动画资源
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(this,
R.animator.property_anim);
// 设置要控制的对象
set.setTarget(move);
// 开始动画
set.start();
}
}
【备注说明:】
<objectAnimator android:duration="4000" android:propertyName="x" android:valueTo="300" android:valueType="intType"/>
- android:ordering说明一系列动画动作的执行顺序,有两个选择: sequentially 和together,顺序执行还是一起执行;
- objectAnimator 是设定动画实施的对象;
- duration是该动画动作执行从开始到结束所用的时间;
- android:repeatCount="infinite" 可以是整数或者infinite
- android:repeatMode="restart" 可以是restart 或者 reverse
- android:valueFrom=" " 整数|浮点数|颜色
2015/11/7 15:38 * *
* *
* *
*/ 个人交流QQ986945193
android开发之动画的详解 整理资料 Android开发程序小冰整理的更多相关文章
- Android Animations 视图动画使用详解!!!
转自:http://www.open-open.com/lib/view/open1335777066015.html Android Animations 视图动画使用详解 一.动画类型 Andro ...
- Android安卓书籍推荐《Android驱动开发与移植实战详解》下载
百度云下载地址:点我 Android凭借其开源性.优异的用户体验和极为方便的开发方式,赢得了广大用户和开发者的青睐,目前已经发展成为市场占有率很高的智能手机操作系统. <Android驱动开发与 ...
- 动画_ _ Android应用开发之所有动画使用详解
转载: http://blog.csdn.net/yanbober/article/details/46481171 题外话:有段时间没有更新博客了,这篇文章也是之前写了一半一直放在草稿箱,今天抽空把 ...
- Android应用开发之所有动画使用详解
题外话:有段时间没有更新博客了,这篇文章也是之前写了一半一直放在草稿箱,今天抽空把剩余的补上的.消失的这段时间真的好忙,节奏一下子有些适应不过来,早晨七点四十就得醒来,晚上九点四十才准备下班,好像最近 ...
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...
- Android基础夯实--重温动画(五)之属性动画 ObjectAnimator详解
只有一种真正的英雄主义 一.摘要 ObjectAnimator是ValueAnimator的子类,它和ValueAnimator一样,同样具有计算属性值的功能,但对比ValueAnimator,它会更 ...
- Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!
Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还 ...
- Android Design Support Library使用详解
Android Design Support Library使用详解 Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的And ...
- [Android新手区] SQLite 操作详解--SQL语法
该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法 :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...
随机推荐
- [转]为什么阿里巴巴要禁用Executors创建线程池?
作者:何甜甜在吗 链接:https://juejin.im/post/5dc41c165188257bad4d9e69 来源:掘金 看阿里巴巴开发手册并发编程这块有一条:线程池不允许使用Executo ...
- jmeter如何设置全局变量
场景:性能测试或者接口测试,如果想跨线程引用(案例:A线程组里面的一个输出,是B线程组里面的一个输入,这个时候如果要引用),这个时候你就必须要设置全局变量;全链路压测也需要分不同场景,通常情况,一个场 ...
- asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权
开发了一个公司内部系统,使用asp.net core 3.1.在开发用户认证授权使用的是简单的cookie认证方式,然后开发好了要写几个接口给其它系统调用数据.并且只是几个简单的接口不准备再重新部署一 ...
- 秦九韶算法 & 三分法
前言 今天考试出了一个题 郭郭模拟退火骗了75分 于是再次把咕咕了好久的模退提上日程 如果进展顺利 明后天应该会开爬山算法和模退的博客笔记 今天先把今天考试的正解学习一下--三分法 引入 老规矩上板子 ...
- JS 本地存储笔记
本地存储 1.数据存储在用户浏览器中的 2.设置.读取方便.甚至刷新都不会丢失数据 3.容量比较大,sessionStorange约5M,localstorage约20M ...
- 14、Java文件操作stream、File、IO
1.文件操作涉及到的基本概念 File File类 是文件操作的主要对象中文意义就是 文件 顾名思意 万物皆文件,在计算上看到的所有东西都是文件保存,不管是你的图片.视频.数据库数据等等都是按照基本的 ...
- 2020-06-18:ZK的分布式锁怎么实现?
福哥答案2020-06-18: Zk分布式锁有两种实现方式一种比较简单,应对并发量不是很大的情况.获得锁:创建一个临时节点,比如/lock,如果成功获得锁,如果失败没获得锁,返回false释放锁:删除 ...
- C#LeetCode刷题之#507-完美数(Perfect Number)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3879 访问. 对于一个 正整数,如果它和除了它自身以外的所有正因 ...
- linux 命令行安装谷歌浏览器
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm 2. yum install -y ls ...
- C++ STL sort 函数的用法
sort 在 STL 库中是排序函数,有时冒泡.选择等 $\mathcal O(n^2)$ 算法会超时时,我们可以使用 STL 中的快速排序函数 $\mathcal O(n \ log \ n)$ 完 ...