【AndroidのViewを制する】 ZoomButtonsControllerを使いこなす

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

今回紹介するZoomButtonsControllerは今までのViewとは異なります、そもそもViewを継承していません。
ZoomButtonsControllerは以前紹介したZoomControlsを内包しています。
ZoomButtonsControllerはコンストラクタで渡されるView上にZoomControlsを表示したり、表示したZoomControlsを一定時間で非表示に変更することができます。

ZoomButtonsControllerとは

ZoomButtonsControllerを使うとコンストラクタで渡されたView上にZoomControlsを表示することができます。
    // ZoomControlsを表示するViewをインスタンス化する。
    ImageView imageView = new ImageView(this);
    imageView.setImageResource(R.mipmap.ic_launcher);
    // ZoomControlsを表示するViewのインスタンスをコンストラクタに渡す。
    final ZoomButtonsController zoomButtonsController = new ZoomButtonsController(imageView);
    // ZoomButtonsControllerを設定したViewを表示する。
    setContentView(imageView);

ZoomButtonsController#setVisibleとZoomButtonsController#isVisible

ZoomButtonsControllerを設定したView上にZoomControlsを表示するときはZoomButtonsController#setVisibleを使用します。
表示されたZoomControlsは設定にもよりますが、一定時間が経過すると自動的に消えます。
また、ZoomButtonsController#isVisibleはZoomControlsが表示されているかどうかを返却します。
    // ZoomControlsを表示するViewをインスタンス化する。
    ImageView imageView = new ImageView(this);
    imageView.setImageResource(R.mipmap.ic_launcher);
    
    // ZoomControlsを表示するViewのインスタンスをコンストラクタに渡す。
    final ZoomButtonsController zoomButtonsController = new ZoomButtonsController(imageView);
    // ImageViewをクリックリスナーを設定
    imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // ZoomControlsを表示する
            zoomButtonsController.setVisible(true);
        }
    });

    // ZoomButtonsControllerを設定したViewを表示する。
    setContentView(imageView);

ZoomButtonsController#setAutoDismissedとZoomButtonsController#isAutoDismissed

ZoomButtonsController#setAutoDismissedは表示されたZoomControlsが自動で消えるかどうかを設定することができます。
ZoomButtonsController#isAutoDismissedは表示されたZoomControlsが自動で消えるかどうかを取得することができます。
    // ZoomControlsを表示するViewをインスタンス化する。
    ImageView imageView = new ImageView(this);
    imageView.setImageResource(R.mipmap.ic_launcher);
    
    // ZoomControlsを表示するViewのインスタンスをコンストラクタに渡す。
    final ZoomButtonsController zoomButtonsController = new ZoomButtonsController(imageView);
    // ImageViewをクリックリスナーを設定
    imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // ZoomControlsを表示する
            zoomButtonsController.setVisible(true);
        }
    });
    // ZoomControlsが消えないように設定する
    zoomButtonsController.setAutoDismissed(false);
    // ZoomButtonsControllerを設定したViewを表示する。
    setContentView(imageView);

ZoomButtonsController#setOnZoomListener

ZoomButtonsController#setOnZoomListenerはZoomControlsの各ボタンをクリックした時やZoomControlsが表示・非表示が切り替わった時に呼ばれるコールバックインターフェースを設定するメソッドです。
OnZoomListener#onVisibilityChangedは表示・非表示が切り替わった時に呼ばれるコールバックメソッドです。 引数はZoomControlsが表示状態になった時にtrue、ZoomControlsが非表示状態になった時にfalseとなります。 OnZoomListener#onZoomはズームアウトボタンやズームインボタンがクリックされた時に呼ばれるコールバックメソッドです。 引数はズームインボタンがクリックされた時にtrue、ズームアウトボタンがクリックされた時にfalseとなります。
    ImageView imageView = new ImageView(this);
    imageView.setImageResource(R.mipmap.ic_launcher);

    final ZoomButtonsController zoomButtonsController = new ZoomButtonsController(imageView);
    imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            zoomButtonsController.setVisible(true);
        }
    });
    zoomButtonsController.setOnZoomListener(new ZoomButtonsController.OnZoomListener() {
        @Override
        public void onVisibilityChanged(boolean visible) {
            String message = visible ? "表示" : "非表示";
            Toast.makeText(ZoomButtonsControllerActivity.this, "Called onVisibilityChanged : " + message, Toast.LENGTH_SHORT).show();

        }

        @Override
        public void onZoom(boolean zoomIn) {
            String message = zoomIn ? "ズームイン" : "ズームアウト";
            Toast.makeText(ZoomButtonsControllerActivity.this, "Called onZoom : " + message, Toast.LENGTH_SHORT).show();
        }
    });
    setContentView(imageView);

ZoomButtonsController#setZoomInEnabledとZoomButtonsController#setZoomOutEnabled

ZoomButtonsController#setIsZoomInEnabledはズームインボタンの無効有効を設定するメソッドです。
ZoomButtonsController#setIsZoomOutEnabledはズームアウトボタンの無効有効を設定するメソッドです。
    ImageView imageView = new ImageView(this);
    imageView.setImageResource(R.mipmap.ic_launcher);

    final ZoomButtonsController zoomButtonsController = new ZoomButtonsController(imageView);
    imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            zoomButtonsController.setVisible(true);
        }
    });
    // ズームインボタンを無効化する
    zoomButtonsController.setZoomInEnabled(false);
    // ズームアウトボタンを無効化する
    zoomButtonsController.setZoomOutEnabled(false);
    setContentView(imageView);

ZoomButtonsController#setZoomSpeed

ZoomButtonsController#setZoomSpeedはロングクリック時にクリックイベントを発生させる間隔をミリ秒で指定する。
    ImageView imageView = new ImageView(this);
    imageView.setImageResource(R.mipmap.ic_launcher);

    final ZoomButtonsController zoomButtonsController = new ZoomButtonsController(imageView);
    imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            zoomButtonsController.setVisible(true);
        }
    });
    zoomButtonsController.setOnZoomListener(new ZoomButtonsController.OnZoomListener() {
        @Override
        public void onVisibilityChanged(boolean visible) {
            String message = visible ? "表示" : "非表示";
            Toast.makeText(ZoomButtonsControllerActivity.this, "Called onVisibilityChanged : " + message, Toast.LENGTH_SHORT).show();

        }

        @Override
        public void onZoom(boolean zoomIn) {
            String message = zoomIn ? "ズームイン" : "ズームアウト";
            Toast.makeText(ZoomButtonsControllerActivity.this, "Called onZoom : " + message, Toast.LENGTH_SHORT).show();
        }
    });
    // 1秒間隔でクリックイベントを発生させる
    zoomButtonsController.setZoomSpeed(1000);
    setContentView(imageView);

ZoomButtonsController#getContainerとZoomButtonsController#getZoomControls

ZoomButtonsControllersはZoomControlsを内包しています、ZoomButtonsController#getZoomControlsはこのZoomControlsを取得するメソッドです。
ZoomButtonsController#getContainerはZoomControlsの親Viewを取得するメソッドです。
    ImageView imageView = new ImageView(this);
    imageView.setImageResource(R.mipmap.ic_launcher);

    final ZoomButtonsController zoomButtonsController = new ZoomButtonsController(imageView);
    imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            zoomButtonsController.setVisible(true);
        }
    });
    ((ZoomControls)zoomButtonsController.getZoomControls()).setOnZoomInClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(ZoomButtonsControllerActivity.this, "ズームインボタンを上書きする", Toast.LENGTH_SHORT).show();
        }
    });
    setContentView(imageView);