2011-12-21 13 views
5

ランダムな度合いでコーディングしてボタン(またはその内部のテキスト)を回転させる必要があります。任意のbutton.setRotate(x)APIレベルで11未満ですか?コード内のボタン(または内部のテキスト)を回転

+0

この質問には何が問題なのですか? –

+0

それは研究努力を示していません。 'Button'クラスのdocを開き、ブラウザの検索機能を使い、検索フィールドに' rotation'と入力すると、意味がわかります。 –

+0

私はたくさんの検索をしましたが、ほとんどの質問はボタンを押して画像を回転することについてです。ボタン自体を回転させるのではありません。 私はボタンを回転させるための実装方法がわかりません。 button.setRotate(x)は機能しません。 –

答えて

4

[OK]を見て答えは:それは複雑です。

古いアニメーションフレームワークを使用してボタンを回転することができます(例:

Button button = (Button) findViewById(R.id.button); 

// rotation from 0 to 90 degrees here 
RotateAnimation a = new RotateAnimation(0, 90); 
a.setFillAfter(true); 
a.setDuration(0); 
button.startAnimation(a); 

ここでの問題は、ボタンが回転して見えますが、正しくクリックできないことです。クリックイベントをトリガーする座標は、ボタンが回転する前のボタンの領域の座標です。

これは非常に良い解決策ではないので、おそらくButtonクラスを拡張し、ボタンキャンバスをonDraw()に回転させるカスタムビューを作成することをお勧めします。この場合はonMeasure()を上書きする必要があります。序論については、Custom Componentsを参照してください。

これ以外にも、ボタンの親レイアウトからクリックイベントを傍受し、ボタンの現在の座標内でクリックが発生したときに適切なイベントをトリガできます。しかしこれは幾分「ハッキー」です。

+0

明日私は試してみるよ!私のボタンは正方形なので、うまくいきます。 –

+1

ピボット情報を追加してアニメーションを中央に配置すると、完璧です!ありがとうございます RotateAnimation a = new RotateAnimation(0,90、アニメーション.RELATIVE_TO_SELF、0.5f、Animation.RELATIVE_TO_SELF、0.5f); –

+0

私はアンドロイドdevlopmentに新しい私を教えてください、あなたは私の回転コードと、ボタンクラスを拡張する方法を示すことができますか? – Mehdi

関連する問題