【android】複数のカスタムテーマを設定で切り替える
公開日:
:
最終更新日:2012/05/30
android
背景色やアプリ全体のテーマ色を設定で変更したいという要望をもらったので実装してみました。
目次
属性値の名前を定義
res/values/attrs.xmlに使用する属性の名前を定義します。
下記を定義
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyTheme"> <attr name="myColor" format="color"></attr> <attr name="myText" format="string"></attr> <attr name="myInt" format="integer"></attr> <attr name="myRef" format="reference"></attr> </declare-styleable> </resources>
カスタムテーマを定義
res/values/theme.xmlに先程定義した属性の値を定義します。
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="テーマ名" parent="@android:style/Theme.Light.NoTitleBar"> <item name="myColor">#22AAFF</item> <item name="myText">hello theme</item> <item name="myInt">90</item> <item name="myRef">@drawable/icon</item> </style> </resources>
viewに属性を適用
実際にviewの属性値として適用していきます。
テーマ内の属性を参照する場合は
?attr/属性名
のように書きます。
<LinearLayout xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="?attr/myColor" /> <ImageView android:src="?attr/myRef" />
アプリケーションやアクティビティにテーマを適用
カスタムテーマはマニフェストファイルからも適用できますが、今回は設定により複数のテーマを切り替えるのでコードから適用します。
@Override public void onCreate(Bundle savedInstanceState) { //設定をロード if( condition ){ setTheme(R.style.テーマ1); }else{ setTheme(R.style.テーマ2); } super.onCreate(savedInstanceState); setContentView(R.layout.main); }// end of onCreate
以上です。
関連記事
-
-
【android】設定画面の作成
res/xml/preferences.xml <?xml version=&quo
-
-
【android】スリープモードに入らせない
Androidでは一定時間、操作をしないとスリープモードに入って待機状態になってしまいますが、動
-
-
【android】アプリ内課金を実装する
アプリ内課金のサンプルコードを解析します。 参考URL 公式API Android
-
-
【android】サービスの実装
ダウンロードなどActivityに依存したくない大きなバックグラウンド処理や常駐プロセスを作りたい場
-
-
【android】処理時間を計測する
パフォーマンスのリファクタリングを行うには処理時間の計測がかかせません。 SDK標準のクラスを使っ
-
-
【android】任意のスレッドで処理を行う
非UIスレッドでUIを操作したい場合に、任意の処理をUIスレッド上で実行する。 目次
-
-
【android】 Android4.1のserviceでdefaultPreferenceがおかしい
【現象】 ActivityでdefaultPreferencesで保存したデータがservice内
-
-
【android】オーバーレイでトップレイヤーにViewを表示する
常にホーム画面や他のアプリより前面にViewを表示する方法です。 前面に透明のViewGroupを
-
-
【android】DrawableとBitmap、リソースの相互変換
Resource → Bitmap Bitmap bm = BitmapFactory.dec