以下代码实现的效果是:

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. 当有多于64合乎逻辑的cpu时刻,Windows 下一个Oracle db 实例启动(startup)什么时候会hang(待定)

    Bug 9772171 - Database startup hangs on Windows when machine has more than 64 cores [ID 9772171.8] 该 ...

  2. IplImage 封装释放

    IplImage是openCV库中非常重要的一个结构体,库中的图像都是保存为这个结构体后再进行操作的,详细结构例如以下: </pre><pre> typedef struct ...

  3. Jquery AJAX POST与GET之间的区别

    1:GET访问 浏览器 认为 是等幂的就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配]所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果 ...

  4. 编程算法 - 二部图确定 代码(C)

    二部图确定 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 给定一个具有n个顶点的图. 要给图上每一个顶点染色, 而且要使相邻的顶点颜色不同.  ...

  5. Spring Resources之介绍和资源接口

    1.介绍 不幸的是Java的标准的java.net.URL类和针对不同的URL前缀的标准处理器都不够充分去访问所有的低级资源.例如,美誉标准化的URL实现可能用于去范围需要从classpath中或者相 ...

  6. C语言移位运算

    移位运算有两种:>>(右移),<<(左移). a>>b表示将a的二进制值右移b位. a<<b 表示将a的二进制值左移 b位.要求 a和 b都是整型, b ...

  7. leetcode第30题--Next Permutation

    problem: Implement next permutation, which rearranges numbers into the lexicographically next greate ...

  8. 安装Visual Source Safe 2005 - 初学者系列 - 学习者系列文章

    本文介绍微软的文档管理工具Visual Source Safe 2005的安装 从下列地址获取该工具: ed2k://|file|en_vss_2005.iso|108048384|C4BEC1EC3 ...

  9. 修改servu数据库密码 servu加密方式

    项目要求可以有用户自行修改servu密码.servu可以通过odbc访问access\mysql\sqlserver数据库.我们直接通过创建web来修改就可以了. 不过问题来了,密码是加密的...通过 ...

  10. 使用POI 导入excel

    引言:最近一直在接触excel的问题,网页也有很多关于POI解析excel的资料,我也简单的整理了下,有不对地方的还望及时指正,渴望与大家交流并学习. public int importExcel(F ...