読者です 読者をやめる 読者になる 読者になる

Androidプログラミングブログ

Androidプログラミングを勉強していく中でわかったことをメモする

【Androidプログラミング入門 #033】ActionBarを追加する

はじめに

ActionBarが導入された後、ActionBarより柔軟性が高い
ToolBarというウィジェットが導入されたようです。

Android Studioで新規プロジェクトを作成すると、
ToolBarが使われていて、ActionBarの表示は非表示にされています。 今後はTooBarを使っていく流れなのでしょう。

ToolBarについては↓の記事が詳しい。
AndroidのToolBar(新しいActionBar)メモ - Qiita

勉強に使っている参考書がActionBarを使ってサンプルを書いていて、 ActionBarを使えるようにするにはどうしたらよいかわからなかったので、
調べてメモ。

下記、新規プロジェクト作成し、ActionBarを表示にするまでを書きます。

1. プロジェクト作成

f:id:fjswkun:20151124104249p:plain

f:id:fjswkun:20151124104315p:plain

f:id:fjswkun:20151124104329p:plain

f:id:fjswkun:20151124104340p:plain

2. Activityのテーマを変更

初期はActionBarが非表示になっているので、表示に変更します。

AndroidManifest.xmlを開き、Activityのテーマを
android:theme="@style/AppThem
に変更します。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.swift_studying.sampleactionbar" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

3. ToolBarの削除

ActionBarとToolBarの2つが存在する状態なので、
ToolBarを削除します。

①レイアウトからToolBarを削除

activity_main.xmlを開き、下記のタグの部分を削除します。
<android.support.design.widget.AppBarLayout ・・・>

結果、↓になる。

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    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:fitsSystemWindows="true"
    tools:context=".MainActivity">

    <include layout="@layout/content_main" />

    <android.support.design.widget.FloatingActionButton android:id="@+id/fab"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin
        android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>
②ソースから削除

MainActivity.javaを開き、onCreateメソッドの中にある下記2行を削除します。

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

結果、onCreateメソッドは↓になります。

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

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
}
③アクションバーが表示されているときの表示変更

ToolBarを削除して、ActionBarを表示しました。
このままだと、見た目が変わず、本当にActionBar表示できてるの?
となるので、少し修正。

ActionBarが表示されているときはタイトルに
アクションバー
と表示するようにします。

MainActivity.javaを開き、onCreateメソッドを↓のように書き換え。
なお、Support Libraryを使用している場合?はgetSupportActionbarを使わないと
例外になるので注意。

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

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

    if ((getSupportActionBar() != null)
        || (getActionBar() != null)){
        setTitle("アクションバー");
    }else{
        setTitle("ツールバー");
    }
}

4. 実行

f:id:fjswkun:20151124110337p:plain

参考情報

参考

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

開発用デバイス

Androidの勉強をはじめた人は知っているようにエミュレーターはちょー遅い。
開発用に安いAndroidを買えば、勉強がはかどります!
iPhoneと比較すると安いので買ったほうがいいと思います。

おすすめデバイス

勉強用に使うだけなので価格が高い最新デバイスは必要ないと思います。
最新のデバイスは一人前のAndroidプログラマーになったら購入を検討しましょう。

nexus5 16GBASUS Nexus7 ( 2013 ) TABLET

その他に探すなら↓から。
Android nexus5を勉強用に購入

【Androidプログラミング入門 #031】Fragmentを使う

はじめに

Fragmentを使う。

1. プロジェクト作成

f:id:fjswkun:20151112222818p:plain

f:id:fjswkun:20151112222828p:plain

f:id:fjswkun:20151112222839p:plain

f:id:fjswkun:20151112222850p:plain

2. ActivityにFragmentActivityを継承させる

MainActivity.javaを開きます。

クラスを宣言している行のextendsより後ろを「FragmentActivity」に変更します。

public class MainActivity extends FragmentActivity {
}

変更したことにより、もしかするとonCreateメソッド内でエラーが発生するかもしれません。
AppCompatActivityからFragmentActivityから変更したときに発生するかもしれません。
そのときはエラーの部分を解消してください。

3. Fragmentクラスのサブクラスを作成する

f:id:fjswkun:20151112230700p:plain

f:id:fjswkun:20151112230709p:plain

4. Fragmentのレイアウトを修正する

手順3で作成したクラスのレイアウトファイルを開きます。

下記のようにします。 EditText、その下にButtonを配置しています。

