60日間全力プログラミング

プログラミング初心者が二ヶ月間でどこまでいけるかを記録したプログラミング学習ブログ

Androidクイズアプリできた!

クイズの問題と答えを他のファイルに書き、そこから引っ張ってくる書き方は他のことにも応用できそうです。Scoreの数え方がちょっとどこに書けばいいのか、的確の場所をすぐに探し出せる自身はありませんが、booleanの設定はわかった気がします。
 
 
  • Androidでクイズアプリを作ろう終了
 
LinearLayout とLayout_weightってすごい便利ですね。簡単にバランスのとれたデザインがすぐできる!
 
try-catch文を使って例外処理を書く
 
javaファイルの名前を変更したら、ファイルが動かなくなり、layoutファイル、manifests, strings.xmlなど様々なファイルの名前を同じように変更しなければならないので大変でした!
 
クイズの問題答えは、テキストファイルを作り、そこに書き込む。Assetの中に入っているので、javaでそこから呼びだすコードを書く。
What is A?  A0 A1 A2
What is B? B0 B1 B2
What is C? C0 C1 C2
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
private void loadQuizSet() {
    InputStream inputStream = null;
BufferedReader bufferedReader = null;
try {
inputStream = getAssets().open("quiz.txt");
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String s;
while((s = bufferedReader.readLine()) != null) {
quizSet.add(s.split("\t"));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) inputStream.close();
if (bufferedReader != null) bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
 
 
Strings xmlに呼びだすテキストを書き終えたら、layoutのテキストは消しても良い。(プログラミングで表示しているから)
 
結果表示後、一番最初の問題に戻る
@Override
public void onResume() {
super.onResume();
nextButton.setText("Next");
currentQuiz = 0;
setQuiz();
}
 

Androidブラウザアプリできた!

独自のウェブブラウザができました!ブラウザアプリ開発を通して、booleanの使い方がわかってきた気がします。真偽を聞いて、他の動作をさせない。今回でいうと、Reload, Forward, Backという三つのボタンがあった時、一番最初の画面にいるときはForwardとBackを押させないようにするためにbooleanで設定するみたいな感じですね。
 
バグがあるときは、赤く指摘されている部分をよく確認する。
 
  • Androidでウェブブラウザを作ろう終了
 
戻るボタンで前の画面に戻るコード
@Override
public void onBackPressed(){
if (myWebView.canGoBack()){
myWebView.goBack();
return;
}
super.onBackPressed();
}
 
 
 
アクティヴィティを終わらせるときの処理も大切
 
@Override
protected void onDestory(){
super.onDestroy();
if (myWebView != null){
myWebView.stopLoading();
myWebView.setWebViewClient(null);
myWebView.destroy();
}
myWebView = null;
}
 
ボタンが作動するようにonClickの設定、そしてjavaにonClickのクラスの指示を書く
 
Back, Forward, Reload ボタンを設置
 
@Override
   public boolean onOptionsItemSelected(MenuItem item) {
       int id = item.getItemId();

switch (id) {
case R.id.action_reload:
myWebView.reload();
return true;
case R.id.action_forward:
myWebView.goForward();
return true;
case R.id.action_back:
myWebView.goBack();
return true;
default:
return super.onOptionsItemSelected(item);
}
 
 
@Overrideを手書きで書くと反応しないのがなぜか未だにわからない。

8/11

学習時間
3,30
 
毎朝早起きしても、そのあと眠気が続いてしまう。やはり、スタバかどっかに行って学習したほうがいいかな。どうしても1日集中し続けられない。明日やることで決めたことへの達成率が低い。とりあえず、夜は12時までに寝て、朝の眠気度合いを確かめよう。何もない日は午前中に3時間の学習時間は確保したい。午前中やることをしっかり決める。その課題をこなしたらどうなるかをイメージする。
 
今日やったこと
  • おみくじアプリ
  • 姓名診断アプリ
  • ストップウォッチアプリ
 
考察
ストップウォッチできて、テンション上がった!自分の力じゃないけど。
でも、おかげでこのボタンがこういう反応するっていうのが頭に少しずつストックされてきた。
 
 
明日やること
  • Androidでウェブブラウザを作ろう (全12回)(午前中)
  • Androidでクイズアプリを作ろう (全15回)(午前中)
  • Androidリストビュー入門 (全12回) 
  • Androidでメモアプリを作ろう (全22回)
  • Androidフラグメント入門 (全13回) 

ストップウォッチできた!!

ストップウォッチとかこんなに簡単にできちゃうんですね!!一から自分で作ろうとしたら難しいんでしょうけど、既存のものを組み合わせる形で作っていくなら僕にも何かできそうです!
 
自分で作るサンプルアプリのアイディアの一つとして「多機能ストップウォッチ」とかいいかもしれません。
iphoneにデフォで入ってるストップウォッチって、リセットすると消えますし、何が何秒だったかわからないじゃないですか。だから、メモみたいな形で保存できたり、記録の名前をつけてフォルダ分けして記録したりできたらちょっと便利かも。
 
Androidでストップウォッチを作ろう終了!
 
コード一部抜粋
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

startButton = (Button)findViewById(R.id.startButton);
stopButton = (Button)findViewById(R.id.stopButton);
resetButton = (Button)findViewById(R.id.resetButton);
timerLabel = (TextView)findViewById(R.id.timerLabel);

setButtonState(true, false, false);
}

public void setButtonState(boolean start, boolean stop, boolean reset){

startButton.setEnabled(start);
stopButton.setEnabled(stop);
resetButton.setEnabled(reset);
}

public void startTimer(View view){
//get StartTime
startTime = SystemClock.elapsedRealtime();

//Show the time
//Handler - Runnable(processing) - UI
updateTimer = new Runnable() {
@Override
public void run() {
long t = SystemClock.elapsedRealtime() - startTime + elapsedTime; //millisecond
SimpleDateFormat sdf = new SimpleDateFormat("mm:ss.SSS", Locale.US);
timerLabel.setText(sdf.format(t));
handler.removeCallbacks(updateTimer);
handler.postDelayed(updateTimer, 10);
}
};
handler.postDelayed(updateTimer, 10);

//control button
setButtonState(false, true, false);
}

public void stopTimer(View view){
elapsedTime += SystemClock.elapsedRealtime() - startTime;
handler.removeCallbacks(updateTimer);
setButtonState(true, false, true);
}

public void resetTimer(View view){
elapsedTime = 0l;
timerLabel.setText(R.string.timer_label);
handler.removeCallbacks(updateTimer);
setButtonState(true, false, false);
}

}
 
 
 
timerLabel = (TextView)findViewById(R.id.timerLabel);
 
このコードが抜けてて全く起動しませんでした。バグ探しって大変!
 
 
weightで幅を調節。
 
setButtonStateでメソッドを作ってあげれば、ソースコードがよりシンプルになります。
 
Memo
Command + d 今いる行を複製
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

startButton = (Button)findViewById(R.id.startButton);
stopButton = (Button)findViewById(R.id.stopButton);
resetButton = (Button)findViewById(R.id.resetButton);

setButtonState(true, false, false);
}

