【AndroidのViewを制する】 ZoomButtonsControllerを使いこなす
今回紹介する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);