アプリ開発日記(8)

2020/03/14

挙動がおかしかった点を洗いざらい直していった。
・ちょっと待ってから次のコードを実行する、がめんどくさかった。
gameController.kt
mainActivity.wait_millisecond( {
currentQuestionNumber += 1
if( currentQuestionNumber > maxQuestions ) {
ShowResultScreen()// 全問終了
resetGame()
} else {
doPractice() // 次の問題
}
},1500)

→MainActivity.kt
fun wait_millisecond(method:()->Unit, milliseconds:Long) {
Handler().postDelayed( Runnable { method() }, milliseconds)
}

関数を引数で渡す部分の書き方とか、よくわかんなかった。
import android.os.Handlerも忘れずに。

・メッセージボックスもMainActivityの中じゃないとダメみたいだった。
fun showResultScreen( message:String ) {
// メッセージボックスで表示する。そうすれば、OKで閉じた後、次に進める。
AlertDialog.Builder(this) // FragmentではActivityを取得して生成
.setTitle(R.string.app_name)
.setMessage(message)
.setPositiveButton("OK", null )
.show()
Log.d("hogehoge","${message}")
}

AlertDialog.Bundle(this)←Contextを引数に取っている。アプリケーションクラスのmContextを渡してもダメだった。謎。
あとAlertDialogのこの書き方謎だよな。

タイマーのスケジュール
timer = Timer(true)
timer!!.schedule(object : TimerTask() {
override fun run() {
handler.post( Runnable {
run() {
timerUpdate()
}
})
}
},0,100)

TimerTaskのオブジェクトを引数の中で生成して、TimerTask.run()をオーバーライド。
その中でhandle.postを呼び、timerUpdate()を呼びだすようにしている。
handleオブジェクトを使わないと、Viewを更新できないっぽい。タイマをcancel()したあとの描画ができずに例外でコケていたのが治った。

Androidのプログレスバーは%表示。setProgress(percent)。

画面遷移を書いた。が、うまく動かぬ

とりあえずアイコンつけてみたが、どうも格好がよろしくない。デザインしなおしだな。

2020/03/15

果たして「アプリを書くこと」は自分にとって正しいのか。
・作ってみたい。が、意外と面倒でストレスだ。
・作ったところでカネにならない。仕事もない。そもそも誰が使うんだこれ。
・時間はどんどん食う。本とかカネかかる。
・いつまでたっても「できている」感がない。

1.別のAVDを用意した。NexusOne、API22。
めっちゃ画面レイアウトが崩れていた→直した。
・ConstraintLayoutであらかたのレイアウトは組めてしまうことが分かった。
・constraintSet.constrainWidth()/Height()は割とうまく動いてくれる。
・constraintSet.setMargin()、constraintSet.connect()などはうまく動いている気がしない。
ビューを等間隔に並べる場合。たとえば1と2を上下均等割りにするときは、1のbottomと2のtop,2のtopと1のbottomを制約する。

2.画面遷移が上手くいかなかった
→2枚目のアクティビティの中で
setContentView(R.layout.activity_question_range_setting)
レイアウトの指定が間違っていただけだった。
・アプリバー→デフォルトでくっついてくる。アクションバー→古いバージョン。ツールバー→今使うべきもの。

3.出題範囲設定画面
XMLで書けた。複数行選択できる→コードで書く。
スクロールしてもチェックが消えたりしない。
とりあえず複数行にチェックを付ける、パラメータを保存する、まではできた。
残り:最後の1つのチェックを外させないようにする。

SharedPreferencesはedit().apply()しないと保存されないぞ。

2020/03/19

朝にちょっとだけコードを書いた。
出題範囲設定画面で、チェックが最後の1つのとき、チェックを外すとチェックを付けなおすようにした。が、目に見えるのでかっこ悪い。
「アイテムをタップした」ではなくて「アイテムを選択/非選択にしようとしている」が取れればいいな。

2020/03/20

ツールバーのオーバーフローメニューボタンを表示、非表示にする方法。
fun menuEnable(flag:Boolean){
toolbar.menu.setGroupVisible(0,flag)
}

出題数設定画面を作成。出題範囲設定画面のコピペ+修正でOK。

ふとコードを見ると、昔に比べたら覚えることが65535倍くらいあって大変だ。
8Bit機でBASICしてた頃が懐かしい。今だったらもう少しまともなプログラミングができるんじゃないだろうか。

「このアプリについて」画面を作成。セクション付きリストビューの作り方がわからなかったので、XML手打ちでやった。
URLをタップした時の処理がまだ追加できていない。→できた

CP/Mマシンとか作ったら面白そうとか、そういう邪念。アセンブラと古い言語でプログラミングをやってみたい。

スプラッシュスクリーン完成。iOS版のように、みょーんと拡大アニメーションはしない。ほぼネットのコピペ。

時間を無制限にしているのにプログレスバーが動くというバグ。どこか設定をミスってるな。

あとは解答欄、正解欄のフォントの大きさを変えるようにしたい。
細かいFixは明日にしよう。

カテゴリー: ブログ パーマリンク