私はAndroidのアニメーションに非常に奇妙な問題があります。多くの異なるアプローチやコンポーネントを試しましたが、まだ説明が見つかりませんでした。FrameLayoutのビューをすばやく切り替えてアニメーション化するとビューがぼやけます
私は、ビューのコンテナであるFrameLayoutと、ボタンを持っています。
この でframeLayoutは、一度に つのビューを表示しなければならない、と私は ボタンをクリックしたとき、私は 表示別のビューにでframeLayoutをしたい、と ビューにアニメーションを開始 それはFrameLayoutから削除されたです。ここでの具体性は、は2つのビューのみを使用しており、これらの2つのビューを切り替える必要があるということです。
問題は:私は複数回が本当に速いボタンをクリックして、クリック停止すると
、二つのビューは、上から他に同時に1に示され、そして消えません。コンテナにはまだ1つのビューしか含まれていませんが...間違いなく奇妙です!
error screenshot http://i.minus.com/jDXyvUsE1LCOx.png
私は簡単な例でこれを再現することができた:あなたは以前のものはまだ実行されている、と道Iされている間のアニメーションは、ビュー上で起動されている見ることができるように
public class TestAnimActivity extends Activity implements OnClickListener {
private FrameLayout container;
private TextView current;
private TextView next;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
current = new TextView(this);
current.setText("View 1 YEAH");
next = new TextView(this);
next.setText(" View 2 DOH");
container = (FrameLayout) findViewById(R.id.container);
container.addView(current);
findViewById(R.id.button).setOnClickListener(this);
}
public void onClick(View v) {
Animation outAnimation = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);
current.startAnimation(outAnimation);
container.addView(next);
container.removeView(current);
TextView temp = current;
current = next;
next = temp;
}
}
それは何とか問題の原因になるかもしれません。
私はアニメ関連のコードをコメントしている場合、それは完璧に動作します:「
// next = temp;
next = new TextView(this);
next.setText("View: " + new Random().nextInt());
しかし、私はドン:私は再利用ビューを停止し、代わりに新しいビューを作成する場合は、それも完璧に動作
// Animation outAnimation = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);
// current.startAnimation(outAnimation);
新しいビューを作成したい:-)
この問題は、親からこのビューを追加/削除しているときに、ビューを何度かアニメーションを開始することに関連しているようです。
私が最初にViewAnimatorViewFlipper、と試してみました、そして、Androidのソースコードを見て、問題を再現するために、手動でこれをやってしまいました。
あなたはレイアウトが自分でテストすることができるようにしたい場合は、ここで私のmain.xmlです:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Click me fast" />
</LinearLayout>
はお時間をいただき、ありがとうございます!
これに答える時間をとっていただきありがとうございます。私はギャラリーを更新しているところに似た問題がありました。フォーカスされたアイテムはアニメーションを使って拡大していました。しかし、私がギャラリーを更新するときはいつでも、それは前のイメージを見ることができます。 – Steve