週末のアプリ作成

androidアプリ個人開発者の実態を報告します。アプリの収入も公開中です♪

覚える漢字カード小学2年 ついにリリース ★サンプルコード紹介

こんにちは、TF's appsです。

今回の記事は娘のための学習アプリ作成 最終章(5話)です。

 

2月23日にアプリをリリースしました。

令和天皇の誕生日と同じです。。。何ともありがたいです。

 

覚える漢字カード 小学2年

https://play.google.com/store/apps/details?id=tfsapps.kanjicard&hl=ja

f:id:TFs_apps:20200224080602p:plain

 

最後にはソースコード紹介しますので

これからプログラミングを始める方や

これからアプリ作成始めようと考える方

一つの参考例として確認下さいね

 

 

〇アプリの作成時間はどれくらい?

 15時間くらいかな

 

〇アプリ作成で苦労した点は?

 160個のデータ入力

 小学2年の覚える漢字は全160個なんです。

 下記データを合計900個を手入力しましたので

  漢字 ・・・160個

  音読み・・・160個

  訓読み・・・160個

  画数 ・・・160個

  例文 ・・・160個

 

〇アプリ作成の反省点は?

 漢字データのファイル化を途中で気付く

 途中で気付いたのですが、漢字データを

 ファイル(CSV)で管理すべきだったと(涙)

 今後、小学1年、3年・・・6年までシリーズ化

 する事も想定して、このアプリの心臓部である漢字

 データをファイルで差し替えることができるからです。

 つまりファイルの差し替えだけでソースをいじる必要

 が無くなるわけですよね。

 行き当たりばったりで作ったことが鮮明に結果として

 出ているなぁ・・・・(汗)

 皆さんはちゃんと今後の展開や保守面なども考えて

 実装してくださいね。どこがでリファクタリングします。

 

〇アプリの作成の目的た?娘の反応は?

 まずまずの反応ですかね

 何やかんや言いながら使ってくれてます。

 目的は達成した気がします。

 春休みの宿題にして欲しいですね。

 まだ習っていない漢字に遭遇すると

 フリーズします。。。。

 私が未知のバグと遭遇するかのように(笑)

 

 

この漢字アプリ、シリーズ5話にして完成しましたので

ではまた次のアプリに向けて週末のアプリ作成を進めていきますね。

次回また次回お会いしましょう♪ 

 

 

<以下ソース公開>

MainActivity.java

package tfsapps.kanjicard;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

private KanjiTable _kanji_table; //漢字検索テーブル
private Kanji _display_kanji; //表示中の漢字
private String _display_status; //表示中のアプリ説明文
private String _display_progress; //表示中の進捗情報
android.support.v7.app.AlertDialog.Builder popup;
private TextView popuptext;
private boolean isStart = false;
private int disp_count = 0;

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

//漢字テーブルの作成
_kanji_table = new KanjiTable();
DisplayScreen();
}
/* アプリ画面の表示 */
public void DisplayScreen()
{
TextView btn_start = (TextView) findViewById(R.id.btn_start);
TextView text_status = (TextView) findViewById(R.id.text_status);
TextView text_status2 = (TextView) findViewById(R.id.text_status2);
TextView text_onyomi = (TextView) findViewById(R.id.text_onyomi);
TextView text_kunyomi = (TextView) findViewById(R.id.text_kunyomi);
TextView text_kakusuu = (TextView) findViewById(R.id.text_kakusuu);
TextView text_exp = (TextView) findViewById(R.id.text_exp);

String txt1 = ""; //onyomi
String txt2 = ""; //kunyomi
String txt3 = ""; //kunyomi
String txt4 = ""; //kakusuu

if (isStart == false)
{
btn_start.setText("はじめる");
text_status.setText("「はじめる」を押してね☆");
text_status2.setText("");
}
else
{
btn_start.setText("つぎへ");
text_status.setText("「つぎへ」を押してね☆");
text_status2.setText("いま:"+ disp_count + "個目 / ぜんぶ:" + _kanji_table.KanjiTableMax() + "個");

txt1 = _display_kanji.on_yomi;
txt2 = _display_kanji.kun_yomi;
txt3 = _display_kanji.kaku_suu;
txt4 = _display_kanji.exsample;
}
text_onyomi.setText(txt1);
text_kunyomi.setText(txt2);
text_kakusuu.setText(txt3);
text_exp.setText(txt4);
}

