質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

4613閲覧

Androidでアニメーションが完全に終了してからviewのサイズを変える

andand

総合スコア5

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/06/03 02:25

初めて質問させていただきます。最近Androidの開発を始めました。

実現したいのは、チェックボックスがチェックされたさいにEditTextがゆっくり上から降りくる、チェックボックスのチェックが外れた際にゆっくに上に動いて消えていくというものです。

現状はチェックボックスがチェックされた場合EditTextがゆっくり降りてくることはできたのですが、チェックが外された際に急にEditTextが消えてしまいます。

MainActivity.java

childView = (EditText)findViewById(R.id.childview);
chkbox = (CheckBox)findViewById(R.id.checkBox);
chkbox2 = (CheckBox)findViewById(R.id.checkBox2);
inAnimation = (Animation) AnimationUtils.loadAnimation(this, R.anim.in_animation);
outAnimation= (Animation) AnimationUtils.loadAnimation(this, R.anim.out_animation);

chkbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // ビューが表示されてるか判定 if(childView.getVisibility() == View.GONE){ // アニメーションしながらViewを表示 childView.startAnimation(inAnimation); childView.setVisibility(View.VISIBLE); } else{ // アニメーションしながらViewを隠す childView.startAnimation(outAnimation); childView.setVisibility(View.GONE); } } }); chkbox2.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view){ if(childView2.getVisibility() == View.GONE){ childView2.startAnimation(inAnimation); childView2.setVisibility(View.VISIBLE); } else{ childView2.startAnimation(outAnimation); childView2.setVisibility(View.GONE); } }

<LinearLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_below="@+id/linearLayout" >

<EditText android:id="@+id/childview" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:text="child view here!!" android:fontFamily= "sans-serif-light" android:textSize="30sp" android:textColor="#e2f2f8" android:gravity="center" android:visibility="gone" android:background="#17abe1"/> </LinearLayout>

in_animation

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:fillAfter="false" android:fromXDelta="0" android:fromYDelta="-40%" android:toXDelta="0" android:toYDelta="0" /> </set>

個人的にはアニメーションが完了する前にchildviewがgoneになりViewのサイズが変わってしまったのではないかと思っています。

最近開発を始めたので上手く質問できてないと思いますが、何卒よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Viewが消えてしまう問題は、想定されている通りです。

AnimationListenerを実装し、Animationのインスタンスに設定することで、
アニメーションの開始、終了などの通知を受け取ることが出来ます。

Animation#setAnimationListener
Animation.AnimationListener

今回は、

Java

1childView2.setVisibility(View.GONE);

の処理を
Animation.AnimationListener#onAnimationEnd
の中で行うことにより、解決できると思います。

投稿2016/06/03 02:50

abs123

総合スコア1280

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

andand

2016/06/03 04:15

AnimationListenerの実装により期待通りの動きになりました! ありがとうございました。 またご縁がありましたらよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問