【AndroidのViewを制する】 ViewFlipperを使いこなしてViewを一定時間で切り替える
今回、紹介するViewFlipperはViewAnimatorを継承しています。
ViewAnimatorとの違いはViewを一定間隔で切り替えることができます。
ViewFlipper#startFlippingとViewFlipper#stopFlippingを使ってフリップを開始停止する
ViewFlipper#startFlippingはフリップを開始するメソッドです。 ViewFlipper#stopFlippingはフリップを停止するメソッドです。
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
final ViewFlipper viewFlipper = new ViewFlipper(this);
// フリップするImageViewを追加する
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(1000,1000);
ImageView imageView1 = new ImageView(this);
imageView1.setLayoutParams(layoutParams);
imageView1.setImageResource(android.R.drawable.ic_menu_add);
viewFlipper.addView(imageView1);
ImageView imageView2 = new ImageView(this);
imageView2.setLayoutParams(layoutParams);
imageView2.setImageResource(android.R.drawable.ic_menu_agenda);
viewFlipper.addView(imageView2);
ImageView imageView3 = new ImageView(this);
imageView3.setLayoutParams(layoutParams);
imageView3.setImageResource(android.R.drawable.ic_menu_call);
viewFlipper.addView(imageView3);
ImageView imageView4 = new ImageView(this);
imageView4.setLayoutParams(layoutParams);
imageView4.setImageResource(android.R.drawable.ic_menu_camera);
viewFlipper.addView(imageView4);
// フリップを開始する
Button startButton = new Button(this);
startButton.setText("フリップを開始する。");
startButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewFlipper.startFlipping();
}
});
// フリップを停止する
Button stopButton = new Button(this);
stopButton.setText("フリップを停止する。");
stopButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewFlipper.stopFlipping();
}
});
linearLayout.addView(viewFlipper);
linearLayout.addView(startButton);
linearLayout.addView(stopButton);
setContentView(linearLayout);
ViewFlipper#setAutoStartを使ってフリップを自動開始する
ViewFlipper#setAutoStartは自動的にフリップを開始しするメソッドです。
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
final ViewFlipper viewFlipper = new ViewFlipper(this);
// フリップの自動開始をする
viewFlipper.setAutoStart(true);
// フリップするImageViewを追加する
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(1000,1000);
ImageView imageView1 = new ImageView(this);
imageView1.setLayoutParams(layoutParams);
imageView1.setImageResource(android.R.drawable.ic_menu_add);
viewFlipper.addView(imageView1);
ImageView imageView2 = new ImageView(this);
imageView2.setLayoutParams(layoutParams);
imageView2.setImageResource(android.R.drawable.ic_menu_agenda);
viewFlipper.addView(imageView2);
ImageView imageView3 = new ImageView(this);
imageView3.setLayoutParams(layoutParams);
imageView3.setImageResource(android.R.drawable.ic_menu_call);
viewFlipper.addView(imageView3);
ImageView imageView4 = new ImageView(this);
imageView4.setLayoutParams(layoutParams);
imageView4.setImageResource(android.R.drawable.ic_menu_camera);
viewFlipper.addView(imageView4);
linearLayout.addView(viewFlipper);
setContentView(linearLayout);
ViewFlipper#setFlipIntervalを使ってフリッップの間隔を設定する
ViewFlipper#setFlipIntervalはフリップの実行間隔をミリ秒で設定するメソッドです。フリップの開始間隔なので設定する時間がインアニメーションとアウトアニメーションの 合計時間より短い場合は前のViewが残った状態で表示されるので注意しましょう。
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
final ViewFlipper viewFlipper = new ViewFlipper(this);
// フリップの自動開始をする
viewFlipper.setAutoStart(true);
// フリップするImageViewを追加する
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(1000,1000);
ImageView imageView1 = new ImageView(this);
imageView1.setLayoutParams(layoutParams);
imageView1.setImageResource(android.R.drawable.ic_menu_add);
viewFlipper.addView(imageView1);
ImageView imageView2 = new ImageView(this);
imageView2.setLayoutParams(layoutParams);
imageView2.setImageResource(android.R.drawable.ic_menu_agenda);
viewFlipper.addView(imageView2);
ImageView imageView3 = new ImageView(this);
imageView3.setLayoutParams(layoutParams);
imageView3.setImageResource(android.R.drawable.ic_menu_call);
viewFlipper.addView(imageView3);
ImageView imageView4 = new ImageView(this);
imageView4.setLayoutParams(layoutParams);
imageView4.setImageResource(android.R.drawable.ic_menu_camera);
viewFlipper.addView(imageView4);
// インアニメーションを設定する。
AlphaAnimation inAnimation = new AlphaAnimation(0,1);
inAnimation.setDuration(300);
inAnimation.setStartOffset(300);
viewFlipper.setInAnimation(inAnimation);
// アウトアニメーションを設定する。
AlphaAnimation outAnimation = new AlphaAnimation(1,0);
outAnimation.setDuration(300);
viewFlipper.setOutAnimation(outAnimation);
// フリップの間隔を変更する
Button setFlipIntervalButton = new Button(this);
setFlipIntervalButton.setText("フリップ間隔を変更する。");
setFlipIntervalButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Random random = new Random();
int interval = (random.nextInt(10) + 1 ) * 100 + 300;
viewFlipper.setFlipInterval(interval);
Toast.makeText(ViewFlipperActivity.this, "interval:" + interval + "ミリ秒", Toast.LENGTH_SHORT).show();
}
});
linearLayout.addView(viewFlipper);
linearLayout.addView(setFlipIntervalButton);
setContentView(linearLayout);
ViewFlipper#isFlippingを使ってフリップの状態を取得する。
ViewFlipper#isFlippingを使うことでフリップが開始状態か停止状態かを返却します。
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
final ViewFlipper viewFlipper = new ViewFlipper(this);
// フリップするImageViewを追加する
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(1000,1000);
ImageView imageView1 = new ImageView(this);
imageView1.setLayoutParams(layoutParams);
imageView1.setImageResource(android.R.drawable.ic_menu_add);
viewFlipper.addView(imageView1);
ImageView imageView2 = new ImageView(this);
imageView2.setLayoutParams(layoutParams);
imageView2.setImageResource(android.R.drawable.ic_menu_agenda);
viewFlipper.addView(imageView2);
ImageView imageView3 = new ImageView(this);
imageView3.setLayoutParams(layoutParams);
imageView3.setImageResource(android.R.drawable.ic_menu_call);
viewFlipper.addView(imageView3);
ImageView imageView4 = new ImageView(this);
imageView4.setLayoutParams(layoutParams);
imageView4.setImageResource(android.R.drawable.ic_menu_camera);
viewFlipper.addView(imageView4);
// フリップを開始する
Button startButton = new Button(this);
startButton.setText("フリップを開始する。");
startButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewFlipper.startFlipping();
}
});
// フリップを停止する
Button stopButton = new Button(this);
stopButton.setText("フリップを停止する。");
stopButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewFlipper.stopFlipping();
}
});
// フリップ状態を確認する
Button isFlippingButton = new Button(this);
isFlippingButton.setText("フリップ状態を確認する。");
isFlippingButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(ViewFlipperActivity.this, "isFlipping:" + viewFlipper.isFlipping(), Toast.LENGTH_SHORT).show();
}
});
linearLayout.addView(viewFlipper);
linearLayout.addView(startButton);
linearLayout.addView(stopButton);
linearLayout.addView(isFlippingButton);
setContentView(linearLayout);