/* はじめる or 次へ */
public void onStart(View view) {

disp_count++; //何個目で漢字であるかのカウンター

if (isStart == false) //起動画面か否か
{
isStart = true;
}
//漢字検索
_display_kanji = _kanji_table.KanjiTableSearch();

/* 検索終了したら、全ての漢字が検索終了したら */
if (_display_kanji == null) {
isStart = false;
disp_count = 0;
_kanji_table.KanjiTableSearchReset();
}
DisplayScreen();
}
/* こたえ */
public void onResult(View view) {

if (isStart == false)
{
return;
}

//答えの漢字の拡大表示
popuptext = new TextView(this);
popuptext.setText(_display_kanji.kanji);
popuptext.setGravity(Gravity.CENTER);
popuptext.setTextSize(100);

popup = new android.support.v7.app.AlertDialog.Builder(this).setView(popuptext);
popup.setTitle("こたえの漢字");
popup.setPositiveButton("とじる", null);
popup.show();
}

}

Kanji.java

package tfsapps.kanjicard;

public class Kanji {
public String kanji; //漢字
public String on_yomi; //音読み
public String kun_yomi; //訓読み
public String exsample; //例文
public String kaku_suu; //画数

public boolean isAlive; //表示された否か

//コンストラク
public Kanji(String kan, String onyomi, String kunyomi, String exp, String suu)
{
this.kanji = kan;
this.on_yomi = onyomi;
this.kun_yomi = kunyomi;
this.exsample = exp;
this.kaku_suu = suu;
this.isAlive = true;
}
}


KanjiTable.java

