Android Studio入門

Android Studio 入門【 ScrollView 】ボタンの縦スクロール

Android Studio【ScrollView】

写真のギャラリーや、画面からはみ出すメニュー等を表示させる「ScrollView(スクロールビュー)」の使用方法です。
シンプルに解説したいので、縦スクロールのみで解説させてもらいます。

LayoutとViewの重なりに注意してください。

Layout → SucroseView → Layout → ボタンなどのViewの順に重なっています。

LayoutとViewの重なりに注意!!

wrap_contentだとボタンの上でフリックする必要があります。

注意点【match_parent】

ボタンを縦に並べたレイアウトです。

<?xml version="1.0" encoding="utf-8"?>
<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=".MainActivity">


    <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

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

            <Button
                android:id="@+id/button2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button" />

            <Button
                android:id="@+id/button3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button" />

            <Button
                android:id="@+id/button4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button" />

            <Button
                android:id="@+id/button5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button" />

            <Button
                android:id="@+id/button6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button" />

            <Button
                android:id="@+id/button7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button" />

            <Button
                android:id="@+id/button8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button" />

            <Button
                android:id="@+id/button9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button" />

            <Button
                android:id="@+id/button10"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button" />

            <Button
                android:id="@+id/button11"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button" />

            <Button
                android:id="@+id/button12"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/button13" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/button14" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/button15" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/button16" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/button17" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/button18" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/button19" />
        </LinearLayout>
    </ScrollView>
</RelativeLayout>

15分で作る?【 簡易ストップウォッチ 】

Android 開発 【ストップウォッチ】768

「15分で作る」シリーズはある程度知識のある方向けの動画です。
未経験の方でもコピペで再現出来るように目指していますが、理解には「RPGで学ぶ」「3分で学ぶ」を先にご覧ください。

超シンプルなストップウォッチです。

「とりあえず動かす!」を優先しているので、デザインもアレンジもありません。

難易度:★★☆☆☆ 未経験でも再現は簡単、アレンジは難しい

<?xml version="1.0" encoding="utf-8"?>
<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=".MainActivity">

    <Chronometer
        android:id="@+id/c"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="60sp" />
</RelativeLayout>
package com.hakoniwadesign.stopwatch;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Chronometer;

public class MainActivity extends AppCompatActivity {

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

        ((Chronometer)findViewById(R.id.c)).start();
    }
}

<LinearLayout 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: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=".MainActivity">

    <Chronometer
        android:id="@+id/c"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="60sp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onStart"
        android:text="スタート"
        android:textSize="40sp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onStop"
        android:text="ストップ"
        android:textSize="40sp" />

</LinearLayout>

package com.hakoniwadesign.stopwatch;

import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Chronometer;

public class MainActivity extends AppCompatActivity {

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

    // スタート
    public void onStart( View v ){
        ((Chronometer)findViewById(R.id.c)).setBase(SystemClock.elapsedRealtime());
        ((Chronometer)findViewById(R.id.c)).start();
    }

    // ストップ
    public void onStop( View v ){
        ((Chronometer)findViewById(R.id.c)).stop();
    }

}

15分で作る?【 動画の再生 】

Android studio 【動画再生】768

アプリ内に組み込んだ動画再生方法です。
具体的にはresフォルダ内の動画(mp4)を再生します。

サンプル動画 【シャカシャカ】

サンプル動画 【ひよこ】

* 注意点:動画の形式によって再生できないものがありました。

<?xml version="1.0" encoding="utf-8"?>
<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=".MainActivity">

    <VideoView
        android:id="@+id/v"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>
package com.hakoniwadesign.video;

import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;

public class MainActivity extends AppCompatActivity {

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

        // ID取得
        VideoView v = (VideoView)findViewById(R.id.v);

        // 動画の指定(mp4の読込み)
        v.setVideoURI(Uri.parse("android.resource://" + this.getPackageName() + "/" + R.raw.video1));

        // 再生スタート
        v.start();

        // コントローラNO(動画をタップするとメニュー表示)
        v.setMediaController(new MediaController(this));

    }
}
Android Studio入門

