短縮ダイヤルアプリ | AndroidBasic卒業生作成アプリ

この記事は2014年2月3日に書かれたものです。内容が古い可能性がありますのでご注意ください。


卒業生が作成した電話帳アプリ

こんにちは!
当校のAndroidアプリケーション開発講座Basicの卒業生が作成したアプリを御紹介します。
尚、以下の点にご注意ください。

  • 保証について
  • 当アプリは商用利用を目的としている訳ではありません。したがって、当アプリを模倣しアプリを作成および使用した場合に生じたトラブルに関しまして、当校では一切の責任を負いかねますので予めご了承ください。

  • 作成者について
  • ここでは卒業生の中でも比較的にプログラム経験がない方が作成したアプリを御紹介致します。
    未経験でもここまで作れるようになります!

アプリの概要

このアプリは簡単な電話帳です。
時間の制約上、細かい機能等は付いていません。

このアプリではデータベースを用いており、標準の電話帳のデータベースからデータを抜き出して表示するものではありません。ちゃんと一から作ってくださいました!笑

アプリのキャプチャ

  • アプリ起動時のスプラッシュ画面とメイン画面
  • アプリを起動すると「スプラッシュ画面」というトップ画面が出てきて、数秒後にメイン画面に移動します。
    メイン画面には「新規」ボタンと「全削除」ボタンを設置しています。
    1

    2

  • 番号登録
  • メイン画面で「新規」ボタンをクリックするとこの画面が起動します。
    項目を入力し「登録」ボタンをクリックすると登録されます。
    登録が終了するとメイン画面に追加されます。(下右図)
    3

    4

  • 登録内容の修正および削除
  • メイン画面で各項目をクリックすると、その項目の「編集画面」に移動します。
    「編集画面」内にはボタンが3つ設定されています。
    「上書き」ボタンをクリックすると、そのデータを「上書き」します。
    「電話」ボタンをクリックすると、通話を開始します。
    「削除」ボタンをクリックすると、そのデータを削除します。
    5

  • 登録データ削除
  • この「全削除」ボタンは登録しているすべてのデータを削除するボタンです。
    削除前にちゃんと確認用の「ダイアログ」を表示させています!!
    9

    アプリのソースコード

    このアプリは以下のような構成となっています。

    Activityファイル(javaファイル) 画面レイアウトファイル(xmlファイル) 用途
    MainActivity.java activity_main.xml メイン画面
    EntryActivity.java activity_entry.xml 登録画面
    RevisionActivity.java activity_revision.xml 項目の詳細画面
    SplashActivity.java activity_splash アプリ起動時のスプラッシュ画面

    尚、この他に、画面ではありませんが「データベース」の生成を行っている「MyOpenHelper.java」があります。
    また、「Table.java」という定数を定義しているファイルがあります。

    1. メイン画面
      • MainActivity.java
      • package com.example.speeddialing;
        
        import android.app.Activity;
        import android.app.AlertDialog;
        import android.content.DialogInterface;
        import android.content.DialogInterface.OnClickListener;
        import android.content.Intent;
        import android.database.Cursor;
        import android.database.sqlite.SQLiteDatabase;
        import android.os.Bundle;
        import android.view.Menu;
        import android.view.MenuItem;
        import android.view.View;
        import android.widget.AdapterView;
        import android.widget.AdapterView.OnItemClickListener;
        import android.widget.ListAdapter;
        import android.widget.ListView;
        import android.widget.SimpleCursorAdapter;
        
        public class MainActivity extends Activity implements OnItemClickListener {
        
        	private MyOpenHelper helper = new MyOpenHelper(this);
        	private SQLiteDatabase db;
        
        	private AlertDialog alertDialog;
        
        	@Override
        	protected void onCreate(Bundle savedInstanceState) {
        		super.onCreate(savedInstanceState);
        		setContentView(R.layout.activity_main);
        
        		db = helper.getWritableDatabase();
        
        		Cursor c = db.rawQuery("select rowid as " + Table.ID + ", "
        				+ Table.NAME + ", " + Table.NUMBER + " from "
        				+ Table.TABLE_NAME, null);
        		c.moveToFirst();
        		startManagingCursor(c);
        
        		ListAdapter adapter = new SimpleCursorAdapter(this,
        				android.R.layout.simple_list_item_2, c, new String[] {
        						Table.NAME, Table.NUMBER }, new int[] {
        						android.R.id.text1, android.R.id.text2 });
        
        		ListView listView = (ListView) findViewById(R.id.ListView1);
        		listView.setAdapter(adapter);
        		listView.setOnItemClickListener(this);
        	}
        
        	@Override
        	public void onItemClick(AdapterView<?> parent, View view, int position,
        			long id) {
        
        		Intent intent = new Intent(MainActivity.this, RevisionActivity.class);
        		intent.putExtra("id", id);
        		startActivity(intent);
        	}
        
        	@Override
        	public boolean onCreateOptionsMenu(Menu menu) {
        		menu.add(0, 0, 0, "新規");
        		menu.add(0, 1, 10, "全削除");
        		return true;
        	}
        
        	@Override
        	public boolean onOptionsItemSelected(MenuItem item) {
        
        		switch (item.getItemId()) {
        		case 0:
        			Intent intent = new Intent(MainActivity.this, EntryActivity.class);
        			startActivity(intent);
        			return true;
        
        		case 1:
        			Alert();
        			return true;
        
        		default:
        			break;
        		}
        		return super.onOptionsItemSelected(item);
        	}
        
        	public void Alert() {
        		AlertDialog.Builder builder = new AlertDialog.Builder(this);
        		builder.setTitle("注意");
        		builder.setMessage("すべての短縮ダイヤルをリセットします。" + "n" + "よろしいですか?");
        		builder.setPositiveButton("削除", new OnClickListener() {
        
        			@Override
        			public void onClick(DialogInterface dialog, int which) {
        				db.delete(Table.TABLE_NAME, null, null);
        
        				Intent intent = new Intent(MainActivity.this,
        						MainActivity.class);
        				startActivity(intent);
        			}
        		});
        		builder.setNegativeButton("キャンセル",
        				new DialogInterface.OnClickListener() {
        
        					@Override
        					public void onClick(DialogInterface dialog, int which) {
        						dialog.dismiss();
        					}
        				});
        		builder.setCancelable(true);
        		alertDialog = builder.create();
        		alertDialog.show();
        	}
        }
        
      • activity_main.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:orientation="vertical"
            android:padding="15dp"
            tools:context=".MainActivity" >
        
            <ListView
                android:id="@+id/ListView1"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >
            </ListView>
        
        </LinearLayout>
        
      ページ:

      1

      2
      • このエントリーをはてなブックマークに追加

PAGE TOP