当前位置: 首页 > news >正文

android 动画推动,android – 动画视图从另一个视图中滑出,推动下面的视图

我相信最简单的方法是扩展Animation类并覆盖applyTransformation()来更改视图的高度,如下所示:

import android.view.View;

import android.view.ViewGroup.LayoutParams;

import android.view.animation.Animation;

import android.view.animation.Transformation;

import android.widget.LinearLayout;

public class MyCustomAnimation extends Animation {

public final static int COLLAPSE = 1;

public final static int EXPAND = 0;

private View mView;

private int mEndHeight;

private int mType;

private LinearLayout.LayoutParams mLayoutParams;

public MyCustomAnimation(View view, int duration, int type) {

setDuration(duration);

mView = view;

mEndHeight = mView.getHeight();

mLayoutParams = ((LinearLayout.LayoutParams) view.getLayoutParams());

mType = type;

if(mType == EXPAND) {

mLayoutParams.height = 0;

} else {

mLayoutParams.height = LayoutParams.WRAP_CONTENT;

}

view.setVisibility(View.VISIBLE);

}

public int getHeight(){

return mView.getHeight();

}

public void setHeight(int height){

mEndHeight = height;

}

@Override

protected void applyTransformation(float interpolatedTime, Transformation t) {

super.applyTransformation(interpolatedTime, t);

if (interpolatedTime < 1.0f) {

if(mType == EXPAND) {

mLayoutParams.height = (int)(mEndHeight * interpolatedTime);

} else {

mLayoutParams.height = (int) (mEndHeight * (1 - interpolatedTime));

}

mView.requestLayout();

} else {

if(mType == EXPAND) {

mLayoutParams.height = LayoutParams.WRAP_CONTENT;

mView.requestLayout();

}else{

mView.setVisibility(View.GONE);

}

}

}

}

要使用它,请将您的onclick()设置如下:

int height;

@Override

public void onClick(View v) {

if(view2.getVisibility() == View.VISIBLE){

MyCustomAnimation a = new MyCustomAnimation(view2, 1000, MyCustomAnimation.COLLAPSE);

height = a.getHeight();

view2.startAnimation(a);

}else{

MyCustomAnimation a = new MyCustomAnimation(view2, 1000, MyCustomAnimation.EXPAND);

a.setHeight(height);

view2.startAnimation(a);

}

}

问候。

相关文章:

  • Android10如何删除应用程序,谷歌安卓10新特性:应用卸载时可保留数据
  • android listview只显示一行数据,解决ScrollView中嵌套 listView只显示1行的问题
  • android file 4.4.1,vuejs文件在android低版本中(5.1,4.4)报错。导致页面空白
  • win7小米手机驱动安装是 其他设备内不显示android,win7系统连接小米4手机不显示“便捷式盘符”的解决方法...
  • 小米装android4.4,刷机之家教你设置小米MIUI/Android 4.4双系统(二)
  • android开源系统brvah,Brvah——一个强大的Adapter框架
  • html5改变窗口大小,js怎么改变窗口大小?js改变窗口大小方法
  • html网页设计需求分析,网页设计需求分析方法
  • 2021兰州三中高考成绩查询,2021兰州中考(初中学业水平测试)多少分考入高中 分数控制线预测分析...
  • 少数民族高考成绩查询2021,内蒙古2021高考民族汉考三级成绩查询时间及方法 什么时候查询...
  • 计算机专业英语考试题库,计算机专业英语-中国大学mooc-题库零氪
  • 图像处理与计算机视觉算法及应用 第2版,图像处理与计算机视觉算法及应用教程(源码+pdf)...
  • 在线计算机字符编码查询,字符编码
  • 举例说明应用计算机技术求解问题的步骤,下面举例说明UGFEA的应用-计算机工程学院.doc...
  • html邮件会不会是病毒,邮件病毒不得不防 去除来信病毒有另法
  • ES6指北【2】—— 箭头函数
  • JavaScript-如何实现克隆(clone)函数
  • docker-consul
  • idea + plantuml 画流程图
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • SpringBoot几种定时任务的实现方式
  • VUE es6技巧写法(持续更新中~~~)
  • 对象管理器(defineProperty)学习笔记
  • 开发基于以太坊智能合约的DApp
  • 马上搞懂 GeoJSON
  • 前嗅ForeSpider中数据浏览界面介绍
  • 前言-如何学习区块链
  • 如何利用MongoDB打造TOP榜小程序
  • 数据可视化之 Sankey 桑基图的实现
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 正则与JS中的正则
  • hi-nginx-1.3.4编译安装
  • Mac 上flink的安装与启动
  • PostgreSQL之连接数修改
  • 积累各种好的链接
  • #HarmonyOS:Web组件的使用
  • #pragma multi_compile #pragma shader_feature
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • 、写入Shellcode到注册表上线
  • . NET自动找可写目录
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET Reactor简单使用教程
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @DataRedisTest测试redis从未如此丝滑
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [Android Pro] AndroidX重构和映射