1.view 动画有哪些需要注意的?

答:view动画 本身比较简单。http://www.cnblogs.com/punkisnotdead/p/5179115.html 看这篇文章的第五问就可以了。

2.如何给viewGroup 子元素出场时增加动画效果?

答:以listview 为例。

 <?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="0.5"
android:animationOrder="normal"
android:animation="@anim/viewanim"
>
</layoutAnimation>
 <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"> <alpha android:fromAlpha="0.0"
android:toAlpha="1.0"></alpha>
<translate android:fromXDelta="500"
android:toXDelta="0"></translate> </set>
 <ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layoutAnimation="@anim/lv_anim"></ListView>

看看效果:

3.如何给activity和fragment 设置切换效果?

答:activity:

 <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000">
<alpha android:fromAlpha="0.0"
android:toAlpha="1.0"></alpha>
</set>
 <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000">
<alpha android:fromAlpha="1.0"
android:toAlpha="0.0"></alpha>
</set>
  Intent intent=new Intent(MainActivity.this,OtherActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.enter_anim,R.anim.exit_anim);

效果:

fragment差不多 就是要使用兼容包,setCustomAniamtions 即可。

4.使用属性动画需要哪些条件?

答:如果相对属性abc 来进行属性动画的操作的话,必须要提供setAbc方法。 如果动画没有提供初始值,还有提供getAbc方法

因为系统要取abc的初始值,取不到初始值肯定要报错。

除此之外就是 setAbc方法 必须要能对view的实际ui有改观,让人能感觉出来ui的变化,否则 属性动画可以运行 但是因为没有效果,

也是看不出来的

5.对Button的 width 属性使用属性动画,为什么无效?有哪些解决方案?

答:

   @android.view.RemotableViewMethod
public void setWidth(int pixels) {
mMaxWidth = mMinWidth = pixels;
mMaxWidthMode = mMinWidthMode = PIXELS; requestLayout();
invalidate();
}

你看Button 明显虽然有setWidth方法 但是 这个方法里 并没有实际修改这个view的layout属性 所以当然是无效的。

解决方法:可以用一个类,间接的来提供get set 方法。

  static class Wrapper
{
private View mTarget; public Wrapper(View target)
{
mTarget=target;
} public int getWidth()
{
return mTarget.getLayoutParams().width;
} public void setWidth(int width)
{
mTarget.getLayoutParams().width=width;
mTarget.requestLayout();
} }
  bt=(Button)findViewById(R.id.iv);
final Wrapper wrapper=new Wrapper(bt);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { ObjectAnimator.ofInt(wrapper, "width", 500).setDuration(5000).start();
}

也可以 用ValueAnimator  监听动画过程 然后在过程里修改view本身的属性值即可。

 public void onClick(View v) {

                 ValueAnimator valueAnimator=ValueAnimator.ofInt(1,100);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
//为了简单 我们就线性变化就行了
private IntEvaluator mEvaluator=new IntEvaluator();
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int currentValue=(Integer)animation.getAnimatedValue();
float fraction=animation.getAnimatedFraction();
bt.getLayoutParams().width=mEvaluator.evaluate(fraction,bt.getLayoutParams().width,500);
bt.requestLayout();
}
});
valueAnimator.setDuration(5000).start();

最后看看效果:

6.使用动画需要注意哪些要点?

答:1.帧动画 尽量别用,因为图片过多 过大时 就oom

2.如果你的动画是无限循环的,比如属性动画里面,那你activity退出的时候 记得 要把动画停掉 不然会memory leak

  3.view动画 再说一遍是对view的 ui层也就是用户可感知的层面做了变化,实际ui的本质没有变。如果出现使用view动画 以后异常的现象,可以尝试调用clearAnimation 恢复正常。

  4.动画要使用dp 别用px。

  5.注意对3.0一下的api 兼容,不过个人建议 还是不要支持4.0以下的设备了2016年了。

  6.开启硬件加速 对动画效率 有好处。

