android动画特效之解决解决移动后闪烁现象,解决输入法弹出后位置回复原状,解决两个动画叠加
来源:互联网 发布:杭州那个公司淘宝美工 编辑:程序博客网 时间:2024/06/05 19:00
以下代码实现的效果是:
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() {@Overridepublic 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);}@Overridepublic void onAnimationRepeat(Animation animation) {}@Overridepublic 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() {@Overridepublic 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);}@Overridepublic void onAnimationRepeat(Animation animation) {// TODO Auto-generated method stub}@Overridepublic 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动画特效之解决解决移动后闪烁现象,解决输入法弹出后位置回复原状,解决两个动画叠加
- TranslateAnimation动画结束后的位置问题(已解决)
- Android: 解决动画完成后位置恢复到初始位置的问题
- Android: 解决动画完成后位置恢复到初始位置的问题
- PopupWindow动画结束后dismiss崩溃解决
- 解决android webview闪烁的现象
- 解决svn意外终止后,死锁现象
- STM32程序跳转后死机现象解决
- CABasicAnimation 如何解决保持移动后的位置状态不变
- 解决继承SwitchPreference后丢失动画的问题
- TranslateAnimation动画结束后位置闪烁问题
- Android解决输入法自动弹出方法大全
- 解决移动端动画卡顿问题
- wxPython之解决闪烁
- 解决Android键盘弹出后,背景图挤压变形的问题
- CoreAnimation中layer动画闪烁的原因及解决
- 仿微信清理内存图表动画(解决surfaceView闪烁问题)
- 使用双缓冲技术解决动画播放闪烁问题
- 超级楼梯
- 使用gdi和opencv截屏,并保存。
- Code Fragment-使用枚举来代表不同的状态
- Hadoop1.1.2 Eclipse 插件编译
- 圣何塞与 Microsoft 宣布该市为超过 5,000 名市府公务员选择 Office 365、Windows Azure 和 StorSimple
- android动画特效之解决解决移动后闪烁现象,解决输入法弹出后位置回复原状,解决两个动画叠加
- 史玉柱:我是怎么做游戏策划的
- pthread_detach()函数
- 表关联时的cascade属性
- json解析
- Android SurfaceView 绘图覆盖刷新及矩形刷新方法
- Android Sensor系统剖析(4.0)(下)
- 如何判断ios设备中是否安装了某款应用
- 杭电 Big Number (高精度除法)