package tfsapps.kanjicard;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class KanjiTable {

private List<Kanji> Kanji_List = new ArrayList<Kanji>();
final int Maxkanji = 160;
private final Random rand = new Random(System.currentTimeMillis());
private Kanji nowkanji;

static String[] kanji_data = {
// 漢字
"刀", //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
"高", //113
"紙", //114
"時", //115
"弱", //116
"書", //117
"通", //118
"馬", //119
"魚", //120
"教", //121
"強", //122
"黄", //123
"黒", //124
"細", //125
"週", //126
"雪", //127
"船", //128
"組", //129
"鳥", //130
"野", //131
"理", //132
"雲", //133
"絵", //134
"間", //135
"場", //136
"晴", //137
"朝", //138
"答", //139
"道", //140
"買", //141
"番", //142
"園", //143
"遠", //144
"楽", //145
"新", //146
"数", //147
"電", //148
"話", //149
"歌", //150
"語", //151
"算", //152
"読", //153
"聞", //154
"鳴", //155
"線", //156
"親", //157
"頭", //158
"顔", //159
"曜", //160
};

static String[] onyomi_data = {
// 音読み
"トウ", //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 原
"コウ", //113 高
"シ", //114 紙
"ジ", //115 時
"ジャク", //116 弱
"ショ", //117 書
"ツウ", //118 通
"バ", //119 馬
"ギョ", //120 魚
"キョウ", //121 教
"キョウ、ゴウ", //122 強
"オウ、コウ", //123 黄
"コク", //124 黒
"サイ", //125 細
"シュウ", //126 週
"セツ", //127 雪
"セン", //128 船
"ソ", //129 組
"チョウ", //130 鳥
"ヤ", //131 野
"リ", //132 理
"ウン", //133 雲
"エ、カイ", //134 絵
"カン、ケン", //135 間
"ジョウ", //136 場
"セイ", //137 晴
"チョウ", //138 朝
"トウ", //139 答
"ドウ", //140 道
"バイ", //141 買
"バン", //142 番
"エン", //143 園
"エン", //144 遠
"ガク、ラク", //145 楽
"シン", //146 新
"スウ", //147 数
"デン", //148 電
"ワ", //149 話
"カ", //150 歌
"ゴ", //151 語
"サン", //152 算
"ドク、トク、トウ", //153 読
"ブン", //154 聞
"メイ", //155 鳴
"セン", //156 線
"シン", //157 親
"トウ、ズ", //158 頭
"ガン", //159 顔
"ヨウ", //160 曜
};

static String[] kunyomi_data = {
// 訓読み
"かたな", //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 原
"たか(い)、たか(める)", //113 高
"かみ", //114 紙
"とき", //115 時
"よわ(い)、よわ(める)", //116 弱
"か(く)", //117 書
"とお(る)、とお(す)", //118 通
"うま", //119 馬
"うお、さかな", //120 魚
"おし(える)、おそ(わる)", //121 教
"つよ(い)、つよ(める)", //122 強
"き", //123 黄
"くろ、くろ(い)", //124 黒
"ほそ(い)、こま(かい)", //125 細
"", //126 週
"ゆき", //127 雪
"ふね、ふな", //128 船
"くみ、く(む)", //129 組
"とり", //130 鳥
"の", //131 野
"", //132 理
"くも", //133 雲
"", //134 絵
"あいだ、ま", //135 間
"ば", //136 場
"は(れる)、は(らす)", //137 晴
"あさ", //138 朝
"こた(える)、こた(え)", //139 答
"みち", //140 道
"か(う)", //141 買
"", //142 番
"その", //143 園
"とお(い)", //144 遠
"たの(しい)、たの(しむ)", //145 楽
"あたら(しい)、あら(た)", //146 新
"かず、かぞ(える)", //147 数
"", //148 電
"はな(す)、はなし", //149 話
"うた、うた(う)", //150 歌
"かた(る)、かた(らう)", //151 語
"", //152 算
"よ(む)", //153 読
"き(く)、き(こえる)", //154 聞
"な(く)、な(らす)", //155 鳴
"", //156 線
"おや、した(しい)", //157 親
"あたま、かしら", //158 頭
"かお", //159 顔
"", //160 曜
};

static String[] exp_data = {
// 例文
"この[かたな]", //1 刀
"[まる]太の木", //2 丸
"[ゆみ]矢", //3 弓
"[コウ]作", //4 工
"きみは天[サイ]だ", //5 才
"一[マン]円", //6 万
"つな[ひ]き", //7 引
"[ギュウ]にゅう", //8 牛
"[ゲン]気な子ども", //9 元
"[と]じまりをする", //10 戸
"正[ゴ]は12時だ", //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 昼
"テストで100[テン]をとる", //105 点
"[みなみ]のしまに行く", //106 南
"[フウ]船をもらう", //107 風
"[カ]ぞくが大切", //108 家
"[なつ]はあつい", //109 夏
"家に[かえ]る", //110 帰
"にっ[キ]を書く", //111 記
"[はら]っぱでねる", //112 原
"[たか]い山がある", //113 高
"[かみ]ひこうきを作る", //114 紙
"のこり[ジ]間", //115 時
"[よわ]い人と強い人", //116 弱
"かん字を[か]く", //117 書
"[とお]り道", //118 通
"[うま]にのる", //119 馬
"金[ぎょ]をかう", //120 魚
"べん強を[おし]える", //121 教
"あの人は[きょう]てきだ", //122 強
"[き]色のリボン", //123 黄
"[コク]ばんに書く", //124 黒
"糸は[ほそ]い", //125 細
"今[シュウ]のこんだて", //126 週
"[ゆき]だるま", //127 雪
"[ふね]にのる", //128 船
"[く]み立てる", //129 組
"わたり[どり]", //130 鳥
"[ヤ]さいがにがて", //131 野
"もんだいを[リ]かいする", //132 理
"[くも]がはれてきた", //133 雲
"[エ]をかくのがすきだ", //134 絵
"休み時[カン]", //135 間
"広[ば]に行く", //136 場
"明日は[は]れる", //137 晴
"[あさ]から元気だ", //138 朝
"[こた]え合わせ", //139 答
"帰り[みち]", //140 道
"[か]いものをする", //141 買
"そうじ当[バン]", //142 番
"ようち[エン]の先生", //143 園
"[エン]足に行く", //144 遠
"[たの]しい音がく", //145 楽
"[シン]かんせんにのる", //146 新
"算[スウ]がとくい", //147 数
"[デン]車にのる", //148 電
"電[ワ]ではなす", //149 話
"みんなで[うた]う", //150 歌
"ゆめを[かた]る", //151 語
"あん[ザン]がとくい", //152 算
"本を[よ]む", //153 読
"話を[き]く", //154 聞
"ねこの[な]き声", //155 鳴
"[セン]ろがつづく", //156 線
"[おや]が大切だ", //157 親
"[あたま]のよい人", //158 頭
"[かお]を上げる", //159 顔
"日[ヨウ]日が楽しみ", //160 曜
};

static String[] kakusuu_data = {
// 画数
"2", //1 刀
"3", //2 丸
"3", //3 弓
"3", //4 工
"3", //5 才
"3", //6 万
"4", //7 引
"4", //8 牛
"4", //9 元
"4", //10 戸
"4", //11 午
"4", //12 公
"4", //13 今
"4", //14 止
"4", //15 少
"4", //16 心
"4", //17 切
"4", //18 太
"4", //19 内
"4", //20 父
"4", //21 分
"4", //22 方
"4", //23 毛
"5", //24 友
"5", //25 外
"5", //26 兄
"5", //27 古
"5", //28 広
"5", //29 市
"5", //30 矢
"5", //31 台
"5", //32 冬
"5", //33 半
"5", //34 母
"5", //35 北
"5", //36 用
"6", //37 羽
"6", //38 会
"6", //39 回
"6", //40 考
"6", //41 光
"6", //42 交
"6", //43 行
"6", //44 合
"6", //45 寺
"6", //46 自
"6", //47 色
"6", //48 西
"6", //49 多
"6", //50 池
"6", //51 地
"6", //52 当
"6", //53 同
"6", //54 肉
"6", //55 米
"6", //56 毎
"7", //57 何
"7", //58 角
"7", //59 汽
"7", //60 近
"7", //61 形
"7", //62 言
"7", //63 谷
"7", //64 作
"7", //65 社
"7", //66 図
"7", //67 声
"7", //68 走
"7", //69 体
"7", //70 弟
"7", //71 売
"7", //72 麦
"7", //73 来
"7", //74 里
"8", //75 画
"8", //76 岩
"8", //77 京
"8", //78 国
"8", //79 姉
"8", //80 知
"8", //81 長
"8", //82 直
"8", //83 店
"8", //84 東
"8", //85 歩
"8", //86 妹
"8", //87 明
"8", //88 門
"8", //89 夜
"9", //90 科
"9", //91 海
"9", //92 活
"9", //93 計
"9", //94 後
"9", //95 思
"9", //96 室
"9", //97 首
"9", //98 秋
"9", //99 春
"9", //100 食
"9", //101 星
"9", //102 前
"9", //103 茶
"9", //104 昼
"9", //105 点
"9", //106 南
"9", //107 風
"10", //108 家
"10", //109 夏
"10", //110 帰
"10", //111 記
"10", //112 原
"10", //113 高
"10", //114 紙
"10", //115 時
"10", //116 弱
"10", //117 書
"10", //118 通
"10", //119 馬
"11", //120 魚
"11", //121 教
"11", //122 強
"11", //123 黄
"11", //124 黒
"11", //125 細
"11", //126 週
"11", //127 雪
"11", //128 船
"11", //129 組
"11", //130 鳥
"11", //131 野
"11", //132 理
"12", //133 雲
"12", //134 絵
"12", //135 間
"12", //136 場
"12", //137 晴
"12", //138 朝
"12", //139 答
"12", //140 道
"12", //141 買
"12", //142 番
"13", //143 園
"13", //144 遠
"13", //145 楽
"13", //146 新
"13", //147 数
"13", //148 電
"13", //149 話
"14", //150 歌
"14", //151 語
"14", //152 算
"14", //153 読
"14", //154 聞
"14", //155 鳴
"15", //156 線
"16", //157 親
"16", //158 頭
"18", //159 顔
"18", //160 曜
};

//コンストラク
public KanjiTable() {
int i;

/* 漢字リスト作成 */
for (i = 0; i < Maxkanji; i++) {
Kanji list_data = new Kanji(kanji_data[i], onyomi_data[i], kunyomi_data[i], exp_data[i], kakusuu_data[i]);
Kanji_List.add(list_data);
}
}

//漢字の検索
public Kanji KanjiTableSearch()
{
int index1 = 0;
int i;
int j;

for(i=0;i<Maxkanji;i++)
{
index1 = rand.nextInt(Maxkanji);

//検索済みの漢字(すでに表示済み)
if (Kanji_List.get(index1).isAlive == false)
{
continue;
}
//初ヒットした漢字
else
{
Kanji_List.get(index1).isAlive = false;
nowkanji = Kanji_List.get(index1);
return nowkanji;
}
}

//ランダム検索でヒットしなかった漢字をもう一度全件サーチする
for (j=0; j<Maxkanji; j++)
{
if(Kanji_List.get(j).isAlive == false)
{
continue;
}
else
{
Kanji_List.get(j).isAlive = false;
nowkanji = Kanji_List.get(j);
return nowkanji;
}
}

return null;
}

//漢字の検索状態の初期化
public void KanjiTableSearchReset()
{
int i;
for(i=0;i<Maxkanji;i++)
{
Kanji_List.get(i).isAlive = true;
}
}

public int KanjiTableMax()
{
return this.Maxkanji;
}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:layout_weight="1">

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


<LinearLayout
android:id="@+id/linearLayout4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bak_status"
android:orientation="vertical" >

<TextView
android:id="@+id/text_status"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="44"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:focusable = "true"
android:focusableInTouchMode = "true"
android:text=" ここに説明文を表示 "
android:gravity="center_horizontal"
android:textSize="28sp" />

<TextView
android:id="@+id/text_status2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="30"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:text=" ここに進捗を表示 "
android:gravity="center_horizontal"
android:textSize="21sp"
android:textStyle="bold" />

</LinearLayout>

<LinearLayout
android:id="@+id/linearLayout0"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_alignParentStart="true"
android:layout_marginStart="2dp"
android:layout_marginEnd="2dp"
android:layout_below="@+id/linearLayout4"
android:orientation="horizontal">

<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:background="@drawable/bak_noselect"
android:orientation="vertical">

<TextView
android:id="@+id/ttl_onyomi"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="15"
android:layout_marginEnd="2dp"
android:layout_marginStart="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:background="@drawable/bak_ttl"
android:text="音読み"
android:textSize="30sp" />

<TextView
android:id="@+id/ttl_kunyomi"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginEnd="2dp"
android:layout_marginStart="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:layout_weight="15"
android:background="@drawable/bak_ttl"
android:text="訓読み"
android:textSize="30sp" />


<TextView
android:id="@+id/ttl_kakusuu"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginEnd="2dp"
android:layout_marginStart="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:layout_weight="10"
android:background="@drawable/bak_ttl"
android:text="画数"
android:textSize="30sp" />

<TextView
android:id="@+id/ttl_exp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginEnd="2dp"
android:layout_marginStart="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:layout_weight="15"
android:background="@drawable/bak_ttl"
android:text="例文"
android:textSize="30sp" />

</LinearLayout>

<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="7"
android:background="@drawable/bak_noselect"
android:orientation="vertical">

<TextView
android:id="@+id/text_onyomi"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="15"
android:layout_marginEnd="2dp"
android:layout_marginStart="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:background="@drawable/bak_text"
android:text=""
android:textSize="28sp" />

<TextView
android:id="@+id/text_kunyomi"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginEnd="2dp"
android:layout_marginStart="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:background="@drawable/bak_text"
android:layout_weight="15"
android:text=""
android:textSize="27sp" />

<TextView
android:id="@+id/text_kakusuu"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginEnd="2dp"
android:layout_marginStart="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:background="@drawable/bak_text"
android:layout_weight="10"
android:text=""
android:textSize="33sp" />

<TextView
android:id="@+id/text_exp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginEnd="2dp"
android:layout_marginStart="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:background="@drawable/bak_text"
android:layout_weight="15"
android:text=""
android:textSize="27sp" />

</LinearLayout>

</LinearLayout>


<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/linearLayout0"
android:orientation="horizontal">

<Button
android:id="@+id/btn_start"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginEnd="2dp"
android:layout_marginStart="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:onClick="onStart"
android:text="はじめる"
android:textColor="#ffffff"
android:background="@drawable/bak_btn_1"
android:textSize="36sp"
android:textStyle="bold" />

<Button
android:id="@+id/btn_result"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginEnd="2dp"
android:layout_marginStart="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:onClick="onResult"
android:text="こたえ"
android:textColor="#ffffff"
android:background="@drawable/bak_btn_2"
android:textSize="36sp"
android:textStyle="bold" />

</LinearLayout>

</RelativeLayout>

</ScrollView>