[解決済み] xmlの記述でdrawableを回転させることは可能ですか?
質問
私は、再利用可能なリソース (ボタンは常に同じですが、ミラーリングまたは回転されているため) を使用して、アプリを作成しています。私は同じリソースを使用したいので、元のものとまったく同じであるが回転した3つのリソースを追加する必要はありません。しかし、XML で宣言できるものとコードを混在させたり、処理時間がかかるマトリックスで変換を行ったりすることもしたくありません。
XMLで宣言された2つの状態のボタンがありますね。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/and_card_details_button_down_left_onclick" /> <!-- pressed -->
<item android:drawable="@drawable/and_card_details_button_down_left" /> <!-- default -->
</selector>
のように、90°と45°に回転させたDrawableをボタンに割り当てて再利用します。
<Button android:id="@+id/Details_Buttons_Top_Left_Button"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/details_menu_large_button" />
で回転させることができることは知っています。
RotateDrawable
で、あるいは
Matrix
を使うこともできますが、すでに説明したように、私はこの方法が好きではありません。
XML上で直接それを達成することは可能ですか、またはそれを行うための最良の方法であると思いますか?すべてのリソースを置くが、回転させ、コードでそれらを回転させる?
--- 編集 --- dmaxiの回答は素晴らしい作品です、これはアイテムリストと組み合わせる方法です :)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<rotate
android:fromDegrees="90"
android:toDegrees="90"
android:pivotX="50%"
android:pivotY="50%"
android:drawable="@drawable/and_card_details_button_up_onclick"/>
</item>
<item>
<rotate
android:fromDegrees="90"
android:toDegrees="90"
android:pivotX="50%"
android:pivotY="50%"
android:drawable="@drawable/and_card_details_button_up_onclick"/>
</item>
</selector>
どのように解決するのですか?
私は を回転させる をXMLで表現する。
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="90"
android:toDegrees="90"
android:pivotX="50%"
android:pivotY="50%"
android:drawable="@drawable/mainmenu_background">
</rotate>
は
fromDegrees
が重要です。
基本的に、これはXMLで定義された回転アニメーションです。このアニメーションは
fromDegrees
で、回転の初期状態を定義します。そのため
toDegrees
は、アニメーションシーケンスにおける drawable の最終的な回転状態ですが、アニメーションを使用しない場合は何でもかまいません。
アニメーションとして読み込む必要がないので、アニメーションのためのリソースを割り当てるとは思えません。drawableとしては、初期状態としてレンダリングされるので
drawable
リソースフォルダに配置する必要があります。
アニメーションとして使用するには、これを
anim
リソースフォルダに置き、このようにアニメーションを開始することができます(あくまで例です)。
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.rotation);
rotation.setRepeatCount(Animation.INFINITE);
myView.startAnimation(rotation);
関連
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] 既存のカスタムテーマでXMLのアクティビティのタイトルバーを非表示にする方法
-
[解決済み] Androidのdrawableディレクトリはサブディレクトリを含むことができますか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] Android Studio - あいまいなメソッド呼び出し getClass()
-
[解決済み] edittextのテキストがメールアドレスかどうかを確認するには?
-
[解決済み] 実行に失敗しました app:processDebugResources Android Studio
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ArrayAdapter<myClass> の使用方法
-
[解決済み] Nexus 4でUSBデバッグモードを見つける方法とオンにする方法
-
[解決済み] プログラムでソフトキーボードを開く
-
[解決済み] 「KotlinとAndroidで「パラメータTを推測するのに十分な情報がありません。
-
[解決済み] AsyncTaskを複数回実行する
-
[解決済み] ArrayList<MyCustomClass>をJSONArrayに変換する。
-
[解決済み] FragmentPagerAdapterのgetItemが呼び出されない
-
[解決済み] google-services.jsonって実際何してるの?
-
[解決済み] LayoutParamsの高さを密度に依存しないピクセル数でプログラム的に設定する。
-
[解決済み] アンドロイドボタンセレクター