[AndroidStudio4]アプリの作り方とパッケージ構成
デフォで用意されているベースとなるプロジェクトの新規作成のやり方と、各パッケージの役割を紹介したいと思います。
新規プロジェクトの作成
AndroidStudioを起動し、左上のファイル>新規>新規プロジェクト
空のActivityを選択します。これにより、最小構成のベースアプリを作成できます。NoActivityですと、ファイルが何も作られず参考にできません。
名前はプロジェクト名です。パッケージ名はアプリを公開する際に他のアプリと被らない名前にする必要があります。お試しで作る分には何を設定しても構いません。最小SDKはこのままでも良いのですが、古過ぎると使えないメソッドがあります。私は暫定でAPI26を選んでいます。
各ファイルの役割
java/パッケージ名/MainActivity
ある画面について、表示するデータや画面操作に対する動作を定義するのがActivity.javaファイルです。
デフォルトで用意されているonCreateは、画面を起動したときactivity_main.xmlを表示する、という動作を定義しています。
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // R.layout.レイアウトファイル名で参照できます。 setContentView(R.layout.activity_main); } }
res/layout/activity_main.xml
ある画面のレイアウトを定義するのが、app/res/layout配下のxmlファイルです。Activity.javaファイルから呼び出されます。
画面右上の「Split」「デザイン」で、実際の画面表示を確認しながらコーディングできます。
manifests/AndroidManifest
画面ごとのテーマを定義するファイルです。
主に編集するのはactivityタグ内です。android:nameで対象のActivityを、android:themeでテーマを設定します。このテーマは、下のtheme.xml内で定義する必要があります。
intent-filter.タグは、アプリ起動時のActivity(デフォはMainActivity)にのみ必要な記述です。
res/values/themes/theme.xml
上で述べたように、テーマを定義します。例えばアプリ上部にバーを表示させたくない場合は、末尾がNoActionBarのテーマを設定します。
res/drawable/
アプリ内で利用する画像を定義します。一般的なアイコンはアプリ内に含まれているので、アイコンを使うだけであれば画像ファイルを用意しなくても大丈夫です。
res/values/colors.xml
アプリ内で利用する色情報、文字列情報を定義します。
activity_ main.xmlからcolors.xmlで定義した色情報を参照し、背景や文字の色を変更することができます。
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:background="@color/white" >
res/values/strings.xml
strings.xmlでは文字列を定義することで、それをactivity_ main.xmlから参照することができます。デフォルトのように、activity_ main.xml内で表示したい文字列を直接定義することも可能です。
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_name" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" />
できる限り基本のところから説明したつもりです。分からないところあればコメントお願いします!