<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"
    tools:context="com.swift_studying.samplefragment.InputFragment">

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="40dp" />
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText"
        android:text="押す"/>

</RelativeLayout>

5. Fragmentのソースファイルを修正します。

Buttonを押すとEditTextに入力した文字列が
トーストで表示されるようにしています。

package com.swift_studying.samplefragment;

import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class InputFragment extends Fragment {

    public InputFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_input, container, false);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState){
        super.onViewCreated(view, savedInstanceState);

        final EditText editText = (EditText)view.findViewById(R.id.editText);
        Button button = (Button)view.findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (editText.getText().length() > 0){
                    Toast.makeText(getActivity(), editText.getText(), Toast.LENGTH_LONG).show();
                }
            }
        });
    }

}

6. 実行

実行します。

f:id:fjswkun:20151112231149p:plain

おわりに

この例だとFragment使わなくていいんじゃない?と思う。
応用は今後の課題とします。

うまく実行されなかった方はこちらからサンプルをダウンロード。

SampleFragment.zip - Google ドライブ

参考情報

参考

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

開発用デバイス

Androidの勉強をはじめた人は知っているようにエミュレーターはちょー遅い。
開発用に安いAndroidを買えば、勉強がはかどります!
iPhoneと比較すると安いので買ったほうがいいと思います。

おすすめデバイス

勉強用に使うだけなので価格が高い最新デバイスは必要ないと思います。
最新のデバイスは一人前のAndroidプログラマーになったら購入を検討しましょう。

nexus5 16GBASUS Nexus7 ( 2013 ) TABLET

その他に探すなら↓から。
Android nexus5を勉強用に購入

【Androidプログラミング入門 #029】ボタン2つの確認ダイアログ(AlertDialog)を表示する

はじめに

ユーザーに確認を求めるダイアログを表示したい。

表示したい内容は

  • タイトル
  • メッセージ
  • OKボタン
  • キャンセルボタン

です。

AlertDialogクラスを使うと作成できるようだ。
ここでは画面のボタンを押すと確認ダイアログが表示され、
「表示する」を押すとテキストを表示し、
「キャンセル」を押すとテキストを非表示にするサンプルを作成します。

1. プロジェクト作成

f:id:fjswkun:20151110215054p:plain

f:id:fjswkun:20151110215116p:plain

f:id:fjswkun:20151110215139p:plain

f:id:fjswkun:20151110215444p:plain

2. 画面レイアウトの作成

TextViewとButtonを配置します。

content_main.xmlを開く。
プロジェクト新規作成時に追加されているTextViewの修正と、
ボタンを配置する。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main" tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android: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"
        android:layout_below="@+id/textView"
        android:text="押す "/>
</RelativeLayout>

3. 確認ダイアログ表示機能の作成

MainActivity.javaを開き、onCreateメソッドを修正します。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

    final TextView textView = (TextView)findViewById(R.id.textView);

    Button button = (Button)findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // 確認ダイアログの作成
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
            alertDialog.setTitle("確認");
            alertDialog.setMessage("テキストビューに文字列を表示しますか?");
            alertDialog.setPositiveButton("表示する", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    textView.setText("こんにちは");
                }
            });
            alertDialog.setNegativeButton("キャンセル", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    textView.setText("");
                }
            });
            alertDialog.create().show();
        }
    });
}

4. 実行

実行してみます。

アプリ起動 「押す」ボタンを押す

f:id:fjswkun:20151110220110p:plain

「表示する」を押す

f:id:fjswkun:20151110220135p:plain

文字列を表示

f:id:fjswkun:20151110220143p:plain

うまく行かなかった方はこちらからサンプルをダウンロード。

SampleAlertDialg.zip - Google ドライブ

参考情報

参考

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

開発用デバイス

Androidの勉強をはじめた人は知っているようにエミュレーターはちょー遅い。
開発用に安いAndroidを買えば、勉強がはかどります!
iPhoneと比較すると安いので買ったほうがいいと思います。

おすすめデバイス

勉強用に使うだけなので価格が高い最新デバイスは必要ないと思います。
最新のデバイスは一人前のAndroidプログラマーになったら購入を検討しましょう。

nexus5 16GBASUS Nexus7 ( 2013 ) TABLET

その他に探すなら↓から。
Android nexus5を勉強用に購入

【Androidプログラミング入門 #028】設定値などちょっとしたデータを保存する

はじめに

設定値などちょっとしたデータを保存します。

