3 개의 ImageView (A, B 및 C)가 포함 된 RelativeLayout이 있습니다. 이들 중 하나가 클릭되면 다른 두 개는 사라지고 클릭 된 이미지는 A가있는 위치로 슬라이드됩니다. 클릭 한 이미지가 A이면 다른 두 개는 그냥 사라집니다. 이미지가 끝나면 애니메이션이 슬라이딩되고 다른 이미지 가시성 속성은 GONE으로 설정됩니다.하나의 VISIBILITY가 GONE으로 설정된보기가 겹치면 다른보기가 사라집니다.
클릭 한 이미지가 A 일 때 예상대로 정확하게 작동합니다. 그러나 클릭 한 이미지가 B 또는 C (A와 동일한 공간을 차지함) 일 때 A의 가시성을 GONE으로 설정하면 클릭 한 이미지가 사라집니다 (볼 수 없듯이).
클릭하지 않은 이미지의 표시 여부를 GONE 대신 INVISIBLE로 설정하면 아무런 문제가 없습니다. 또한 A를 클릭하면 문제가 없음을 언급해야합니다.
보기의 가시성 중 하나가 VISIBLE로 설정되고 다른 하나가 GONE으로 설정된 경우 두 개의보기가 겹치는 경우 문제가있는 것처럼 보입니다. 그런 다음 t() 중 하나를 볼 수 없습니다. 왜 이런 일이 생길까요? 가시성이있는 뷰에 의해 차지 된 공간이 VISIBLE로 다시 표시 될 때까지 화면 공간이 본질적으로 사용할 수 없게 되었습니까? 내가보기를 사라지게 설정하는 대신 제거 할 수는 있지만 확실하지는 않을 것이라고 확신합니다. 내가 사라지 길 원하면 오랫동안 그들을 다시 활성화시킬거야.
편집 : 문제는보기가 실제로 제대로 번역되지 않았 음을했다 경우 나, ObjectAnimator을 사용하는 애니메이션 코드를 변경 한
. 문제를 해결하지 못했지만 다른보기의 표시 여부를 GONE으로 설정하면 변환 된보기가 계속 사라집니다. 가시성을 GONE (예 : rootLayout.removeView (view) 사용)으로 설정하는 대신 다른보기를 삭제하더라도 실제로 문제가 지속됩니다.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="ContentDescription,PxUsage">
<ImageView
android:id="@+id/image_A"
android:layout_alignParentTop="true"
android:layout_marginLeft="image_spacing"
android:layout_width="@dimen/image_width"
android:layout_height="@dimen/image_height" />
<ImageView
android:id="@+id/image_B"
android:layout_alignParentTop="true"
android:layout_marginLeft="@dimen/image_spacing"
android:layout_toRightOf="@id/image_A"
android:layout_width="@dimen/image_width"
android:layout_height="@dimen/image_height" />
<ImageView
android:id="@+id/image_C"
android:layout_alignParentTop="true"
android:layout_marginLeft="@dimen/image_spacing"
android:layout_toRightOf="@id/image_B"
android:layout_width="@dimen/image_width"
android:layout_height="@dimen/image_height" />
</RelativeLayout>
... 그리고 몇 가지 코드 :
image.animate()
.translationXBy(slideDistance)
.setDuration(slideDuration)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
for (int i=0; i<rootLayout.getChildCount(); i++) {
if (i == selectedImage) continue;
rootLayout.getChildAt(i).setVisibility(View.GONE);
}
}
});
아직 해결 방법을 찾지 못했지만 해결 방법은 보이지 않는보기의 표시 여부를 숨김으로 설정하는 것입니다. 이상적은 아니지만 필요한 것을 해줍니다. – RTF