質問: スライドアップ/ダウンアニメーションでビューを表示および非表示にする 可視性を変更するたびにレイアウトを上または下に押すlinearlayoutを使用して、表示または非表示にするanimationがあります。私はそこにいくつかのサンプルを見ましたが、それらのどれも私のニーズに合いません。アニメーション用に2つのxmlファイルを作成しましたが、linearlayoutの可視性を変更したときにそれらの開始方法がわかりません。
回答: 私は受け入れられた答えを適用することを理解するのに苦労していました。もう少し文脈が必要でした。私はそれを考え出したので、これは完全な例です: mainactivity.java public class mainactivity extends appcompatactivity { button mybutton; view myview; boolean isup; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); myview = findviewbyid(r.id.my_view); mybutton = findviewbyid(r.id.my_button); // initialize as invisible (could also do in xml) myview.setvisibility(view.invisible); mybutton.settext("slide up"); isup = false; } // slide the view from below itself to the current position public void slideup(view view){ view.setvisibility(view.visible); translateanimation animate = new translateanimation( 0, // fromxdelta 0, // toxdelta view.getheight(), // fromydelta 0); // toydelta animate.setduration(500); animate.setfillafter(true); view.startanimation(animate); } // slide the view from its current position to below itself public void slidedown(view view){ translateanimation animate = new translateanimation( 0, // fromxdelta 0, // toxdelta 0, // fromydelta view.getheight()); // toydelta animate.setduration(500); animate.setfillafter(true); view.startanimation(animate); } public void onslideviewbuttonclick(view view) { if (isup) { slidedown(myview); mybutton.settext("slide up"); } else { slideup(myview); mybutton.settext("slide down"); } isup = !isup; } } activity_mail.xml <?xml version="1.0" encoding="utf-8"?> <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:context="com.example.slideview.mainactivity"> <button android:id="@+id/my_button" android:layout_centerhorizontal="true" android:layout_margintop="100dp" android:onclick="onslideviewbuttonclick" android:layout_width="150dp" android:layout_height="wrap_content"/> <linearlayout android:id="@+id/my_view" android:background="#a6e1aa" android:orientation="vertical" android:layout_alignparentbottom="true" android:layout_width="match_parent" android:layout_height="200dp"> </linearlayout> </relativelayout> ノート この記事 のおかげで私を正しい方向に向けることができました。このページの他の答えよりも役に立ちました。 画面上のビューから始めたい場合は、それをinvisibleとして初期化しないでください。 画面外で完全にアニメートしているので、それをinvisibleに戻す必要はありません。ただし、画面外で完全にアニメーション化していない場合は、アルファアニメーションを追加してanimatorlisteneradapterを使用して可視性を設定できます。 プロパティアニメーションドキュメント