9

翻訳アニメーションを使用して卵(ImageButton)をカートン(ImageView)の外に移動していますが、一貫してクリッピングしているため、スタックオーバーフロー全体を調べて解決策を見つけましたが、すべての解決策を実装しようとした後でも、切り取った。

なぜ私のものがまだクリッピングしているのか、誰でも光を当てることができますか?ここにXMLがあります:

<?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>
4

1 に答える 1

10

わかりました、同様の問題を解決するのに約1時間無駄にしました。

いくつかの変換などを使用してオブジェクトを「手動で」アニメーション化し、postInvalidateDelayed() などを呼び出して強制的に更新していると思います。

問題は(私にとっては)トップビューで呼び出す必要があることです。そうしないと、キャンバスが更新中のアイテムに自動的にクリップされるためです。そのため、一番上のビューで invalidate() (または同様のもの) を呼び出すと、キャンバスがあまりクリップされていない状態で再描画されるはずです。

あなたの場合、2 つの「opencarton」ID が定義されていることに気付きました。おそらく、一番上のものまたは一番上の RelativeLayout を更新する必要があります。

于 2012-04-27T16:20:01.343 に答える