Android
 Computer >> コンピューター >  >> プログラミング >> Android

【Android】実行時にアプリのテーマを動的に変更する方法をわかりやすく解説

Androidアプリ開発では、ユーザーの好みや設定に応じてアプリの見た目を変えたいケースがあります。本記事では、実行時(ランタイム)に現在のテーマを変更する方法を、実際のコード例とともにステップごとに解説します。

テーマを実行時に切り替えるには、setTheme()メソッドを使用します。最も重要なポイントは、このメソッドをsetContentView()より前に呼び出すことです。呼び出す順序が逆になると、テーマが正しく適用されませんので注意してください。

ステップ1:新規プロジェクトを作成する

Android Studioを起動し、「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項目をすべて入力し、セットアップを完了させてください。

ステップ2:レイアウトファイルを用意する

res/layout/activity_main.xml に以下のコードを追加します。ここでは、画面中央に「Hello World!」と表示されるシンプルなTextViewを配置しています。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
   xmlns:tools="https://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity">
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello World!"
      android:layout_centerInParent="true"/>
</RelativeLayout>

ステップ3:MainActivity.java を編集する

src/MainActivity.java に以下のコードを追加します。onCreate()内で setTheme(android.R.style.Theme_Black) を呼び出すことで、黒を基調としたシステム標準のテーマが適用されます。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setTheme(android.R.style.Theme_Black);
      setContentView(R.layout.activity_main);
   }
}

ここでのポイントは、setTheme()setContentView()の直前に記述している点です。これにより、ビューが画面に描画される前にテーマが確実に反映されます。

ステップ4:AndroidManifest.xml を確認する

androidManifest.xml には以下のように記述します。デフォルトでは AppTheme が指定されていますが、実行時にsetTheme()で上書きされるため、そのまま利用できます。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sampe">
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

アプリを実行して確認しよう

それでは、作成したアプリを実行してみましょう。実機のAndroidスマートフォンをPCに接続し、Android Studioでプロジェクト内のアクティビティファイルを開いて、ツールバーの「Run」アイコンをクリックします。デバイスを選択して起動すると、以下のようにテーマが適用された画面が表示されます。

【Android】実行時にアプリのテーマを動的に変更する方法をわかりやすく解説

補足:ユーザー操作でテーマを切り替えるには

ボタン操作などをきっかけにテーマを動的に切り替えたい場合は、選択されたテーマをSharedPreferencesなどに保存し、recreate()メソッドでアクティビティを再生成するのが一般的な手法です。アクティビティが再作成されるとonCreate()が再度実行されるため、保存しておいたテーマをsetTheme()で適用すれば、画面全体のデザインを即座に変更できます。

  1. Androidスマホでアプリのアイコンを変更する方法|Nova Launcherと専用アプリの使い方

    Android OSの最大の魅力は、その高いカスタマイズ性にあります。端末に入れるアプリの選択から、インターフェース全体、画面遷移エフェクト、外観、さらにはアイコンに至るまで、ほぼすべてを自由に変更できます。もし今のスマホの見た目に飽きてしまったら、思い切ってイメージチェンジしてみましょう。テーマの変更、新しい壁紙の設定、クールなトランジション効果やアニメーションの追加、カスタムランチャーの導入、デフォルトアイコンをおしゃれなものに置き換えるなど、Androidはユーザーインターフェースを変えることで、古い端末をまるで新品のように生まれ変わらせることができるのです。 アプリのアイコンを変更

  2. Android・iPhoneのアプリアイコンを変更する方法【ランチャー・アプリ・脱獄を徹底解説】

    スマートフォンを自分好みにカスタマイズできれば、毎日の使用体験がぐっと快適になります。しかし、アプリのアイコン変更となると、少し手間がかかるのも事実です。アイコンを変えたい理由は人それぞれ。同じデザインに飽きたという方もいれば、プライベートなデータを含むアプリを目立たなくしたいという方もいるでしょう。 理由が何であれ、アプリのアイコン変更は十分に可能です。アイコン変更アプリの利用、ランチャーの導入、iPhoneなら脱獄(ジャイルブレイク)など、複数の方法があります。しかも嬉しいことに、これらの方法はどれもAndroid端末のroot化を必要としません。以下で詳しく解説していきます。 Andr