SharedPreferencesクラスを使用します。

SharedPreferencesを使って保存できるデータ型

  • boolean
  • String
  • int
  • long
  • float
  • Set

ここではデフォルトのSharedPreferencesを使う方法を書きます。

テキストデータの保存

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences.Editor editor = preferences.edit(); editor.putString("text", "保存するテキスト"); editor.commit();

テキストデータの取得

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); textView.setText(preferences.getString("text", "保存されたデータがありません"));

サンプル

サンプルを作りました。

SampleSharedPreferences.zip - Google ドライブ

1. EditText欄に入力し、保存ボタンを押す

f:id:fjswkun:20151110002806p:plain

2. アプリを終了する。
3. アプリを起動し、読込ボタンを押す

保存されたテキストデータが表示されます。
アプリを終了してもデータが保存されていることがわかりました。
f:id:fjswkun:20151110002922p:plain

editText = (EditText)findViewById(R.id.edittext);
textView = (TextView)findViewById(R.id.textView);

Button button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // editTextに入力されているテキストを保存
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("text", editText.getText().toString());
        editor.commit();
    }
});
Button button2 = (Button)findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 保存されているデータを読込
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
        textView.setText(preferences.getString("text", "保存されたデータがありません"));
    }
});

参考情報

参考

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

開発用デバイス

Androidの勉強をはじめた人は知っているようにエミュレーターはちょー遅い。
開発用に安いAndroidを買えば、勉強がはかどります!
iPhoneと比較すると安いので買ったほうがいいと思います。

おすすめデバイス

勉強用に使うだけなので価格が高い最新デバイスは必要ないと思います。
最新のデバイスは一人前のAndroidプログラマーになったら購入を検討しましょう。

nexus5 16GBASUS Nexus7 ( 2013 ) TABLET

その他に探すなら↓から。
Android nexus5を勉強用に購入

【Androidプログラミング入門 #027】文字列を置き換える

文字列を置き換える

条件と一致する全ての文字列を置換する

StringクラスのreplaceAllメソッドを使う。

引数に検索条件文字列と置換する文字列を指定する。

String text = "今日、どこに行きますか?今日は新宿に服を買いに行きましょう";
String replacedText = text.replaceAll("今日","明日");
// 明日、どこに行きますか?明日は新宿に服を買いに行きましょう

参考情報

参考

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

開発用デバイス

Androidの勉強をはじめた人は知っているようにエミュレーターはちょー遅い。
開発用に安いAndroidを買えば、勉強がはかどります!
iPhoneと比較すると安いので買ったほうがいいと思います。

おすすめデバイス

勉強用に使うだけなので価格が高い最新デバイスは必要ないと思います。
最新のデバイスは一人前のAndroidプログラマーになったら購入を検討しましょう。

nexus5 16GBASUS Nexus7 ( 2013 ) TABLET

その他に探すなら↓から。
Android nexus5を勉強用に購入

【Androidプログラミング入門 #024】WebViewの表示待ち中にProgressDialogを表示する

はじめに

WebViewの表示待ち中に真っ白はいけてない。
すぐ表示されればいいけど、時間がかかると動作していないと思い、
アプリを終了されてしまうかもしれない。

なのでWebViewの表示待ち中にProgressDialogを表示します。

1. プロジェクト作成

f:id:fjswkun:20151106203713p:plain

f:id:fjswkun:20151106203722p:plain

f:id:fjswkun:20151106203732p:plain

f:id:fjswkun:20151106203742p:plain

2. 画面にWebViewを追加

content_main.xmlを開く。

プロジェクト作成時に追加されるTextViewを削除し、
WebViewを追加します。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main" tools:context=".MainActivity">

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></WebView>
</RelativeLayout>

3. WebViewの表示

MainActivity.javaを開き、onCreateメソッドにWebViewを表示する設定を追記します。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

    // WebViewの表示
    WebView webView = (WebView)findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("http://android.swift-studying.com");
}

4. インターネットアクセス許可の設定

AndroidManifest.xmlを開きます。

applicationタグの上にインターネットアクセス許可設定の一行を追加します。
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.swift_studying.samplewebviewwithprogressdialg" >

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

5. WebViewClientのサブクラスの作成

WebViewの読み込み中にProgressDialogを表示する場合、
WebViewClientのサブクラスを作成します。

ProgressDialgWebViewClientという名前でサブクラスを作成しました。

