2012-04-14 2 views
9

계란 (ImageButton)을 상자 (ImageView) 외부로 이동하기 위해 변환 애니메이션을 사용하지만 일관되게 클리핑되므로 솔루션을 찾기 위해 stackoverflow 전체를 살펴 봤지만 시도한 후에 모든 솔루션을 구현하기 위해 여전히 클리핑됩니다. 나는 비슷한 문제 해결에 대한 한 시간 낭비,clipChilren 여전히 false로 설정 됨

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:gravity="top" 
    android:clipChildren="false" 
    android:clipToPadding="false" 
    android:layout_height="match_parent"> 
<ImageButton 
    android:id="@+id/imageButton1" 
    android:background="@drawable/transparentblackbackground" 
    android:layout_below="@+id/relativeLayout1" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:clipChildren="false" android:clipToPadding="false" > 
</ImageButton> 

<!-- Total Carton for Animation --> 
<RelativeLayout 
    android:orientation="vertical" 
    android:layout_width="440dp" 
    android:id="@+id/opencarton" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:clipChildren="false" 
    android:clipToPadding="false" > 



    <!-- The carton that holds the eggs --> 
    <RelativeLayout 
     android:orientation="vertical" 
     android:layout_width="260dp" 
     android:id="@+id/opencarton" 
     android:layout_height="512dp" 
     android:layout_centerInParent="true" 
     android:clipChildren="false" 
     android:clipToPadding="false"> 

     <ImageButton 
      android:id="@+id/blackbgnd" 
      android:background="@drawable/clearbackground" 
      android:layout_height="600dp" 
      android:layout_width="400dp" 
      android:clipChildren="false" 
      android:clipToPadding="false" 
      android:gravity="center"> 
     </ImageButton> 

     <!-- Top of Carton image --> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/topcomponent" 
      android:src="@drawable/topofcarton" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentRight="true" 
      android:clipChildren="false" 
      android:clipToPadding="false"> 
     </ImageView> 

     <!-- First Row Of eggs goes here in future -->  
     <ImageButton android:clipChildren="false" android:clipToPadding="false" android:layout_height="158dp" android:id="@+id/egg1" android:background="@drawable/goldegg" android:layout_width="79dp" android:layout_alignTop="@id/topcomponent" android:layout_alignParentLeft="true" android:layout_marginLeft="10dp" android:layout_marginTop="3dp"></ImageButton> 
     <ImageButton android:clipChildren="false" android:clipToPadding="false" android:layout_height="158dp" android:id="@+id/egg2" android:background="@drawable/goldegg" android:layout_width="79dp" android:layout_alignTop="@id/topcomponent" android:layout_alignParentLeft="true" android:layout_marginLeft="90dp" android:layout_marginTop="3dp"></ImageButton> 
     <ImageButton android:clipChildren="false" android:clipToPadding="false" android:layout_height="158dp" android:id="@+id/egg3" android:background="@drawable/goldegg" android:layout_width="79dp" android:layout_alignTop="@id/topcomponent" android:layout_alignParentLeft="true" android:layout_marginLeft="170dp" android:layout_marginTop="3dp"></ImageButton> 

     ................ 

</RelativeLayout> 
</RelativeLayout> 
</RelativeLayout> 

답변

10

확인 :

사람은 여기, 내 여전히 클리핑 왜 위에 되거 수있는 XML이다.

일부 변형 등을 사용하여 "수동으로"객체에 애니메이션을 적용하고 postInvalidateDelayed() 또는 이와 유사한 함수를 호출하여 새로 고침을 수행한다고 가정합니다.

톱 뷰에서 호출해야하는 문제는 새로 고침하는 항목에 캔버스가 자동으로 잘 리기 때문입니다. 따라서 매우 윗부분보기에서 invalidate() (또는 유사)를 호출하면 너무 많이 잘리지 않는 캔버스로 다시 그리기가 발생합니다.

귀하의 경우 두 개의 "opencarton"ID가 정의되어 있음을 확인했습니다. 아마도 상단 또는 가장 상단의 RelativeLayout을 새로 고쳐야 할 것입니다.

+4

감사합니다. 내 시간을 절약했습니다. –

+1

정말 고마워요, 당신의 의견은 저에게 많은 시간을 절약 해 줬습니다. – Crash

관련 문제