Upgrade to Pro — share decks privately, control downloads, hide ads and more …

やさしい画像ギャラリー改善tips

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

 やさしい画像ギャラリー改善tips

Avatar for Yuichi Maekawa

Yuichi Maekawa

April 20, 2017
Tweet

More Decks by Yuichi Maekawa

Other Decks in Programming

Transcript

  1. Storage Access Framework • MIME typeで指定できるが、関係のないフォルダの参照などもある • デザインの変更ができない • 公式ドキュメント

    https://developer.android.com/guide/topics/providers/document-provider.html //Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKA Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); //画像のみの場合 startActivityForResult(intent, YOUR_REQUEST_CODE);
  2. Storage Access Framework • MIME typeで指定できるが、関係のないフォルダの参照などもある • デザインの変更ができない • 公式ドキュメント

    https://developer.android.com/guide/topics/providers/document-provider.html //Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKA Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); //画像のみの場合 startActivityForResult(intent, YOUR_REQUEST_CODE); デザイナーが 許してくれない
  3. MediaStoreのイメージ図 Files - FileColumns - MEDIA_TYPE - MIME_TYPE - TITLE

    ... その他、有象無象 Audio - Media - Alubms - Artists ... Images - Media - Thumbnails - ImageColumns Video - Media(本体) - Thumbnails - VideoColumns
  4. 画像を取得 Files - FileColumns - MEDIA_TYPE - MIME_TYPE - TITLE

    ... その他、有象無象 Audio - Media - Alubms - Artists ... Images - Media - Thumbnails - ImageColumns Video - Media(本体) - Thumbnails - VideoColumns ここから取得 MediaStore.Images.Media
  5. 画像と動画を取得 Files - FileColumns - MEDIA_TYPE - MIME_TYPE - TITLE

    ... その他、有象無象 Audio - Media - Alubms - Artists ... Images - Media - Thumbnails - ImageColumns Video - Media(本体) - Thumbnails - VideoColumns ここから取得 =MediaStore.Filesで MEDIA_TYPE_IMAGE,MEDIA_TYPE_VIDEOを指定
  6. 画像へのアクセスの方法 ContentResolver r = context.getContentResolver(); Cursor c = r.query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, null,

    null, null, null); if (c != null) { c.moveToFirst(); while (!c.isAfterLast()) { String data = c.getString(c.getColumnIndex(MediaStore.Images.Thumbnails.DATA)); String imageId = c.getString(c.getColumnIndex(MediaStore.Images.Thumbnails.IMAGE_ID)); thumbnailPaths.add(data); thumbnailIds.add(imageId); c.moveToNext(); } c.close(); }
  7. 画像へのアクセスの方法 ContentResolver r = context.getContentResolver(); Cursor c = r.query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, null,

    null, null, null); if (c != null) { c.moveToFirst(); while (!c.isAfterLast()) { String data = c.getString(c.getColumnIndex(MediaStore.Images.Thumbnails.DATA)); String imageId = c.getString(c.getColumnIndex(MediaStore.Images.Thumbnails.IMAGE_ID)); thumbnailPaths.add(data); thumbnailIds.add(imageId); c.moveToNext(); } c.close(); }
  8. MediaStoreのイメージ図 Files - FileColumns - MEDIA_TYPE - MIME_TYPE - TITLE

    ... その他、有象無象 Audio - Media - Alubms - Artists ... Images - Media - Thumbnails - ImageColumns Video - Media(本体) - Thumbnails - VideoColumns
  9. MediaStoreのイメージ図 Files - FileColumns - MEDIA_TYPE - MIME_TYPE - TITLE

    ... その他、有象無象 Audio - Media - Alubms - Artists ... Images - Media - _ID - Thumbnails - IMAGE_ID - ImageColumns Video - Media(本体) - Thumbnails - VideoColumns 等しい
  10. ポイント3: 使い方に合わせて表示する • メッセージやSNSなど: 今撮ったsnowの写真がほしい → 撮影した写真が上に来るように → 選択したらすぐに送信できるように •

    画像加工など: プレビューしてから選ぶかもしれない → 拡大縮小できるプレビューを挟む → サムネイルじゃだめ(えっ