以下代码实现的效果是:

BoundOpenView从居中移动到顶部,移动完后,BoundSendView从隐藏变为显示,并从顶部移动BoundOpenView下方20dp处,同时透明度慢慢增加。

private void BoundOpenViewAnimation() {
Log.i(TAG, "BoundOpenViewAnimation");
final int top = BoundOpenView.getTop()
- DensityUtil.dip2px(mContext, 20);
final int height = BoundOpenView.getHeight();
TranslateAnimation animation = new TranslateAnimation(0, 0, 0, 0 - top);
animation.setDuration(200);// 设置动画持续时间
BoundOpenView.clearAnimation();
BoundOpenView.setAnimation(animation);
animation.setFillAfter(true);
// ** 开始动画 *//*
animation.setAnimationListener(new AnimationListener() { @Override
public void onAnimationEnd(Animation animation) {
//BoundOpenView.clearAnimation();// 解决移动后闪烁现象
TranslateAnimation anim = new TranslateAnimation(0, 0, 0,
0);
BoundOpenView.setAnimation(anim);
//解决输入法弹出后位置回复原状
RelativeLayout.LayoutParams lp = new RelativeLayout
.LayoutParams(BoundOpenView.getWidth(),BoundOpenView.getHeight());
//lp.topMargin=DensityUtil.dip2px(mContext, 20);
lp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
BoundOpenView.setLayoutParams(lp);
int move = height + DensityUtil.dip2px(mContext, 20);
BoundSendViewAnimation(move);
} @Override
public void onAnimationRepeat(Animation animation) {
} @Override
public void onAnimationStart(Animation animation) { }
});
animation.startNow();
} private void BoundSendViewAnimation(int move) { Log.i(TAG, "move:"+move);
Animation translateanimation = new TranslateAnimation(0, 0, 0, move);
translateanimation.setDuration(400);// 设置动画持续时间
Animation alphaAnimation=new AlphaAnimation(0.01f,1.0f);
alphaAnimation.setDuration(500);// 设置动画持续时间
//动画叠加
AnimationSet set=new AnimationSet(true); //创建动画集对象
set.addAnimation(translateanimation); //添加位置变化动画
set.addAnimation(alphaAnimation); //添加尺寸变化动画
set.setFillAfter(true); //停留在最后的位置
set.setFillEnabled(true);
BoundSendView.clearAnimation();
BoundSendView.setAnimation(set); //设置动画
BoundSendView.setVisibility(View.VISIBLE); // ** 开始动画 *//*
set.setAnimationListener(new AnimationListener() { @Override
public void onAnimationEnd(Animation animation) {
TranslateAnimation anim = new TranslateAnimation(0, 0, 0,
0);
BoundSendView.setAnimation(anim);
RelativeLayout.LayoutParams lp = new RelativeLayout
.LayoutParams(BoundSendView.getWidth(),BoundSendView.getHeight()); lp.addRule(RelativeLayout.BELOW,R.id.bound_open_view);
lp.topMargin=DensityUtil.dip2px(mContext, 20);
BoundSendView.setLayoutParams(lp);
} @Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub } @Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub } });
set.startNow(); //启动动画
}

DensityUtil类:

import android.content.Context;  

