5

デバイスの向きが変わったときにImageButtonを回転させたい。 90°、180°、270°、360°の角度で回転し、その相対的なレイアウトは安定したままで、ボタンだけが動くはずです。これはどうすればできますか?私はいくつかの研究をしましたが、私を助けるものは何も見つかりませんでした。レイアウトを回転させずに向きが変わったときにボタンを回転させる方法は?

+0

タスクを分割する必要があります。1回転のアクティビティの再作成。回転をキャッチする。 3.ビューの回転....このすべての作品は既に答えがありますので、ここに...あなたが何も見つけられなかったと信じるのは難しいです... – Selvin

+0

私はどのように分割するのか分かりませんでしたそれらの部分に質問する。私はAndroidとJavaの新人です。私はまだ私の活動の方向が固定されているので、私は加速度計で方向を検出し、それを行う方法がないため、問題があります。 –

答えて

2

あなたはこのようなをオーバーライドすることで姿勢変化を検出することができます

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    //call your rotate method here 
} 

あなたが姿勢変更イベントを検出したら次に、あなたがこのようなボタンのアニメーション回転を行うことができます。

public void rotateView(View view) { 
    Button button = (Button) view.findViewById(R.id.some_button); 
    RotateAnimation rotateAnimation = new RotateAnimation(0, 360); 
    rotateAnimation.setDuration(2000); 
    button.startAnimation(rotateAnimation); 
} 

コンストラクタの開始角度と終了角度をRotateAnimationに設定してから、アニメーションの所要時間をミリ秒単位で設定できます。次に、アニメーション化したいビューでstartAnimation()を呼び出します。

+0

ありがとう、@ drschultz、あなたの答えは素晴らしいです、問題は私の活動の方向は固定されているとonConfigurationChangedは常に同じ結果を与えるです。この問題にどう対処するか分かっていれば、私はそれを言っただろう。 SensorEventListenerでx軸とy軸の向きをどのように検出するかについての考え方はありますか? –

+1

ディスプレイの向きが固定されていて回転できない場合、残念ながらセンサデータを使用して独自の回転値を計算する必要があります。それは物事がかなり複雑になるところです。 [Androidセンサーの詳細はこちら](http://developer.android.com/guide/topics/sensors/sensors_overview.html)、およびいくつかのコード例を参照すると、Stack Overflow [この質問はこちら](http://stackoverflow.com/questions/27106607/get-rotation-and-display-in-degrees)のように。しかし、あなたはまだセンサーのものに助けが必要な場合は、私は新しい質問を開きます。 – NoChinDeluxe

+0

この質問については、あなたの元の質問に答えるので(そして、同様の質問で他の人を助けるかもしれないので)私の答えを受け入れるようにお願いします。次に、センサーデータの実装方法に関するヘルプが必要な場合は、新しい質問を開くことができます。 – NoChinDeluxe

関連する問題