ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
リソースとは
Android のリソースとは、コードと分離して管理されるUI のための静的データのことです。文字列・色・画像・寸法・レイアウト XML などを res/ ディレクトリにまとめ、コードからは R クラス経由で参照します。
こうすることで多言語対応、画面密度対応、ダークモード、横画面/縦画面の出し分けがコード本体を触らずに済みます。
標準ディレクトリ構成
app/src/main/res/
├── layout/ # 画面レイアウト XML
│ ├── activity_main.xml
│ └── item_user.xml
├── values/ # 文字列・色・寸法など
│ ├── strings.xml
│ ├── colors.xml
│ ├── dimens.xml
│ ├── styles.xml
│ └── themes.xml
├── values-ja/ # 日本語用
│ └── strings.xml
├── values-night/ # ダークモード
│ └── colors.xml
├── drawable/ # ベクター / シェイプ / 画像
│ ├── ic_home.xml
│ └── bg_button.xml
├── drawable-xxhdpi/ # 高解像度 PNG
│ └── photo.png
├── mipmap-anydpi-v26/ # アイコン (Adaptive Icon)
│ └── ic_launcher.xml
├── mipmap-mdpi 〜 xxxhdpi/ # 旧式アイコン
├── raw/ # 音声・動画・JSON など
│ └── beep.mp3
├── xml/ # 任意 XML(widget設定など)
│ └── preferences.xml
├── menu/ # メニュー XML
│ └── main_menu.xml
└── font/ # カスタムフォント
└── roboto.ttf
R クラスからの参照
// 文字列
val title: String = getString(R.string.app_name)
// 色
val color: Int = ContextCompat.getColor(this, R.color.primary)
// 画像
val icon: Drawable? = ContextCompat.getDrawable(this, R.drawable.ic_home)
// 寸法
val padding: Float = resources.getDimension(R.dimen.padding_default)
// レイアウト
setContentView(R.layout.activity_main)
// 文字列フォーマット (placeholder 入り)
val msg = getString(R.string.welcome_message, userName, age)
// strings.xml: <string name="welcome_message">こんにちは %1$s さん (%2$d 歳)</string>
画面密度別のリソース (drawable)
| 名前 | 密度 | 倍率 | 典型機種 |
|---|---|---|---|
| mdpi (基準) | ~160 dpi | 1x | 旧式 (絶滅) |
| hdpi | ~240 dpi | 1.5x | 2010年代初期 |
| xhdpi | ~320 dpi | 2x | iPhone 4 相当 / 廉価 Android |
| xxhdpi | ~480 dpi | 3x | Pixel 6/7/8 等 |
| xxxhdpi | ~640 dpi | 4x | Samsung Galaxy S 系最上位 |
たとえばアイコンを 24dp で表示する場合、各密度フォルダに 24/36/48/72/96 px の PNG を配置すると Android が自動選択します。現代では Vector Drawable (XML) で密度非依存にするのが推奨です。
言語・地域別のリソース
| フォルダ | 意味 |
|---|---|
values/ | デフォルト(通常英語) |
values-ja/ | 日本語 |
values-en-rUS/ | 英語 (米国) |
values-zh-rCN/ | 中国語簡体 |
values-night/ | ダークモード |
values-w600dp/ | 横幅 600dp 以上(タブレット) |
values-land/ | 横画面 |
Vector Drawable
SVG ライクな XML で密度非依存のアイコンを作れます。Android Studio の Asset Studio → Vector Asset で Material Icons / SVG を取り込めます。
<!-- res/drawable/ic_home.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorOnSurface">
<path
android:fillColor="@android:color/white"
android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z"/>
</vector>
テーマとスタイル
<!-- res/values/themes.xml -->
<resources>
<style name="Theme.MyApp" parent="Theme.Material3.DayNight.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorOnPrimary">@color/on_primary</item>
<item name="android:statusBarColor">@color/primary</item>
</style>
</resources>
<!-- res/values-night/themes.xml -->
<resources>
<style name="Theme.MyApp" parent="Theme.Material3.DayNight.NoActionBar">
<item name="colorPrimary">@color/primary_dark</item>
</style>
</resources>
<!-- AndroidManifest.xml -->
<application android:theme="@style/Theme.MyApp">
Configuration Changes(画面回転・言語切替)対策
画面回転や言語変更が起きると Android はActivity を作り直します。リソース XML の文言・色・レイアウトが自動で適切なものに切り替わりますが、コードで持っているデータは失われます。
- ViewModel に状態を持たせる — Configuration Change 越境
- onSaveInstanceState で Bundle にプリミティブ値保存
- 独自対策で
android:configChanges="orientation|screenSize"を Manifest に書くと自前で onConfigurationChanged を実装する必要
FAQ
Q: 画像はすべて drawable-xxhdpi に置けばいい?
A: 拡大表示でぼやけることがあります。Vector Drawable に変換、または mdpi/hdpi/xhdpi/xxhdpi の段階で持つのが安全。
Q: 多言語対応で抜けがあるとどうなる?
A: 該当ロケールに該当する strings.xml 内にキーが無い場合、デフォルト(values/strings.xml)にフォールバック。
Q: ColorRes と Color int の違いは?
A: R.color.primary はリソース ID(整数)。Color.RED や getColor() はARGB int。getColor は API 23+ で Context 必須に変更されたので、ContextCompat.getColor 推奨。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- リソース (Android アプリケーション)
- アクティビティ (Android アプリケーション)
- メッセージの表示
- データベースの操作 (Android アプリケーション)
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?