package com.swift_studying.samplewebviewwithprogressdialg;

import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.webkit.WebView;
import android.webkit.WebViewClient;

/**
 * Created by com.swift_studying on 15/11/06.
 */
public class ProgressDialgWebViewClient extends WebViewClient{
    private ProgressDialog progressDialog;

    public ProgressDialgWebViewClient(Context context, String message){
        super();

        progressDialog = new ProgressDialog(context);
        progressDialog.setMessage(message);
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        progressDialog.show();
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        progressDialog.dismiss();
    }
}

6. WebViewにWebViewClientのサブクラスをセット

MainActivity.javaを開きます。

WebViewの表示をする処理の部分に一行追加します。
手順5で作成したサブクラスをWebViewにセットします。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

    // WebViewの表示
    WebView webView = (WebView)findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new ProgressDialgWebViewClient(this, "データ取得中"));  // 追加
    webView.loadUrl("http://android.swift-studying.com");
}

7. 実行

実行します。

f:id:fjswkun:20151106210445p:plain

f:id:fjswkun:20151106210453p:plain

うまくいかない方はこちらからサンプルをダウンロード。

SampleWebViewWithProgressDialg.zip - Google ドライブ

参考情報

参考

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

開発用デバイス

Androidの勉強をはじめた人は知っているようにエミュレーターはちょー遅い。
開発用に安いAndroidを買えば、勉強がはかどります!
iPhoneと比較すると安いので買ったほうがいいと思います。

おすすめデバイス

勉強用に使うだけなので価格が高い最新デバイスは必要ないと思います。
最新のデバイスは一人前のAndroidプログラマーになったら購入を検討しましょう。

nexus5 16GBASUS Nexus7 ( 2013 ) TABLET

その他に探すなら↓から。
Android nexus5を勉強用に購入

【Androidプログラミング入門 #022】アクティビティのタイトルバーのタイトルを動的に変更する

はじめに

アクティビティのタイトルバーのタイトルを動的に変更する。

やりかた

タイトルを変更したい部分で↓をするだけ。

setTitle("変更したいタイトル");
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        setTitle("変更したよ");
    }
});

サンプル

ボタンを押すとタイトルを変更するサンプルを作りました。

こちらからダウンロード。
SampleChangeTitle.zip - Google ドライブ

f:id:fjswkun:20151104213232p:plain

f:id:fjswkun:20151104213244p:plain

参考情報

参考

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

開発用デバイス

Androidの勉強をはじめた人は知っているようにエミュレーターはちょー遅い。
開発用に安いAndroidを買えば、勉強がはかどります!
iPhoneと比較すると安いので買ったほうがいいと思います。

おすすめデバイス

勉強用に使うだけなので価格が高い最新デバイスは必要ないと思います。
最新のデバイスは一人前のAndroidプログラマーになったら購入を検討しましょう。

nexus5 16GBASUS Nexus7 ( 2013 ) TABLET

その他に探すなら↓から。
Android nexus5を勉強用に購入

【Androidプログラミング入門 #021】アプリアイコンを設定する

はじめに

作っているアプリがある程度かたちになってきたら、
アプリアイコンを設定するとモチベーションがあがる。

なので、アプリアイコンの設定方法を調べた。

1. アイコン画像を作成する

準備するアイコン画
  • mdpi 48 × 48
  • hdpi 72 × 72
  • xhdpi 96 × 96
  • xxhdpi 144 × 144

GooglePlayに登録する場合、 512 × 512
も作成する必要があります。

2. 画像保存フォルダの作成

resフォルダ配下に以下4つのフォルダを作成します。

  • drawable-mdpi
  • drawable-hdpi
  • drawable-hdpi
  • drawable-xxhdpi

f:id:fjswkun:20151104210347p:plain

3. 画像保存フォルダに画像を入れる

  • mdpi 48 × 48 → drawable-mdpi
  • hdpi 72 × 72 → drawable-hdpi
  • xhdpi 96 × 96 → drawable-hdpi
  • xxhdpi 144 × 144 → drawable-xxhdpi

4. マニフェストファイルに設定

AndroidManifest.xmlを開く。
android:icon部分を探し、変更します。

画像名がiconとすると下記の通り。

変更前(初期設定) android:icon="@mipmap/ic_launcher"

変更後 android:icon="@drawable/icon"

5. 実行

ビルドしてみましょう。
アプリアイコンが変わります。

参考情報

参考

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

開発用デバイス

