android view.gone 动画,android – 如何动画View.setVisibility(GONE)
似乎没有一种简单的方法通过API来做到这一点,因为动画只是改变视图的渲染矩阵,而不是实际的大小。但是我们可以设置一个负边距来愚弄LinearLayout,认为视图越来越小。
所以我建议创建你自己的Animation类,基于ScaleAnimation,并重写“applyTransformation”方法来设置新的边距和更新布局。喜欢这个…
public class Q2634073 extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.q2634073);
findViewById(R.id.item1).setOnClickListener(this);
}
@Override
public void onClick(View view) {
view.startAnimation(new MyScaler(1.0f, 1.0f, 1.0f, 0.0f, 500, view, true));
}
public class MyScaler extends ScaleAnimation {
private View mView;
private LayoutParams mLayoutParams;
private int mMarginBottomFromY, mMarginBottomToY;
private boolean mVanishAfter = false;
public MyScaler(float fromX, float toX, float fromY, float toY, int duration, View view,
boolean vanishAfter) {
super(fromX, toX, fromY, toY);
setDuration(duration);
mView = view;
mVanishAfter = vanishAfter;
mLayoutParams = (LayoutParams) view.getLayoutParams();
int height = mView.getHeight();
mMarginBottomFromY = (int) (height * fromY) + mLayoutParams.bottomMargin - height;
mMarginBottomToY = (int) (0 - ((height * toY) + mLayoutParams.bottomMargin)) - height;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
super.applyTransformation(interpolatedTime, t);
if (interpolatedTime < 1.0f) {
int newMarginBottom = mMarginBottomFromY
+ (int) ((mMarginBottomToY - mMarginBottomFromY) * interpolatedTime);
mLayoutParams.setMargins(mLayoutParams.leftMargin, mLayoutParams.topMargin,
mLayoutParams.rightMargin, newMarginBottom);
mView.getParent().requestLayout();
} else if (mVanishAfter) {
mView.setVisibility(View.GONE);
}
}
}
}
通常的警告适用:因为我们覆盖一个受保护的方法(applyTransformation),这不能保证在未来的Android版本中工作。
android view.gone 动画,android – 如何动画View.setVisibility(GONE)相关推荐
- android组合动画还原,Android - Fragment,View动画,组合动画,属性动画
转载请注明出处:https://blog.csdn.net/mythmayor/article/details/72876871 1.什么是Fragment 片段,碎片 * 从Android 3.0 ...
- android覆盖扩散动画,[Android]多层波纹扩散动画——自定义View绘制
之前整理过一些属性动画的基本操作,这一段时间的动画相关需求都安然度过了.直到这次-- 一.另一种动画需求 多数交互中的动画都是让单个页面元素动起来,这种就很适合用属性动画实现.但是对于 多个元素.非页 ...
- android显示绘图动画,Android自定义View绘图实现渐隐动画
实现了一个有趣的小东西:使用自定义view绘图,一边画线,画出的线条渐渐变淡,直到消失.效果如下图所示: 用属性动画或者渐变填充(shader)可以做到一笔一笔的变化,但要想一笔渐变(手指不抬起边画边 ...
- android 减速动画,Android View Animation
概述 可译为视图动画,分为 缩放动画 平移动画 渐变动画 旋转动画 Android系统中定义了一个抽象类Animation来定义这种视图动画,它的具体子类如下表: 动画名称 对应的子类 xml中标签 ...
- android view退出动画,android animation——view进来退出动画
在设计android项目的时候我们有时候需要对activity的进入退出做一些动画处理,虽然android自身已经做了动画处理,但是我们需要更加炫酷的动画就需要自己去写一些动画了. 有时候不光acti ...
- android动画view上移,在Android开发中使用View制作一个引导动画
在Android开发中使用View制作一个引导动画 发布时间:2020-11-20 16:46:16 来源:亿速云 阅读:98 作者:Leah 这篇文章将为大家详细讲解有关在Android开发中使用V ...
- android view过度动画,为View的切换添加过渡动画
为View的切换添加过渡动画 Author: nex3z 2016-01-09 动画效果不仅可以使得应用更加吸引人,更可以突出变化的内容,使得用户能够更好地理解应用的操作和运作方式.Android提供 ...
- 球体动画Android,Android自定义View实现简单炫酷的球体进度球实例代码
前言 最近一直在研究自定义view,正好项目中有一个根据下载进度来实现球体进度的需求,所以自己写了个进度球,代码非常简单.先看下效果: 效果还是非常不错的. 准备知识 要实现上面的效果我们只要掌握两个 ...
- android从一点展开动画,Android自定义View——从零开始实现可展开收起的水平菜单栏...
大家要是看到有错误的地方或者有啥好的建议,欢迎留言评论 前言:最近项目里要实现一个 可展开收起的水平菜单栏控件,刚接到需求时想着用自定义View自己来绘制,发现要实现 圆角.阴影.菜单滑动等效果非常复 ...
- android+清除循环动画,android自定义View之(4)-一键清除动画
android自定义View之(四)------一键清除动画 1.前言: 自己也是参考别人的一些自定义view例子,学习了一些基本的自定义view的方法.今天,我参考了一些资料,再结合自已的一些理解, ...
最新文章
- 【OpenCV 4开发详解】图像连接
- script 录制终端会话
- Jquery通过ajax请求NodeJS返回json数据
- NYOJ 674 善良的国王(树形背包DP)
- 搜索引擎学习(三)Lucene查询索引
- kafak消费者从头开始消费(消费者组)
- JAVA计时函数的库_JAVA开发常用类库UUID、Optional、ThreadLocal、TimerTask、Base64使用方法与实例详解...
- matlab 等高线_MATLAB作图实例:39:更改等高线图的填充颜色
- 记一次,jvm 内存溢出
- Ubuntu终端(terminal)及Thunderbird邮件客户端常用的快捷键
- 使用Python编写程序安排期末考试监考
- 拓端tecdat|Python进行多输出(多因变量)回归:集成学习梯度提升决策树GRADIENT BOOSTING REGRESSOR回归训练和预测可视化
- MVC中code first方式开发,数据库的生成与更新
- Android加载自定义字体出错,盘点Android使用自定义字体遇到的坑
- matlab 最小二乘解超定方程,matlab 超定方程 最小二乘解
- 蜂巢输入法android,讯飞输入法“蜂巢II”输入模型 内核提速便捷实用
- 宝塔面板php无法安装,宝塔面板php无法安装怎么办
- 对QQGame-大家来找茬的辅助工具的改进
- 一篇文章让你看懂信息安全领域的巨鳄(小白必看)
- 高情商的人都在这样表现汇报工作