我已经成功地使用 setZ()
函数实现了一个拖动滑动动画,如下所示:
dragAnimSet.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
((ViewGroup)sourceParent.getParent()).setClipChildren(false);
for(int a = 0; a < ifvList.size(); a++)
{
if(a != sourceIndex && a != indexInListener)
{
ifvList.get(a).setZ(-20);
}
}
if(sourceParent.indexOfChild(toReplace) != -1 && toReplaceParent.indexOfChild(source) != -1) {
source.setZ(-10);
} else {
sourceParent.setZ(-10);
}
}
@Override
public void onAnimationEnd(Animation animation) {
((ViewGroup)sourceParent.getParent()).setClipChildren(true);
for(int a = 0; a < ifvList.size(); a++)
{
if(a != sourceIndex && a != indexInListener)
{
ifvList.get(a).setZ(0);
}
}
source.setZ(0);
sourceParent.setZ(0);
}
@Override
public void onAnimationRepeat(Animation animation) {}
});
但是,我在目标设备中使用此应用程序的 API 至少为 15,而函数 setZ()
仅适用于 API 21 及更高版本。
bringToFront()
或更改绘制顺序将不起作用,因为它是 LinearLayout,前者只会将 View 带到列表的末尾。
我怎样才能至少为 API 21 以下的设备模拟 setZ()
的效果?
最佳答案
在 Lollipop 之前没有提升,因此没有 setZ()
:绘图的顺序总是按照添加 View 的顺序。
有ViewCompat.setZ() ,但显然它在 Lollipop 之前没有做任何事情,只是允许您删除任何版本检查。
关于android - 如何为 API 21/Lollipop 以下的设备实现 setZ()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38319581/