public void setButtonState(boolean start, boolean stop, boolean reset){

startButton.setEnabled(start);
stopButton.setEnabled(stop);
resetButton.setEnabled(reset);
}
 

姓名診断アプリできた!

姓名診断アプリ開発を通して、Random関数、エラーの表示の仕方、戻りボタンの設置の仕方を学びました!
Androidで姓名診断アプリを作ろう終了!
 
コードの一部を掲載
エラーの違った表示の仕方
 
  • setError
  • Toast
  • AlertDialog
 
 
if (myName.equals("")){

//myEditText.setError("Please enter your name:");
/*
Toast.makeText(

this,
"Please enter your name!",
Toast.LENGTH_LONG
).show();
*/

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder
.setTitle("Error!")
.setMessage("Please Enter your name!")
.setPositiveButton("OK", null);
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();

}
 
戻りボタンの設置
パッケージ名とファイル名を書く
<activity
android:name=".Myresult"
android:parentActivityName ="com.example.makabe.mynamefortuneapp.MainActivity"
android:label="@string/title_activity_myresult" >
activity>
 

Androidでおみくじアプリ作った!

いやー、Cで作ったり、javaで作ったり、phpで作ったり、ターミナルで作ったり、Androidで作ったりと、何回おみくじアプリ作るんだって感じですが、基礎としてまた学習しました!
 
Androidでおみくじアプリを作ろう 終了
 
Viewは呼び出して表示する機能ってことを理解して、
android:text="@string/score_label"
 
String.xmlに表示する文字はまとめてスッキリさせるということがわかりました!
 
public void Uranau(View view){
TextView tv = (TextView)findViewById(R.id.myTextView);
String[] results = {
"大吉",
"吉",
"凶"
};
Random randomGenerator = new Random();
int num = randomGenerator.nextInt(results.length);

if (num == 0) {
tv.setTextColor(Color.rgb(127, 255, 0));
}else{
tv.setTextColor(Color.rgb(0,0,0));
}
tv.setText(results[num]);

}
 

8/10 Androidアプリ学習開始

学習時間
2,00
 
今日やったこと
 
考察
Androidのアプリを作るための慣れとしてドットインストールの一通りのレッスンを二日かけて終わらします!
 
最近、お盆休暇で友人が地元に帰ってきているのでどうしても遊びが多くなりますね。それも楽しいのですが、遊びもプログラミング学習も計画的にやっていかないと、本気で楽しめません。明日はプログラミング一本勝負!
 
明日やること(髪切る)
  • Androidでおみくじアプリを作ろう (全8回)
  • Androidで姓名診断アプリを作ろう (全11回)
  • Androidでストップウォッチを作ろう (全10回)
  • Androidでウェブブラウザを作ろう (全12回)
  • Androidでクイズアプリを作ろう (全15回)
  • Androidリストビュー入門 (全12回)
  • Androidデータベース入門 (全10回)
いけたら以下も、
  • Androidでメモアプリを作ろう (全22回)
  • Androidフラグメント入門 (全13回) 
 
計12,00