Androidの勉強をはじめた人は知っているようにエミュレーターはちょー遅い。
開発用に安いAndroidを買えば、勉強がはかどります!
iPhoneと比較すると安いので買ったほうがいいと思います。

おすすめデバイス

勉強用に使うだけなので価格が高い最新デバイスは必要ないと思います。
最新のデバイスは一人前のAndroidプログラマーになったら購入を検討しましょう。

nexus5 16GBASUS Nexus7 ( 2013 ) TABLET

その他に探すなら↓から。
Android nexus5を勉強用に購入

【Androidプログラミング入門 #020】現在日時を取得する

はじめに

Dateクラスで現在日時をとれるのかと思ったら、取れなかった。

Systemクラスを使って取得するようだ。

// ミリ秒
System.currentTimeMillis();

// Date型にする場合
Date now = new Date(System.currentTimeMillis(

日付フォーマット

これはミリ秒なので、画面に年月日で表示する場合は、
フォーマットしてあげる必要がある。

// 現在日時の取得
Date now = new Date(System.currentTimeMillis());

// 日時のフォーマットオブジェクト作成
DateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分");

// フォーマット
String nowText = formatter.format(now);

// 表示
TextView textView = (TextView)findViewById(R.id.textView);
textView.setText(nowText);

実行

f:id:fjswkun:20151104171836p:plain

参考情報

参考

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

開発用デバイス

Androidの勉強をはじめた人は知っているようにエミュレーターはちょー遅い。
開発用に安いAndroidを買えば、勉強がはかどります!
iPhoneと比較すると安いので買ったほうがいいと思います。

おすすめデバイス

勉強用に使うだけなので価格が高い最新デバイスは必要ないと思います。
最新のデバイスは一人前のAndroidプログラマーになったら購入を検討しましょう。

nexus5 16GBASUS Nexus7 ( 2013 ) TABLET

その他に探すなら↓から。
Android nexus5を勉強用に購入

【Androidプログラミング入門 #019】オプションメニューを表示する

はじめに

オプションメニューを表示します。

オプションメニューとは?
タイトルバーの右にあるやつです。
f:id:fjswkun:20151103194826p:plain

1. プロジェクトの作成

f:id:fjswkun:20151103194503p:plain

f:id:fjswkun:20151103194522p:plain

f:id:fjswkun:20151103194535p:plain

f:id:fjswkun:20151103194551p:plain

2. メニューのレイアウトの作成

ファイル追加

menuフォルダの中にmenuファイルを作成します。

f:id:fjswkun:20151103195256p:plain

menuファイルの中身を書く

itemタグを追加するとメニュー内の選択項目を増やすことができます。

<menu 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" tools:context=".MainActivity">
    <item
        android:id="@+id/action_settings"
        android:title="@string/action_settings"
        android:orderInCategory="100"
        app:showAsAction="never" />
    <item
        android:id="@+id/action_help"
        android:title="Help"
        android:orderInCategory="101"
        app:showAsAction="never" />
</menu>

3. アクティビティでオプションメニューを表示するソースを書く

MainActivity.javaを開きます。 メニューで表示された項目をタップするとトースト表示されるようにしました。

@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) {
        Toast.makeText(this, "設定", Toast.LENGTH_SHORT).show();
        return true;
    }else if(id == R.id.action_help){
        Toast.makeText(this, "ヘルプ!", Toast.LENGTH_SHORT).show();
        return true;
    }

    return super.onOptionsItemSelected(item);
}

4. 実行

実行します。

f:id:fjswkun:20151103200029p:plain

f:id:fjswkun:20151103200037p:plain

Helpを押してみます。
トーストでヘルプ!と表示されます。
f:id:fjswkun:20151103200046p:plain

うまく実行できなかった方はこちらからサンプルを
ダウンロードして確認してみてください。

SampleOptionMenu.zip - Google ドライブ

参考情報

参考

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

開発用デバイス

Androidの勉強をはじめた人は知っているようにエミュレーターはちょー遅い。
開発用に安いAndroidを買えば、勉強がはかどります!
iPhoneと比較すると安いので買ったほうがいいと思います。

おすすめデバイス

勉強用に使うだけなので価格が高い最新デバイスは必要ないと思います。
最新のデバイスは一人前のAndroidプログラマーになったら購入を検討しましょう。

nexus5 16GBASUS Nexus7 ( 2013 ) TABLET

その他に探すなら↓から。
Android nexus5を勉強用に購入