本のビューワ その2
スクリーンサイズに合わせて拡大縮小と次のページに行くのがなんとなく出来た
ついでに縦長の画像は横回転して表示してみた
ScaleGestureDetectorとかいうのでピンチイン・アウトで拡大縮小やってみたけどちょっと違和感のある動き
つか、エミュレータでマルチタッチってどうやるんだ??
とりあえず実機でやってみたらなんとなく動いている
ちょっと面倒なのが買ったzipにファイル名順にできてないのがあるっぽい
それとWinXP以降のファイル名の数値順で並ぶせいか前ゼロつけてないのとか
しょうがないからzipのファイル名をWindows風にソートすることにしたらソースがくっそ長く・・・そもそも合ってるのか?
List<String> xs = new ArrayList<String>(); ZipFile zip = getArchive(); for(Enumeration<? extends ZipEntry> e = zip.entries(); e.hasMoreElements();) { ZipEntry entry = e.nextElement(); if(!entry.isDirectory()) { xs.add(entry.getName()); } } // WindowsXP以降のファイル名ソーと順を模倣 Collections.sort(xs, new Comparator<String>() { @Override public int compare(String left, String right) { int left_index = 0; int right_index = 0; while(left_index < left.length() && right_index < right.length()) { char left_char = left.charAt(left_index); char right_char = right.charAt(right_index); if(left_char == right_char) { left_index++; right_index++; } else if( left_char >= '0' && left_char <= '9' && right_char >= '0' && right_char <= '9') { int left_num = left_char - '0'; int right_num = right_char - '0'; left_index++; right_index++; while(true) { left_char = left.charAt(left_index); if(left_char >= '0' && left_char <= '9') { left_num = left_num * 10 + left_char - '0'; left_index++; } else { break; } } while(true) { right_char = right.charAt(right_index); if(right_char >= '0' && right_char <= '9') { right_num = right_num * 10 + right_char - '0'; right_index++; } else { break; } } if(left_num != right_num) {return(left_num - right_num);} } else { return(left_char - right_char); } } if(left_index < left.length()) {return(-1);} if(right_index < right.length()) {return(1);} return(0); } });
全くテストはしてないけど、なんとなくぽくなった