タブレット用プログラムの書き止め

android OS & iPadOS の記録。

Fragment [基礎] 画像表示。覚え書き。

2022-10-01 14:30:25 | Android studio 日記

・Fragment Mainにスクリーンに合わせて画像を拡大縮小させる。
・Subに本来の大きさの画像を表示させる。小さい場合は中央に大きい場合はスクロールさせる。

画像表示アプリで前回利用の画像を記憶して、アプリ再起動で再表示させる。

1:ActivityからMainへ画像のフルパスを渡す。
2:フルパスが存在しファイルか判断。表示不可ならPicturesディレクトリ表示モードへ移行(今回は作らない)。
3:画像をスクリーンサイズに加工(メモリ節約必須)、表示。
4:ダブルタップされたらフルパスをSubに渡してフラグメントを置き換える。
5:スクリーンサイズと画像サイズ。縦横は別々に考慮。
 スクリーンより小さい場合は中央に合わせる。大きい場合は左・上に合わせる。
6:Mainにはスクロール以外のジェスチャー組み込み。Subはスクロールとダブルタップのみ。

 

準備:RecyclerViewのアダプター用リストも考える。

・ターゲットフルパスから親ディレクトリを取得。
・fileListで画像ファイルをリストアップ。
・リストを昇順並べ替え。
・ターゲットディレクトリとファイル名リスト。または、ファイルフルパスリスト。

ターゲットディレクトリとファイル名リストはメモリ消費が少ない。
ファイル名フルパスのリストはメモリ消費が多い。が微妙に処理速度稼げる。
今となってはRecyclerViewのアダプターの引数に何でも指定できると分かったから自由度高い。

MyFileListクラス
データ
・targetDirectory
・fileName[]
メソッド
・fileName[]昇順並べ替え。
・fileName[]のgetName()、getAbsPath()。
・int findName()

ついでに

MyFileListForDirectoryクラス
データ
・targetDirectory
・dirName[]
・fileName[]
メソッド
・dirName[]、fileName[]昇順並べ替え。
・dirName[]、fileName[]のgetName()、getAbsPath()。
・dirName[]+fileName[] > name[]とtype[]に変換。
・name[]とtype[]のget()


Mainでファイル名とその他を用意したら画像を表示。
間にfileName[]からファイル名を取り出すクラス。

MyImageFileクラス
・fileName[]を引数にする
・targetNameからindexNoを求める
・next()prev()
・1枚or2枚表示
・ランド、ポート、1枚、2枚判断
・出力、int[2]か、string[2]

出力が1つか2つで画像合成判断。
1つの時にランドかポートで回転判断。

出力からスクリーンサイズに合わせてBitmap作成。
ImageSwitcherにセットして表示。アニメーションも組んどくか。


ダブルタップの位置から表示画像のパスを求める。
(1画像、2画像)
Subへフルパスを渡して置き換える。

 


シングルタップ、フリング、ロングタップ処理は後で追加。

 


フラグメントの操作内容でクラス機能をまとめる。
癒着しないように構造を分かりやすくする。系統化etc.