- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个按钮列表。当我按下按钮时, View 应该以向下的方式滑出按钮,如下所示:
开始:
中途:
结束:
我该怎么做呢?应该滑出的 View 比按钮大,所以首先将 View 隐藏在按钮后面,然后向下滑动会使 View 在按钮上方可见。那不应该发生。
关于如何解决这个问题的任何想法或示例?
最佳答案
我认为最简单的方法是扩展 Animation
类并覆盖 applyTransformation()
以更改 View 的高度,如下所示:
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);
}
}
问候。
关于android - 动画 View 滑出另一个 View ,将下面的 View 推开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13880727/
在我的 iOS 应用程序中,我使用多个 UIView,其中一次仅显示 1 个。通过按钮我可以在这些 View 之间切换。 显示新的: self.viewPage2.frame = CGRectMake
我有这个问题,我的 Bootstrap 菜单将另一个名为“title”的 div 向下推(在移动设备上,xs)到目前为止网站链接:http://20162.hosts.ma-cloud.nl/port
我花了很长时间试图让它工作。 我有一个名为“RightExtra”的部分和一个名为“RightExtraContent”的 div。我正在努力使这两个 div 可以在窗口调整到某个点时自由移动,而不会
我有一个按钮列表。当我按下按钮时, View 应该以向下的方式滑出按钮,如下所示: 开始: 中途: 结束: 我该怎么做呢?应该滑出的 View 比按钮大,所以首先将 View 隐藏在按钮后面,然后向下
尝试在一个页面上显示 20 strip 有详细信息的消息。详细信息是固定的。该消息可以从无到大约 240 个字符不等。想要显示消息的第一部分,然后在悬停时显示其余部分。 我可以很好地做到这一点,但是当
所以我有一个 div : .col-4 { width:300px; height:400px; margin-bottom:20px; } 还有一些文字背景图片: .head
我是一名优秀的程序员,十分优秀!