Android プログラミング【 ボタンで文字変更 】

5分で学ぶ Android プログラミング 【 ボタンで文字の変更 】768

前回の「ボタンで画像変更」「文字の変更」を追加します。

画面のボタンクリックで背景画像と説明文が変更します。

前回の動画に以下を追加すると可能です。( コピペでOK )

activity_main.xml

    <TextView
        android:id="@+id/t0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="aaaaaaaaaa"
        android:textSize="30dp" />

MainActivity.java

import android.widget.TextView;
((TextView)findViewById(R.id.t0)).setText("0mだよー");

画面作りは簡略化します。コピペでOKです。


<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:orientation="vertical"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/back"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:src="@drawable/b0" />

    <Button
        android:id="@+id/b0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="b0"
        android:text="0m" />

    <Button
        android:id="@+id/b1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/b0"
        android:onClick="b1"
        android:text="10m" />

    <Button
        android:id="@+id/b2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/b1"
        android:onClick="b2"
        android:text="20m" />

    <TextView
        android:id="@+id/t0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="あああああ"
        android:textSize="30sp" />

</RelativeLayout>

プログラミング(動的な変化)です。赤文字を適切な場所にコピペすると動くはずです。

package com.test.test0811;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    // 0mのボタン
    public void b0(View v) {
        // 画像の変更 (b0画像を設定)
        ((ImageView) findViewById(R.id.back)).setImageResource(R.drawable.b0);
        ((TextView) findViewById(R.id.t0)).setText("浮上したよ");
    }

    // 10mのボタン
    public void b1(View v) {
        // 画像の変更 (b1画像を設定)
        ((ImageView) findViewById(R.id.back)).setImageResource(R.drawable.b1);
        ((TextView) findViewById(R.id.t0)).setText("10mです");
    }

    // 20mのボタン
    public void b2(View v) {
        // 画像の変更 (b2画像を設定)
        ((ImageView) findViewById(R.id.back)).setImageResource(R.drawable.b2);
        ((TextView) findViewById(R.id.t0)).setText("20mまで潜ったよ!");
    }

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

    @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_main, 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);
    }
}


【解説】文字変更

Android Studio入門

Android プログラミング【 ボタンで画像変更 】

5分で学ぶ Android プログラミング 【 ボタンで背景変更 】768

前編 → YouTube
後編 → YouTube

画面上にボタンを配置して「ボタンを押すと背景画像が変わる」を学習します。
もちろん、背景画像だけで無く、キャラクター自信や表情も変更できます。

画像全般に対応

今回は「新規作成から完成」までを動画に納めたいので、細かい解説は省かせてもらいます。(m_m)
詳細は以下リンク先をご覧ください。

以下、背景画像をパソコン内に保存し、アプリ内のdrawableフォルダーに保存してください。

5分で学ぶ Androidアプリ【背景画像】b0
b0
5分で学ぶ Androidアプリ【背景画像】b1
b1
5分で学ぶ Androidアプリ【背景画像】b2
b2
5分で学ぶ Androidアプリ【背景画像】b3
b3
5分で学ぶ Androidアプリ【背景画像】b4
b4
5分で学ぶ Androidアプリ【背景画像】b5
b5

画面作りは簡略化します。コピペでOKです。

<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:orientation="vertical"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/back"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:src="@drawable/b0" />

    <Button
        android:id="@+id/b0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="b0"
        android:text="0m" />

    <Button
        android:id="@+id/b1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/b0"
        android:onClick="b1"
        android:text="10m" />

    <Button
        android:id="@+id/b2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/b1"
        android:onClick="b2"
        android:text="20m" />

</RelativeLayout>




プログラミング(動的な変化)です。赤文字を適切な場所にコピペすると動くはずです。

