画像ビュワー作成でコトリンの習得をしてみる。
とりあえず、大まかな構造から。
1,アプリスタート。
mainActivity
初期設定。
ボタン、「スタート」「ヒント」
スタート>mainFragmentへ移行。
ヒント>tipsFragmentへ移行>mainActivityに戻る。
2,mainFragmentスタート。
初期設定内容から対象ディレクトリ、対象画像ファイルのフルパス取得。
対象が無い場合はPictureフォルダを対象にする。
フォルダアイテムを取得して配列を作成。画像ファイル名のリスト順も並び替える。
リストから画像ファイルパスを取得。一枚分、二枚分。
画像ファイルの表示が主機能。
タップ、ダブルタップ、スワイプ、ロングプレス。
スクリーンの任意の位置のタップ。
ポートレートモード(縦長)は一枚表示。
ランドスケープモード(横長)は二枚表示。
画面回転が有効で表示枚数の切り替えをさせる。
画像がランドスケープタイプなら一枚表示。
directoryFragment(ディレクトリ移動用)移行。>mainFragmentに戻る。
thumbnailFragment(サムネイル表示用)移行。>mainFragmentに戻る。
3,directoryFragment
フォルダアイテムを取得してディレクトリ名の配列を作成。
RecyclerView作成。
4,thumbnailFragment
フォルダアイテムを取得して配列を作成。もしくは、mainFragmentの配列を利用。
RecyclerView作成。
キャッシュディレクトリにサムネイルを非同期作成。ListViewにサムネイルをセット。
thumbnailFragment終了の時、キャッシュディレクトリのサムネイルを非同期削除。
viewModelに保存するデータ。
現在のフラグメントの場所。
対象画像ファイルパス。
対象ディレクトリパス。
フォルダアイテム配列。
スクリーンモード。縦長、横長。(一枚表示、二枚表示の判別用)
デバイスのサイズ。width、height。
LiveDataで外部保存が必要なデータの変更時に初期設定ファイルへ書き込み。
mainActivityにviewModelを設置して、プログレスサークルの非同期用フラグを設定。
フラグが変更されたら非同期でプログレスサークルを表示、非表示できる?
SharedViewModelでmainActivityのviewModelを各Fragmentで利用できるみたいなので調査。
画像表示本体部分は作らず、フラグメントの移動を確認する骨組みから。
デバイスの回転で挙動がどうなるのかを調査する。
考えてるとどんどん増えてしまう。
大枠部分を作って思い通りなら次を考えよう。