卒業生が作成した電話帳アプリ
こんにちは!
当校のAndroidアプリケーション開発講座Basicの卒業生が作成したアプリを御紹介します。
尚、以下の点にご注意ください。
- 保証について
- 作成者について
当アプリは商用利用を目的としている訳ではありません。したがって、当アプリを模倣しアプリを作成および使用した場合に生じたトラブルに関しまして、当校では一切の責任を負いかねますので予めご了承ください。
ここでは卒業生の中でも比較的にプログラム経験がない方が作成したアプリを御紹介致します。
未経験でもここまで作れるようになります!
アプリの概要
このアプリは簡単な電話帳です。
時間の制約上、細かい機能等は付いていません。
このアプリではデータベースを用いており、標準の電話帳のデータベースからデータを抜き出して表示するものではありません。ちゃんと一から作ってくださいました!笑
アプリのキャプチャ
- アプリ起動時のスプラッシュ画面とメイン画面
- 番号登録
- 登録内容の修正および削除
- 登録データ削除
- メイン画面
- MainActivity.java
- activity_main.xml
アプリを起動すると「スプラッシュ画面」というトップ画面が出てきて、数秒後にメイン画面に移動します。
メイン画面には「新規」ボタンと「全削除」ボタンを設置しています。
メイン画面で「新規」ボタンをクリックするとこの画面が起動します。
項目を入力し「登録」ボタンをクリックすると登録されます。
登録が終了するとメイン画面に追加されます。(下右図)
メイン画面で各項目をクリックすると、その項目の「編集画面」に移動します。
「編集画面」内にはボタンが3つ設定されています。
「上書き」ボタンをクリックすると、そのデータを「上書き」します。
「電話」ボタンをクリックすると、通話を開始します。
「削除」ボタンをクリックすると、そのデータを削除します。
この「全削除」ボタンは登録しているすべてのデータを削除するボタンです。
削除前にちゃんと確認用の「ダイアログ」を表示させています!!
アプリのソースコード
このアプリは以下のような構成となっています。
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | 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(); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 > |