初心者でもAndroidアプリ開発を1から学習できる1日集中入門セミナー。

6章 イベント駆動型プログラム

6.1.3 ボタンに反応する簡単なアプリケーション

[Application Name] ListenerButtonImplement1

[Company Domain] intro.f1.co.jp

[Activity Name] ListenerButtonImplement1Activity

文字列リソースの修正

[フォルダ] res/values

[修正] strings.xml

<resources>
    <string name="app_name">ListenerButtonImplement1</string>

    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="click">クリック!</string>

</resources>

画面レイアウトファイルの修正

[フォルダ] res/layout

[修正] activity_listener_button_implement1.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".ListenerButtonImplement1Activity">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/click" />

</LinearLayout>

アクティビティファイルの修正

[フォルダ] java/jp.co.f1.intro.listenerbuttonimplement1

[修正] ListenerButtonImplement1Activity

package jp.co.f1.intro.listenerbuttonimplement1;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;


public class ListenerButtonImplement1Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listener_button_implement1);

        Button button = (Button) findViewById(R.id.button1);

        class MyOnClickListener implements OnClickListener {

            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "ボタンがクリックされました!",
                        Toast.LENGTH_SHORT).show();
            }

        }

        button.setOnClickListener(new MyOnClickListener());

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_listener_button_implement1, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

■実行時

ch06_01_01

■ボタン押下時

ch06_01_02

6.2 テキストエディットの入力値を表示するアプリケーション

[Application Name] ClickToastMsg

[Company Domain] intro.f1.co.jp

[Activity] ClickToastMsgActivity

文字列リソースの修正

[フォルダ] res/values

[修正] strings.xml

<resources>
    <string name="app_name">ClickToastMsg</string>

    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="title">メッセージを入力して下さい。</string>
    <string name="display">表示</string>

</resources>

画面レイアウトファイルの修正

[フォルダ] res/layout

[修正] activity_click_toast_msg.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".ClickToastMsgActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/title" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:ems="10"
        android:inputType="text" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/editText1"
        android:text="@string/display" />

</RelativeLayout>

アクティビティファイルの修正

[フォルダ] java/jp.co.f1.intro.clicktoastmsg

[修正] ClickToastMsgActivity.java

package jp.co.f1.intro.clicktoastmsg;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class ClickToastMsgActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_click_toast_msg);

        //ボタンのビューオブジェクトを取得
        Button button = (Button) findViewById(R.id.button1);

        class MyListener implements OnClickListener {

            @Override
            public void onClick(View v) {

                //エディットテキストのビューオブジェクトを取得
                EditText editText = (EditText)findViewById(R.id.editText1);

                //エディットテキストに入力されている内容を取得
                String str = editText.getText().toString();

                //エディットテキストに入力された内容をトーストで表示
                Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG)
                        .show();
            }
        }

        //ビューオブジェクトとイベントリスナーの関連付け
        button.setOnClickListener(new MyListener());
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_click_toast_msg, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

■実行時

ch06_02_01

■ボタン押下時

ch06_02_02

6.3 <実習> イベント処理を行う色々なビュー表示プログラム

[Application Name] ClickableVariousView

[Company Domain] intro.f1.co.jp

[Activity] ClickableVariousViewActivity

文字列リソースの修正

[フォルダ] res/values

[修正] strings.xml

<resources>
    <string name="app_name">ClickableVariousView</string>

    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="click">クリックして下さい!</string>
    <string name="button">表示</string>
    <string name="check">check it out</string>
    <string name="vibrate_off">Vibrate OFF</string>
    <string name="vibrate_on">Vibrate ON</string>

</resources>

画面レイアウトファイルの修正

[フォルダ] res/layout

[修正] activity_display_message.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".ClickableVariousViewActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/click" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button" />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/check" />

    <ToggleButton
        android:id="@+id/toggleButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textOff="@string/vibrate_off"
        android:textOn="@string/vibrate_on" />

</LinearLayout>

アクティビティファイルの修正

[フォルダ] java/jp.co.f1.intro.clickablevariousview

[修正] ClickableVariousViewActivity

package jp.co.f1.intro.clickablevariousview;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;


public class ClickableVariousViewActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_clickable_various_view);

        //ビューオブジェクトを生成
        TextView textView = (TextView) findViewById(R.id.textView1);
        Button button = (Button) findViewById(R.id.button1);
        CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox1);
        ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleButton1);

        //テキストビューに関する動作
        class ListenerForTextView implements OnClickListener {

            @Override
            public void onClick(View v) {
                //トーストに文字を表示
                Toast.makeText(getApplicationContext(), "テキストビューがクリックされました!",
                        Toast.LENGTH_SHORT).show();
            }

        }

        //ボタンに関する動作
        class ListenerForButton implements OnClickListener {

            @Override
            public void onClick(View v) {
                //エディットテキストを生成
                EditText editText = (EditText) findViewById(R.id.editText1);

                //エディットテキストに書かれている内容を取得
                String str = editText.getText().toString();

                //トーストに文字を表示
                Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
            }
        }

        //チェックボックスに関する動作
        class ListenerForCheckBox implements OnClickListener {

            @Override
            public void onClick(View v) {
                CheckBox checkBox = (CheckBox) v;

                if (checkBox.isChecked()) {
                    //トーストに文字を表示
                    Toast.makeText(getApplicationContext(), "チェックON", Toast.LENGTH_SHORT).show();
                } else {
                    //トーストに文字を表示
                    Toast.makeText(getApplicationContext(), "チェックOFF", Toast.LENGTH_SHORT).show();
                }

            }

        }

        //トグルボタンに関する動作
        class ListenerForToggleButton implements OnClickListener {

            @Override
            public void onClick(View v) {
                ToggleButton toggleButton = (ToggleButton) v;

                if (toggleButton.isChecked()) {
                    //トーストに文字を表示
                    Toast.makeText(getApplicationContext(), "バイブレートON", Toast.LENGTH_SHORT).show();
                } else {
                    //トーストに文字を表示
                    Toast.makeText(getApplicationContext(), "バイブレートOFF", Toast.LENGTH_SHORT).show();
                }
            }
        }

        textView.setOnClickListener(new ListenerForTextView());
        button.setOnClickListener(new ListenerForButton());
        checkBox.setOnClickListener(new ListenerForCheckBox());
        toggle.setOnClickListener(new ListenerForToggleButton());
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_clickable_various_view, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

■実行時

ch06_03_01

■テキストビュー押下時

ch06_03_02

■ボタン押下時

ch06_03_03

■チェックボックス押下時

ch06_03_04

■トグルボタン押下時

ch06_03_06
PAGETOP
Copyright © 2015 FusionOne Co.,Ltd. All rights reserved.