Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Androidアプリのしくみ

@nekoruri
November 02, 2013

 Androidアプリのしくみ

Androidアプリのしくみ
(オブジェクト指向の基礎の基礎)

日本Androidの会 秋葉原支部
コスプレ理系女子普及部
第18回定例会 LT資料

@nekoruri

November 02, 2013
Tweet

More Decks by @nekoruri

Other Decks in Technology

Transcript

  1. 日本Androidの会 秋葉原支部
    コスプレ理系女子普及部
    第18回定例会

    View full-size slide

  2. 今まで書いてきたプログラムを、
    「外側」
    から説明してみます。

    View full-size slide

  3. なんとなくでいいので
    イメージ
    を掴めると理解がすすむ
    今まで書いてきたプログラムを、
    「外側」
    から説明してみます。

    View full-size slide

  4. なんとなくでいいので
    イメージ
    を掴めると理解がすすむ
    はず!
    今まで書いてきたプログラムを、
    「外側」
    から説明してみます。

    View full-size slide

  5. public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }
    }
    アプリを起動したら、
    onCreateを呼ぶよ!

    View full-size slide

  6. 実はonCreate以外にも呼んでるよ!
    削除したonCreateOptionsMenuとかね!
    たくさんの「基本的な動き方」が、ひな形( Activity )に書かれています。
    いつも最初に削除するonCreateOptionsMenuもです。
    それを呼んでいるのが「 super.onCreate 」です。
    public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }
    }

    View full-size slide

  7. Activity
    Androidアプリの基本的な動き方が
    書かれています
    MainActivity
    自分のアプリ独自の部分を書きます
    MainActivityに書かれていないことは、
    Activityに書いてあることをやるよ!

    View full-size slide

  8. public class MainActivity extends Activity {
    (onCreateは省略)
    public void onClick1(View v){
    setContentView(R.layout.self_introduction);
    }
    }
    ボタンがクリックされたら
    onClick1を呼ぶよ!
    そしたら、setContentViewするよ!

    View full-size slide

  9. setContentViewしろって言われたけど、
    MainActivityには書いていないから、
    Activityに書いてある内容を実行するね!
    実は、setContentView の内容は Activity に書かれています。
    そういう、呼ぶと何かしてくれる「メソッド」がたくさん定義されています。
    public class MainActivity extends Activity {
    (onCreateは省略)
    public void onClick1(View v){
    setContentView(R.layout.self_introduction);
    }
    }

    View full-size slide


  10. 公式ドキュメントを見てみよう
    http://developer.android.com/reference/android/app/Activity.html

    「Public Methods」がメソッドの一覧

    View full-size slide

  11. public class MainActivity extends Activity {
    TextView tv;
    public void onClick1(View v) {
    setContentView(R.layout.self_introduction);
    tv = (TextView) findViewById(R.id.textView1);
    tv.setText(“実はスポーツマン”);
    }
    ボタンがクリックされたら
    textView1の文字を
    「実はスポーツマン」に変えるよ!

    View full-size slide

  12. public class MainActivity extends Activity {
    TextView tv;
    public void onClick1(View v) {
    setContentView(R.layout.self_introduction);
    tv = (TextView) findViewById(R.id.textView1);
    tv.setText(“実はスポーツマン”);
    }
    textView1を変数 tv に入れて、
    tvのsetTextメソッドを呼ぶよ!

    View full-size slide

  13. レイアウトファイルを読んで、
    ボタンと文字の
    「インスタンス」を作るよ!
    レイアウトファイル
    「文字列の表示方法」
    「ボタンの表示方法」
    「ボタンが押されたら
    onClick1を呼ぶ」
    こんにちは!
    onClick1
    ボタンが押されたら、
    onClickを呼ぶよ!
    ボタン
    文字列の「インスタンス」に
    setTextで文字を変えるよう
    命令するよ!

    View full-size slide

  14. public class MainActivity extends Activity {
    TextView tv;
    public void onClick1(View v) {
    setContentView(R.layout.self_introduction);
    tv = (TextView) findViewById(R.id.textView1);
    tv.setText(“実はスポーツマン”);
    }
    こんにちは!
    ボタン
    findViewByIdを使って、
    Androidが作ってくれたインスタンスをさす
    矢印を変数にいれます
    この矢印を通してメソッドを呼んで、
    「命令」をインスタンスに送ります
    レイアウトファイル
    に従って作られた
    画像やボタンの
    「インスタンス」

    View full-size slide

  15. public class MainActivity extends Activity {
    TextView tv;
    public void onClick1(View v) {
    setContentView(R.layout.self_introduction);
    tv = (TextView) findViewById(R.id.textView1);
    tv.setText(“実はスポーツマン”);
    tv = (TextView) findViewById(R.id.textView2);
    tv.setText(“わたしの戦闘力は53万です。”);
    }
    こんにちは!
    ボタン
    自己紹介

    View full-size slide

  16. public class MainActivity extends Activity {
    TextView tv;
    public void onClick1(View v) {
    setContentView(R.layout.self_introduction);
    tv = (TextView) findViewById(R.id.textView1);
    tv.setText(“実はスポーツマン”);
    tv = (TextView) findViewById(R.id.textView2);
    tv.setText(“わたしの戦闘力は53万です。”);
    }
    こんにちは!
    ボタン
    自己紹介
    同じ変数に
    「別のインスタンスをさす矢印」
    をいれなおすこともできます

    View full-size slide


  17. やっぱり公式ドキュメントを見てみよう!
    http://developer.android.com/reference/android/widget/TextView.html

    View full-size slide


  18. Androidのプログラム(MainActivity)は、既にある
    「ひな形」(Activity)の上に作っていきます。

    レイアウトで置いたボタンや文字は、
    プログラム開始時にAndroidが作ってくれます。

    それぞれを「インスタンス」と言います。

    findViewByIdでそのインスタンスへの「矢印」を変
    数に入れます。

    変数に入れた矢印を経由して「命令」を送ります。
    これが「メソッド」です。

    View full-size slide