#この記事の目的
この記事はXmlの書き方を理解した後にAndroid Studioの.javaについて簡単に内輪で教えるために書いた記事です。今回の目的としてはこの後内輪で作ろうとしているじゃんけんアプリに必要な知識をつけることです。
第一章では基本的なJavaについてやり、第2章ではAndroidJavaについての基礎的なことをやり、第3章で第2章で学んだことを使いif文などの基本的なJavaについて学び、最後に第4章で今まで学んだことを使いながら画面遷移の方法を学んで行きます。
第一章 基本的なJavaの説明
最初にJavaについての基本的な説明をしていきます。
クラスとは
Javaにはクラスというものがあります。クラスとはプログラムを実行するための処理をまとめたもののことです。 実際のコードでは下記のように書かれています。
class name{
...
};
クラスとはいわゆる車のようなものでその中に機能をつけていくものです。イメージとしては下記のようになります。
class 車{
車のフレームを作る{
...
}
エンジンを作る{
...
}
}
このようにクラスの中には機能があり、それをまとめたものがクラスです。
メソッドについて
メソッドとはクラスの中につける機能のことです。
class 車{
車のフレームを作る{ //メソッド
}
エンジンを作る{ //メソッド
}
}
上のイメージの「車のフレームを作る」、「エンジンのを作る」などのクラスの機能のことを指します。
継承について
継承とは他のクラスのメソッドを使いたいというときにクラスを継承することによって使うというものです。
class クラス extends 継承したいクラス{
}
というように使いクラス名の後に「extends」をかきその後に継承したいクラスのクラス名を書きます。
Android Studioのプロジェクトを作成したあとの画面を例にすると
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
これはMainActivityというクラスがAppCompatActivityというクラスを継承しているということになります。また継承しているクラスのことをサブクラス、継承されているクラスのことをスーパークラスといいます。
オーバーライドについて
オーバーライドとはスーパークラスのメソッドをサブクラスで書き変えることを言います。オーバーライドすることによってスーパークラスのメソッドを使うことができます。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
}
}
ここではスーパークラスであるAppCompatActivityのonCreateというメソッドを使っているということです。
##oncreateについて
上の説明でも書かれていましたが、AndroidStudioでプロジェクトを起動した時にデフォルトでonCreateというメソッドが使われています。これは起動した時に一番最初に呼ばれるメソッドです。
##setContentViewについて
AndroidStudioを開き.javaファイルを開くと
setContentView(R.layout.activity_main);
という文がデフォルトで書かれています。これはこの.javaファイルを起動したときにresフォルダの中のlayoutファイルの中のlayout.activity_main.xmlというファイルを画面に表示させるというものです。この文があることによって.xmlファイルで作った画面のviewの配置が使えるというものです。
第2章AndroidJavaについての説明
この章ではAndroidアプリ開発に欠かせないAndroidJavaを学び画像や文字の表示のさせ方や、ボタンを押した時の処理について学びます。
findViewByIdについて
findViewByIdとはXmlで記述したTextviewやImageviewをidを使って.javaでも使えるようにするものです。
今回はTextviewを使って説明します。まずTextviewを使うために下記をXmlに書きます。idはTextにします。
<TextView
android:id="@+id/Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"/>
次に.javaのonCreateの中に下記を書きます。idをTestにしたのでid.のあとはTextになっています。
TextView textView=(TextView)findViewById(R.id.Text);
これで.javaの方で変数名textViewを使ってテキストの変更などを行えます。今回はTextviewを使いましたが他にもImageview,Buttunにも使えます。
使い方はImageviewならば
ImageView 変数名=(ImageView)findViewById(R.id.hoge);
Buttonなら
Button 変数名=(Button)findViewById(R.id.hoge);
というように変えれば使えます。
setText,setimageResourceについて
findViewByIdでTextviewやImagdviewを.javaで使えるようにしたのでそれにTextやImageをつけるためにsetText(image)を使います。 Textの場合はまずxmlに下記を書きます。
<TextView
android:id="@+id/Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
次に.javaのonCreateの中に下記を書きます。
TextView textView=(TextView)findViewById(R.id.Text);
textView.setText("hoge");
そして実行すると下のようにTextviewに.javaの方でsetTextで指定した文字がTextviewに表示されます。
次はImageの場合です。今回はデフォルトでresファイルの中のmipmapファイル内の画像をImageViewに表示させます。
<ImageView
android:id="@+id/Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
a次に.javaのonCreateの中に下記を書きます
ImageView textView=(TextView)findViewById(R.id.image);
textView.setImageResource(R.mipmap.ic_launcher);
これを実行すると下のようにImageViewに画像が表示されます。
##onClickLisnerについて
次はボタンを押した時の処理を追加するための処理を描けるようにしていきます。まず始めに.xmlの方にボタンを追加します。
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
次にJavaの方でのonCreateの中に下記を書きます。
Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(click);
さらにonCreateの外のMainActivityのクラス内に下記を書きます。
public View.OnClickListener click=new View.OnClickListener() {
@Override
public void onClick(View view) {
//ここにクリックした時の処理を書く
}
};
button.setOnClickListener(click);の文でclickというメソッド名にとばし、onClickの中に書かれている処理を実行します。今回は実際にクリックしたときにちゃんと動作したかを確認するためにトーストと呼ばれる画面に短い間文字を表示させるものを使います。
.javaのクリックした時の処理を書く所に下記を書きます。
Toast toast=Toast.makeText(MainActivity.this,"クリックしました",Toast.LENGTH_LONG);
toast.show();
それを実行しボタンをクリックして下の画面のようになれば完成です。
また上の方法以外にも.xmlに下記をかき
android:onClick="click"
.javaクラスの中のonCreateの外に下記をかく
public void click(View view) {
//ボタンを押した時の処理を書く
}
という方法でもボタンを押した時の処理を書くこともできます。
##演習1
ボタンを押すと画像とテキストが表示されるアプリを開発する。画像とテキストは自分で好きなものでよい。
例
このボタンを押すと
##演習1の答え
<LinearLayout 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"
android:gravity="center"
android:orientation="vertical"
tools:context="com.example.yuta.aaaaaa.MainActivity">
<ImageView
android:id="@+id/image"
android:layout_width="200dp"
android:layout_height="200dp" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(click);
}
public View.OnClickListener click = new View.OnClickListener() {
@Override
public void onClick(View view) {
ImageView imageView = (ImageView) findViewById(R.id.image);
TextView textView = (TextView) findViewById(R.id.text);
imageView.setImageResource(R.drawable.doroido);
textView.setText("ドロイド君");
}
};
}