package com.test.testf;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    // 0mのボタン
    public void b0(View v) {
        // 画像の変更 (b0画像を設定)
        ((ImageView) findViewById(R.id.back)).setImageResource(R.drawable.b0);
    }

    // 10mのボタン
    public void b1(View v) {
        // 画像の変更 (b1画像を設定)
        ((ImageView) findViewById(R.id.back)).setImageResource(R.drawable.b1);
    }

    // 20mのボタン
    public void b2(View v) {
        // 画像の変更 (b2画像を設定)
        ((ImageView) findViewById(R.id.back)).setImageResource(R.drawable.b2);
    }

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

    @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_main, 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);
    }
}

プログラムの流れ

画像が変更!!

Android Studio入門

Android Studio 開発【 プロパティウインドウ 】

3分で学ぶ Android Studio【 プロパティウインドウ 】768B

Component Tree(コンポーネント ツリー)とpropertys(プロパティズ)の解説動画で、操作ミスしやすい部分を解説したいと思います。

この動画は「アプリ新規作成」を済ませた状態でご覧ください。

3分で学ぶ Android Studio【 画面解説 】
Component Treeとproper ties
  • コンポーネント(部品) ツリー(構造)
  • 画面の部品を構造的に表示する画面

※ 画面上の部品を選択、編集、削除等に使用

  • プロパティ(性質・属性) 
  • 部品の詳細を設定する画面

※ 部品の文字サイズや背景色の変更に使用

3分で学ぶ Android Studio【 RelativeLayout 】
RelativeLayout を選択
3分で学ぶ Android Studio【 TextView 】
TextViewを選択

簡単な操作ですが、簡単な操作ほど操作ミスしやすいので気をつけてください☆

Android Studio入門

Android Studio 開発【 レイアウトの変更 】

3分で学ぶ Android Studio【 レイアウトの変更 】768

Android Studioでのレイアウト学習する動画です。
GUIで作成せずTextタブ(XML)でレイアウトの変更をすることでXMLの理解を深めます。

この動画は「アプリ新規作成」を済ませた状態でご覧ください。

レイアウト比較
レイアウト比較

・Linear :リニア 、直線上の
・Layout :レイアウト、配置
・vertical:バーチカル、垂直
 → 垂直に並べる

・Linear :リニア 、直線上の
・Layout :レイアウト、配置
・horizontal :ホリゾンタル、水平
 → 水平に並べる

・Relative :リラティブ 、相対的
・Layout :レイアウト、配置
 → 相対的に並べる( 他を基準にして・画面の真ん中 )

レイアウトの変更【XML解説】
レイアウトの変更【XML解説】
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ボタン1"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ボタン2"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ボタン3"/>


</LinearLayout>
Android Studio入門

Android Studio 開発【 パレットウインドウ 】

3分で学ぶ Android Studio【 パレットウインドウ 】768

Paletteウインドウの解説動画で、主要な部品を解説しています。
この動画は「アプリ新規作成」を済ませた状態でご覧ください。

3分で学ぶ Android Studio【 layoutとwidget 】2
Android Studioのlayoutとwidget

パレットのイメージ
パレットイメージ

画面に表示する部品が並んでいるウインドウ
絵の具のパレットでOK

layoutイメージ
layoutイメージ

ボタンや画像を並べる棚
本棚みたいなイメージでOK

Widgetイメージ
Widgetイメージ

ボタンや画像など「画面に配置する部品」
本棚に並べる「本や物」イメージでOK

Android Studio入門

Android Studio 開発【 フォルダ構成 】

3分で学ぶ Android Studio【 フォルダ構成 】768

Projectウインドウの解説動画で、主要なフォルダを解説しています。

この動画は「アプリ新規作成」を済ませた状態でご覧ください。

3分で学ぶAndroid Studio【 フォルダ構成 】リソースフォルダ2
Android Studioのフォルダ構成

アプリで使用する素材は以下階層に保存
※ 画像、音楽、文字などを保存

画像を保存するフォルダ
※ 背景画像やアプリのアイコンを保存
※ drawableが旧規格で低スペックでもOK、mipmap新規格で綺麗に表示できる模様。
※ 最初はdrawableを利用し、慣れてくるとmipmapも使用するでOK

メニューの表示内容を保存
※ オプションメニューの表示内容などを記載

文字や定数を保存
※ ボタンに表示する文字や外国語表示の文字を記載