Android Studio　.javaについて前半

#この記事の目的
　この記事はXmlの書き方を理解した後にAndroid Studioの.javaについて簡単に内輪で教えるために書いた記事です。今回の目的としてはこの後内輪で作ろうとしているじゃんけんアプリに必要な知識をつけることです。
第一章では基本的なJavaについてやり、第２章ではAndroidJavaについての基礎的なことをやり、第３章で第２章で学んだことを使いif文などの基本的なJavaについて学び、最後に第４章で今まで学んだことを使いながら画面遷移の方法を学んで行きます。


# 第一章　基本的なJavaの説明
　最初にJavaについての基本的な説明をしていきます。

## クラスとは
　Javaにはクラスというものがあります。クラスとはプログラムを実行するための処理をまとめたもののことです。 実際のコードでは下記のように書かれています。

```Java:.java
 class name｛
　　　...
｝;
```

　クラスとはいわゆる車のようなものでその中に機能をつけていくものです。イメージとしては下記のようになります。

```
class　車｛
　　車のフレームを作る｛
　　　　...　　
    ｝
   エンジンを作る｛
　　　　...
　　｝
｝
```

　このようにクラスの中には機能があり、それをまとめたものがクラスです。
　
## メソッドについて
　メソッドとはクラスの中につける機能のことです。

```
class　車｛
　　車のフレームを作る｛ //メソッド
    ｝
   エンジンを作る｛     //メソッド
　　｝
｝

```
上のイメージの「車のフレームを作る」、「エンジンのを作る」などのクラスの機能のことを指します。

## 継承について
　継承とは他のクラスのメソッドを使いたいというときにクラスを継承することによって使うというものです。

```Java:.java
class クラス extends 継承したいクラス{
}
```

 というように使いクラス名の後に「extends」をかきその後に継承したいクラスのクラス名を書きます。
　Android Studioのプロジェクトを作成したあとの画面を例にすると

```Java:.java
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
```
　これはMainActivityというクラスがAppCompatActivityというクラスを継承しているということになります。また継承しているクラスのことをサブクラス、継承されているクラスのことをスーパークラスといいます。

## オーバーライドについて
　オーバーライドとはスーパークラスのメソッドをサブクラスで書き変えることを言います。オーバーライドすることによってスーパークラスのメソッドを使うことができます。

```Java:.java
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    }
}
```

　ここではスーパークラスであるAppCompatActivityのonCreateというメソッドを使っているということです。

##oncreateについて
　上の説明でも書かれていましたが、AndroidStudioでプロジェクトを起動した時にデフォルトでonCreateというメソッドが使われています。これは起動した時に一番最初に呼ばれるメソッドです。
　

##setContentViewについて
　AndroidStudioを開き.javaファイルを開くと

```Java:.java
setContentView(R.layout.activity_main);
```
という文がデフォルトで書かれています。これはこの.javaファイルを起動したときにresフォルダの中のlayoutファイルの中のlayout.activity_main.xmlというファイルを画面に表示させるというものです。この文があることによって.xmlファイルで作った画面のviewの配置が使えるというものです。

# 第２章AndroidJavaについての説明
　この章ではAndroidアプリ開発に欠かせないAndroidJavaを学び画像や文字の表示のさせ方や、ボタンを押した時の処理について学びます。

## findViewByIdについて
　findViewByIdとはXmlで記述したTextviewやImageviewをidを使って.javaでも使えるようにするものです。
　今回はTextviewを使って説明します。まずTextviewを使うために下記をXmlに書きます。idはTextにします。

```Xml:.xml
   <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になっています。

```Java:.java
 TextView textView=(TextView)findViewById(R.id.Text);
```
　 これで.javaの方で変数名textViewを使ってテキストの変更などを行えます。今回はTextviewを使いましたが他にもImageview,Buttunにも使えます。
使い方はImageviewならば

```Java:.java
ImageView 変数名=(ImageView)findViewById(R.id.hoge);
```

Buttonなら

```Java:.java
Button 変数名=(Button)findViewById(R.id.hoge);
```

というように変えれば使えます。

## setText,setimageResourceについて
　findViewByIdでTextviewやImagdviewを.javaで使えるようにしたのでそれにTextやImageをつけるためにsetText(image)を使います。　Textの場合はまずxmlに下記を書きます。

```Xml:.xml
 <TextView
        android:id="@+id/Text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
```


次に.javaのonCreateの中に下記を書きます。

```Java:.java
TextView textView=(TextView)findViewById(R.id.Text);
        textView.setText("hoge");
```
　そして実行すると下のようにTextviewに.javaの方でsetTextで指定した文字がTextviewに表示されます。

<img width="202" alt="setText.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/255393/792f7c4a-079f-6b64-576a-de28b27bcb13.png">


次はImageの場合です。今回はデフォルトでresファイルの中のmipmapファイル内の画像をImageViewに表示させます。

```Xml:.xml
 <ImageView
        android:id="@+id/Text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />
```

a次に.javaのonCreateの中に下記を書きます

```Java:.java
 ImageView textView=(TextView)findViewById(R.id.image);
        textView.setImageResource(R.mipmap.ic_launcher);
```

　これを実行すると下のようにImageViewに画像が表示されます。
<img width="203" alt="setImage.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/255393/ff352c9c-8dbf-5976-8d1f-cef90c62189a.png">


##onClickLisnerについて
 次はボタンを押した時の処理を追加するための処理を描けるようにしていきます。まず始めに.xmlの方にボタンを追加します。

```Xml:.xml
 <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
```
次にJavaの方でのonCreateの中に下記を書きます。

```Java:.java
 Button button=(Button)findViewById(R.id.button);
        button.setOnClickListener(click);
```
さらにonCreateの外のMainActivityのクラス内に下記を書きます。

```Java:.java
public View.OnClickListener click=new View.OnClickListener() {
        @Override
        public void onClick(View view) {
　　　　　　　//ここにクリックした時の処理を書く
        }
    };
```
button.setOnClickListener(click);の文でclickというメソッド名にとばし、onClickの中に書かれている処理を実行します。今回は実際にクリックしたときにちゃんと動作したかを確認するためにトーストと呼ばれる画面に短い間文字を表示させるものを使います。
.javaのクリックした時の処理を書く所に下記を書きます。

```Java:.java
 Toast toast=Toast.makeText(MainActivity.this,"クリックしました",Toast.LENGTH_LONG);
            toast.show();
```
それを実行しボタンをクリックして下の画面のようになれば完成です。

<img width="207" alt="toast.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/255393/5097c17d-b28e-9f20-779a-fa7db2f33466.png">

また上の方法以外にも.xmlに下記をかき

```Java:.java
 android:onClick="click"
```
.javaクラスの中のonCreateの外に下記をかく

```Java:.java
 public void click(View view) {
　　　　　//ボタンを押した時の処理を書く
                    }
```
という方法でもボタンを押した時の処理を書くこともできます。

[Android Studio　.javaについて後半](https://qiita.com/masking/items/7bb18a0c01cde8c12985)

##演習１
　ボタンを押すと画像とテキストが表示されるアプリを開発する。画像とテキストは自分で好きなものでよい。
例
<img width="203" alt="ennsyu1.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/255393/af62a2e0-1fd4-1f77-2486-b8523e19e413.png">

このボタンを押すと

<img width="205" alt="ennsyu1-2.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/255393/925aae80-3bc4-d9c5-52fc-05d868e68615.png">

##演習１の答え

```Xml:.xml
<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>
```


```Java:.java
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("ドロイド君");
        }
    };

}
```