Android 动画 6问6答的更多相关文章

  1. Android Window 9问9答

    1.简述一下window是什么?在android体系里 扮演什么角色? 答:window就是一个抽象类,他的实现类是phoneWindow.我们一般通过windowManager 来访问window. ...

  2. Android RemoteViews 11问11答

    1.什么是RemoteView? 答:其实就是一种特殊的view结构,这种view 能够跨进程传输.并且这种remoteview 还提供了一些方法 可以跨进程更新界面.具体在android里面 一个是 ...

  3. Android动画效果之自定义ViewGroup添加布局动画

    前言: 前面几篇文章介绍了补间动画.逐帧动画.属性动画,大部分都是针对View来实现的动画,那么该如何为了一个ViewGroup添加动画呢?今天结合自定义ViewGroup来学习一下布局动画.本文将通 ...

  4. OpenGL快问快答

    OpenGL快问快答 本文内容主要来自对(http://www.opengl.org/wiki/FAQ)的翻译,随机加入了本人的观点.与原文相比,章节未必完整,含义未必雷同,顺序未必一致.仅供参考. ...

  5. Android动画学习(一)——Android动画系统框架简介

    2015-11-09补充:Drawable Animation极有可能是Frame Animation 这几天在找工作,面试的时候被问到了Android动画,之前完全没接触过这部分,直接给懵了,当然其 ...

  6. Android 动画:你真的会使用插值器与估值器吗?

    目录   目录 1. 插值器(Interpolator) 1.1 简介 定义:一个接口 作用:设置 属性值 从初始值过渡到结束值 的变化规律 如匀速.加速 & 减速 等等 即确定了 动画效果变 ...

  7. Android动画效果之Property Animation进阶(属性动画)

    前言: 前面初步认识了Android的Property Animation(属性动画)Android动画效果之初识Property Animation(属性动画)(三),并且利用属性动画简单了补间动画 ...

  8. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  9. Android动画效果之Frame Animation(逐帧动画)

    前言: 上一篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画),今天来总结下Android的另外一种动画Frame ...

随机推荐

  1. android模拟器(genymotion)+appium+python 框架执行过程中问题解答

    1.case运行过程中中文输入不进去? 答:注意事项 1)需要修改系统编码为utf-8,才能解决中文输入问题,case执行入口文件添加代码如下: import sys reload(sys) sys. ...

  2. Minifilter微过滤框架:框架介绍以及驱动层和应用层的通讯

    minifilter是sfilter后微软推出的过滤驱动框架.相比于sfilter,他更容易使用,需要程序员做的编码更简洁. 系统为minifilter专门制作了一个过滤管理器,这个管理器本身其实是一 ...

  3. Spring笔记——使用Spring进行面向切面(AOP)编程

    要进行AOP编程,首先我们要在spring的配置文件中引入aop命名空间: =================== Spring提供了两种切面声明方式,实际工作中我们可以选用其中一种: 1. 基于XM ...

  4. photoshop:css3插件

    CSS3PS是Photoshop 插件,用来将 PhotoShop 的图层如内阴影.内发光.阴影.外发光.图片圆角等效果转成用 CSS3 样式. 官方下载地址>> http://css3p ...

  5. php 写入数据到MySQL以及从MySQL获取数据,页面出现乱码的解决方法

    现象如标题. 解决思路: 1确定数据库charset是否是utf-8 a. charset不是utf-8 1, 更改数据库charset为utf-8 ALTER DATABASE db_name DE ...

  6. HDU5092——Seam Carving(动态规划+回溯)(2014上海邀请赛重现)

    Seam Carving DescriptionFish likes to take photo with his friends. Several days ago, he found that s ...

  7. Data Flow ->> Pivot

    这个组件和SQL Server的Pivot基本就是一回事.不过我观察到SSIS的Pivot只支持SUM这种聚合类型,并没有找到哪个选择可以设置聚合类型,而T-SQL语法的Pivot则支持多种聚合类型, ...

  8. cmd执行mssql脚本或者执行mysql脚本

    private static int ExecuteMSSql(DbInfo db, string sqlPath) { Console.WriteLine("=============== ...

  9. OkHttp使用进阶(译自OkHttp官方教程)

    没有使用过OkHttp的,可以先看OkHttp使用介绍 英文版原版地址 Recipes · square/okhttp Wiki 同步get 下载一个文件,打印他的响应头,以string形式打印响应体 ...

  10. Android之开发杂记(二)

    1.android 4.0 以后 高版本没有虚拟菜单键