数日間調査しましたが、解決しませんでした。この質問の問題は私のものと似ていますが、これを使用しても問題を解決できませんでした。
明らかにされたビューが他のビューの上に膨らむwhatsappのように、円形の明らかにする効果を得ようとしました。私の場合、現在のJavaクラスのlayout.xmlに既に存在するレイアウトにアニメーションを適用すると、正常に動作しますが、問題は、私の場合はLInearLayoutである明らかにするレイアウトが他のコンテンツ(その下にある)をプッシュすることです) ダウンして、その場所を作ります。
この場合の私のレイアウトは次のとおりです。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<io.codetail.widget.RevealFrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/reveal_items"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageButton
android:layout_width="70dp"
android:layout_height="70dp"
android:background="@drawable/icon_camera" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Gallery" />
</LinearLayout>
<!-- Other 2 icons here-->
</LinearLayout>
</io.codetail.widget.RevealFrameLayout>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Enter Name" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="OK" />
LinearLayout/>
私の公開レイアウトは EditText とボタンを押し下げて配置しますが、それらの上に公開したいと思います..
次に、明らかにするビュー コードを別の Reveal-layout.xml ファイルに配置し、そのレイアウトを Javacode で作成された View(私の場合は LinearLayout) に拡張しようとしました。そして、この LinearLayout に明らかにする効果を適用しようとしましたが、「デタッチされたビューでこのアニメーターを開始できません」という例外が発生します。
私の Revealing-layout.xml は次のようになります
<io.codetail.widget.RevealFrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/reveal_items"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageButton
android:layout_width="70dp"
android:layout_height="70dp"
android:background="@drawable/icon_camera" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Gallery" />
</LinearLayout>
<!-- Other 2 icons here-->
</LinearLayout>
</io.codetail.widget.RevealFrameLayout>
ボタンをクリックすると、関数RevealView();が呼び出されます。 以下のようになります。
public void revealView()
{
int cx = (mRevealView.getLeft() + mRevealView.getRight());
int cy = mRevealView.getTop();
int radius = Math.max(mRevealView.getWidth(), mRevealView.getHeight());
// and all animations here, the animator is working fine so i did not put the code here
}
MainActivity onCreate()でmRevealView=(LinearLayout)findviewbyid(R.id.reveal_items)としてmRevealView を初期化し、インフレートしてビューを割り当てると、アニメーターはこのビューで正常に動作します。しかし、 mRevealView=new LinearLayout(this)のような新しいレイアウトを作成し、そのパラメータなどをすべて設定しようとすると、アニメーターを適用するとこのエラーが発生します。 切り離されたビューでこのアニメーションを開始することはできません。
ここで私が間違っていることは、誰でも私に提案できます。