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();