2013年5月10日金曜日

画面遷移(ViewFlipper)

Viewを切り替えることができるViewFlipper
ViewFlipperにレイアウトを追加すると、追加した順番で、
1つ1つのViewが表示されます。

次のViewに
showNext();

前のViewに
showPrevious();

スライドショーの再生
startFlipping();

スライドショーの停止
stopFlipping();

スライドショーを勝手に始める
setAutoStart(boolean);

スライドショーの間隔
setFlipInterval(int);

■サンプルソース
package com.pulepule.linear;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.NumberPicker;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.NumberPicker.OnValueChangeListener;
import android.widget.ViewFlipper;

public class MainActivity extends Activity implements OnClickListener{
 
    //ViewFlipperを宣言
    private ViewFlipper oViewFliper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //基レイアウトの作成
        LinearLayout oLayout = new LinearLayout(getApplicationContext());
        oLayout.setOrientation(LinearLayout.VERTICAL);
        //基レイアウトを画面に設定
        setContentView(oLayout);

        //ViewFlipperの生成
        oViewFliper = new ViewFlipper(getApplicationContext());
        //自動でスライドショーを始める
        oViewFliper.setAutoStart(false);
        //スライドショーの感覚を指定する
        oViewFliper.setFlipInterval(1000);
        //ViewFlipper、1ページ目、2ページ目の作成と共に追加
        oViewFliper.addView(Make_Text(1, "1ページ目"));
        oViewFliper.addView(Make_Text(2, "2ページ目"));

        //ViewFlipper、3ページ目の作成
        //子layoutを作成
        LinearLayout oViewFliperChildLayout = new LinearLayout(getApplicationContext());

        //ImageViewの生成
        ImageView oImage = new ImageView(getApplicationContext());
        //ImageViewに画像を設定
        oImage.setImageResource(R.drawable.ic_launcher);

        //子layoutに作成したtextviewやら、画像を追加
        oViewFliperChildLayout.addView(Make_Text(3, "3ページ目"));
        oViewFliperChildLayout.addView(oImage);

        //ViewFlipper、3ページ目に子Layoutを追加
        oViewFliper.addView(oViewFliperChildLayout);

        //ViewFlipperをレイアウト(setVontentViewした)に追加
        oLayout.addView(oViewFliper);

        //ボタンの作成
        oLayout.addView(Make_Button(4, "次へ"));
        oLayout.addView(Make_Button(5, "戻る"));
        oLayout.addView(Make_Button(6, "スライドショー再生"));
        oLayout.addView(Make_Button(7, "スライドショー停止"));
    }

    private TextView Make_Text(int id, String sTitle){
        TextView tv = new TextView(getApplicationContext()); 
        tv.setText(sTitle);
        tv.setId(id);
        return tv;
    }
 
    private Button Make_Button(int id, String sTitle){
        Button btn = new Button(getApplicationContext()); 
        btn.setText(sTitle);
        btn.setTag(sTitle);
        btn.setId(id);
        btn.setOnClickListener(this);
        return btn;
    }

    @Override
    public void onClick(View v) {
        Log.d("ボタン",(String) v.getTag());
        if (v.getTag().equals("次へ")){
            oViewFliper.showNext();
        }else if (v.getTag().equals("戻る")){
            oViewFliper.showPrevious();
        }else if (v.getTag().equals("スライドショー再生")){
            oViewFliper.startFlipping();
        }else if (v.getTag().equals("スライドショー停止")){
            oViewFliper.stopFlipping();
        }
    }
}

■実行結果







最終ページで次ボタンを押すと、最初のページに遷移して、
最初のぺージで戻るボタンをおすと最終ページに遷移するのが確認できると思います。


1つのソースコードで複数の画面を制御できるのが魅力です。

0 件のコメント:

コメントを投稿