부모 외부로 이동하면 Android보기가 사라짐
이 LinearLayout 안에 LinearLayout과 ImageView가 있습니다.
ImageView에 대한 번역 효과가 있습니다.
// v = ImageView
ObjectAnimator animation2 = ObjectAnimator.ofFloat(v, "translationY", 200);
animation2.setDuration(3000);
animation2.setTarget(v);
animation2.start();
애니메이션이 작동하지만 ImageView가 LinearLayout 외부로 이동하면 사라집니다.
여기에서 문제를 볼 수 있습니다 : http://screenr.com/zoAH
LinearLayout의 높이를 수정하지 않고 어떻게 고칠 수 있습니까?
ImageView가 속한 ViewGroup을 찾아 ViewGroup.setClipChildren (false)를 적용 합니다. 기본적으로 자식 그리기는 부모 ViewGroup의 경계로 제한됩니다.
이를 발생시킬 수있는 두 가지 속성이 있습니다 : clipChildren 및 clipToPadding. 개체가 애니메이션을 적용 할 경계가있는 각 부모 ViewGroup에 대해 clipChildren을 false로 설정해야합니다. 또한 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);
모든 부모에서 클리핑을 비활성화하려면 호출 하십시오.
편집 :
확장 기능으로서의 Kotlin 버전 :
fun View.setAllParentsClip(enabled: Boolean) {
var parent = parent
while (parent is ViewGroup) {
parent.clipChildren = enabled
parent.clipToPadding = enabled
parent = parent.parent
}
}
요구: yourView.setAllParentsClip(false)
제 경우에는 clipChildren이 clipToPadding="false"
문제를 해결 했지만 아무것도하지 않았습니다 . 그림을 이동.
보기 높이를 가져온 다음 슬라이드 할 위치에 높이 비율을 추가합니다.
public void SlideUp(View view){
float height = view.getHeight();
TranslateAnimation animate = new TranslateAnimation(0,0,0,0);
animate.setDuration(500);
animate.setFillAfter(true);
view.animate().translationY((float)(0-0.62*height)).start();
view.startAnimation(animate);
}
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();
참고 URL : https://stackoverflow.com/questions/18048997/android-view-disappearing-when-go-outside-of-parent
'Program Tip' 카테고리의 다른 글
FTP를 통한 Python 스크립트 업로드 파일 (0) | 2020.12.06 |
---|---|
Xcode 6 Swift 코드 완성이 작동하지 않음 (0) | 2020.12.06 |
마지막 플렉스 항목을 컨테이너 끝에 배치 (0) | 2020.12.06 |
ButterKnife 8.0.1이 작동하지 않음 (0) | 2020.12.06 |
API 26 (Android) 용 Gradle 설정 (0) | 2020.12.06 |