2012-02-09 10 views
2

私の質問はまっすぐでシンプルです。任意のアンドロイドデバイスでカメラアプリを開きます。ポートレートモード(デフォルト90度)には、Flash、Image Capture、Accessing Galleryなどのカメラ機能のボタンで構成される下部フレームがあります。デバイスを任意の方向(180度または0度)で回転させ、下部バーは、デバイスのメニューボタンの位置のすぐ横のウィンドウスペースに留まります。その機能はどのように達成されていますか?デバイスの向きが変化するようにフレームの特定の場所にフレームを固定することにより、デバイスの座標系(ビュー/ウィンドウ全体の各フレームのXとY値の変更)を再構成することは、フレームを再描画する際に影響を与えません。レイアウトXMLファイルに属性を指定することで、これを簡単に達成できますか?それとも複雑なコードをプログラミングする必要がありますか?プログラミングが唯一の選択肢ならば、私はそれをできるだけ単純化しておきたいと考えています。アンドロイドのビューでレイアウトを固定する

ありがとうございました。

+0

私は公式のCamera.apkソースコードを探していました。そこからいくつかのソリューションを見た。デフォルトの公式アプリがかなり複雑な設定でOpen GL APIを使って実際にたくさんのGraphicsパッケージコードを使用しているようです。私が持っているタイムラインでは、RelativeLayoutのlayout_align *アトリビュートを使用したり、オリエンテーションの変更を処理したり、onConfigurationChangedメソッドで新しいレイアウトパラメータを渡したりすることもあります。私が望むものを達成するのに成功した場合、数日後に投稿されます。 – AndroidRocks

+0

アクティビティのコンテンツビュー全体をデバイスウィンドウにロック/フリーズ/修正/アンカーする方法があります。これにより、方向変更によってアクティビティでビューがまったく再描画されません。私はトラフィックジャム(ゲームアプリ)は、モトローラXoomのタブレットでそれを行います知っている。それは私のために完全に動作します。 – AndroidRocks

+0

明らかに、アクティビティのウィンドウを固定するのは簡単です。 android:screenOrientationはそれを正確に行います。右下の私の鼻と私はデヴァイガードを調べることを心配したことはありません。 – AndroidRocks

答えて

0

回しアニメーションを使用する必要があります。それがお役に立てば幸いです。 1)マニフェストファイル内のアクティビティ宣言のandroid:screenOrientation属性を使用して表示ウィンドウが特定の方向に固定されている場合、レイアウトファイルのViewGroup実装にandroid:layoutAnimation属性を使用できます。この属性は、使用すべき変換アニメーションファイルのいずれかを指すlayoutAnimationファイルを取ります。 2)拡張されたレイアウトがプログラムによって参照される場合、レイアウトアニメーションは、異なる変換アニメーションファイルを使用する場合と、必要に応じて、プログラムコード内で複数回動的に実行できます。

1

レイアウトのどの部分にもビューを固定するには、相対レイアウトを使用します。相対レイアウトが初めての方は、チュートリアルを試してみてください。

アンドロイドの相対的なレイアウトにビジュアルガイド

http://knowledge.lapasa.net/?p=334

+0

あなたのチュートリアルはかなり有益です。しかし、相対的なレイアウトと子ビューは、 - android:configChanges = "orientation"というアクティビティをロックしているにもかかわらず、向きの変更のために再描画されます。私が探しているのは、デバイスの向きにかかわらず、ビュー/レイアウトをウィンドウ内の特定の場所(カメラアプリのキャプチャ画像ボタンとよく似ている、通常はデバイスボタンのすぐ上に配置)に固定することです。申し訳ありませんが、私はあなたのチュートリアルがあまり役に立たないと知っています。 – AndroidRocks

+0

オハイオ州私は今、私は肖像画や風景のための旗があると思うが、他の2つの可能性はないと思う。表示するレイアウトを決定するために加速度計を試してみませんか? –

+0

Naa !!!加速度計はそれを過度に複雑にするだけです。私は多くのレイアウト、地域の座標を追跡し、常にViewGroup.removeViewとViewGroup.addView(index、view)を呼び出し続けなければならないでしょう。確かにそれをすべて危険にさらし、複雑な方法で行く気分にはならない。 OpenGLもかなり時間がかかります。 – AndroidRocks

関連する問題