public class DensityUtil {
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
} /**
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
}

android动画特效之解决解决移动后闪烁现象,解决输入法弹出后位置回复原状,解决两个动画叠加的更多相关文章

  1. 如何解决机器重启后MySql服务跑不起来了1067,附解决过程

    今个一位同事的mysql跑不起来了,之前还好好的,问我怎么恢复,我没在她出问题的机器上弄,在自己机器上试的,最终在CTO的指导下解决了,现记录于此. 1,首先把她的mysql安装文件夹.数据结构文件. ...

  2. CSS3和js炫酷点击按钮3D翻转动画特效

    简要教程 flipside是一款使用CSS3和js制作的炫酷点击按钮无缝过渡到确认面板的过渡动画特效.该点击按钮特效在按钮不同方向的边部点击时,产生的过渡动画特效是不一样的. 在线预览   源码下载 ...

  3. 9个超绚丽的HTML5 3D图片动画特效

    在Web 1.0时代,我们的网页中图片数量非常少,而且都是以静态图片为主.HTML5的出现,推动了Web 2.0的发展,同时也催生出了很多绚丽的HTML5图片动画特效,特别是有些还有3D的动画效果.本 ...

  4. Android输入法弹出时覆盖输入框问题

    本文来自网易云社区 作者:孙有军 当一个activity中含有输入框时,我们点击输入框,会弹出输入法界面,整个界面的变化效果与manifest中对应设置的android:windowSoftInput ...

  5. 解决Android Studio 3.0导入module依赖后unable to merge index

    解决Android Studio 3.0导入module依赖后unable to merge index 项目需要使用im, 在项目里导入了腾讯im的几个module依赖, 项目无法编译, 报错una ...

  6. Android实现Activity页面跳转切换动画特效

    了解Android程序设计的人应该知道,在Android 2.0之后有了overridePendingTransition(),其中里面两个参数,一个是前一个activity的退出,另一个activi ...

  7. [置顶] android 自定义ListView实现动画特效

    通过自定义ListView实现动画特效,被点击元素A向前移,A之前元素往后移动. 重点在于动画的实现: 具体代码如下: package com.open.widget; import java.uti ...

  8. Android ROM开发(二)——ROM架构以及Updater-Script脚本分析,常见的Status错误解决办法

    Android ROM开发(二)--ROM架构以及Updater-Script脚本分析,常见的Status错误解决办法 怪自己二了,写好的不小心弄没了,现在只好重新写一些了,上篇简单的配置了一下环境, ...

  9. Android绘图机制(四)——使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美

    Android绘图机制(四)--使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美 这里为什么不继续把自定义View写下去呢,因为最近项目 ...

随机推荐

  1. JS子元素oumouseover触发父元素onmouseout

    原文:JS子元素oumouseover触发父元素onmouseout JavaScript中,父元素包含子元素: 当父级设置onmouseover及onmouseout时,鼠标从父级移入子级,则触发父 ...

  2. 全局scope与Isolate scope通信

    AngularJS 全局scope与Isolate scope通信 在项目开发时,全局scope 和 directive本地scope使用范围不够清晰,全局scope与directive本地scope ...

  3. DirectX:函数连接两个随机filter

    函数连接两个随机filter HRESULT ConnectFilters( IBaseFilter *pSrc, IBaseFilter *pDest ) { IPin *pIn = 0; IPin ...

  4. C++中出现的计算机术语4

    adaptor(适配器) 一种标准库类型.函数或迭代器,使某种标准库类型.函数或迭代器的行为类似于第二种标准库类型.函数或迭代器.系统提供了三种顺序容器适配器:stack(栈).queue(队列)以及 ...

  5. C#中使用消息队列RabbitMQ

    在C#中使用消息队列RabbitMQ 2014-10-27 14:41 by qy1141, 745 阅读, 2 评论, 收藏, 编辑 1.什么是RabbitMQ.详见 http://www.rabb ...

  6. Oracle常用函数:DateDiff() 返回两个日期之间的时间间隔自定义函数

    首先在oracle中没有datediff()函数可以用以下方法在oracle中实现该函数的功能:1.利用日期间的加减运算天:ROUND(TO_NUMBER(END_DATE - START_DATE) ...

  7. 动态代理 原理简析(java. 动态编译,动态代理)

    动态代理: 1.动态编译 JavaCompiler.CompilationTask 动态编译想理解自己查API文档 2.反射被代理类 主要使用Method.invoke(Object o,Object ...

  8. Windows平台分布式架构实践负载均衡

    Windows平台分布式架构实践 - 负载均衡 概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Li ...

  9. 支付宝集成时的InvalidKeySpecException

    近来在集成第三方支付---支付宝,在集成的过程中严格按照支付宝开发者平台所发布的说明文档和Demo,在我的测试机上可以完美的运行,但是在别人的手机无论怎么就是调用不起来,总是弹出"remot ...

  10. psql: FATAL: role “postgres” does not exist 解决方案

    当时想做的事情,是运行一个创建数据库的脚本.找到的解决方案差不多和下面这个链接相同. http://stackoverflow.com/questions/15301826/psql-fatal-ro ...