Android视图消失时,出去家长
我在这个LinearLayout中有一个LinearLayout和ImageView。
ImageView有翻译效果。
// v = ImageView ObjectAnimator animation2 = ObjectAnimator.ofFloat(v, "translationY", 200); animation2.setDuration(3000); animation2.setTarget(v); animation2.start();
animation工作,但当ImageView走出LinearLayout时,它正在消失。
你可以在这里看到问题: http : //screenr.com/zoAH
我怎样才能修复它,而不修改LinearLayout的高度。
findImageView所属的ViewGroup并应用ViewGroup.setClipChildren(false) 。 默认情况下,子图的绘制限于父ViewGroup的边界。
有两个属性可能导致这种情况发生:clipChildren和clipToPadding。 您将需要为每个父ViewGroup设置clipChildren为false,其对象的animation范围将超出。 你还需要设置clipToPadding到直接的父(也许更多,但我还没有看到它的情况下)。
您可以在XML中设置两个属性
android:clipChildren="false" android:clipToPadding="false"
或在代码中
viewGroup.setClipChildren(false); viewGroup.setClipToPadding(false);
我的实现。 它可能可以帮助某人:
public static void setAllParentsClip(View v, boolean enabled) { while (v.getParent() != null && v.getParent() instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) v.getParent(); viewGroup.setClipChildren(enabled); viewGroup.setClipToPadding(enabled); v = viewGroup; } }
调用setAllParentsClip(yourView, false);
在所有父母中禁用裁剪。
在我的情况下,clipChildren什么也没做,但clipToPadding="false"
修复了这个问题。 去搞清楚。
try to update camera position as in my case below: ValueAnimator lockAnimator = ValueAnimator.ofFloat(1, 0); // value from 0 to 1 lockAnimator.setDuration(500); lockAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator pAnimation) { float value = (Float) (pAnimation.getAnimatedValue()); if (value < .6 && flipped) { if (preview != null) mCanvasImage.setImageBitmap(preview); else mCanvasImage.setImageBitmap(imageBitmap); flipped = false; } if (value > .3 && value < .7) { lyt_rlt_container.setCameraDistance(lyt_rlt_container.getCameraDistance() - 100); } else { lyt_rlt_container.setCameraDistance(lyt_rlt_container.getCameraDistance() + 100); } lyt_rlt_container.setRotationY(180 * value); } }); lockAnimator.start();