Много файлов изображений в res / drawable, как получить доступ в Android? - PullRequest
1 голос
/ 12 февраля 2010

Мне нужно сделать специальное приложение для просмотра изображений для Android 2.x.

Слишком много файлов изображений JPEG: около 2000 ~ JPEG, более 100 МБ.

Я хочу получить доступ к файлам изображений с их именами, но я не смог найти такой пример.

Кстати, можно ли поместить много файлов изображений в папку / res / drawable?

Я слышал, что приложение Android не может быть установлено на SDCard и

репозиторий программ очень мал, поэтому приложение размером 100 МБ не может быть установлено вообще.

Я нашел несколько примеров, которые загружают большие файлы данных на SDCard онлайн,

но я не могу запустить веб-сервер для размещения файлов данных,

и я должен загрузить полностью упакованную программу на Android Market. (Должен ли я создать один файл apk?)

Каковы оптимальные методы управления слишком большим количеством образов ресурсов (или чего-либо) в Android?

Ответы [ 5 ]

3 голосов
/ 12 февраля 2010

Я думаю, вам будет непросто убедить пользователей установить программу объемом 100 МБ во внутреннюю память своих телефонов. Было бы гораздо лучше загрузить изображения на SD-карту. Существует ряд довольно дешевых сервисов размещения файлов, таких как Amazon S3.

Кроме того, вам следует разрешить пользователям загружать изображения в небольших группах, а не в один большой блок.

2 голосов
/ 12 февраля 2010

G1 имеет 256 МБ встроенной памяти для приложений. Даже на Nexus One есть только 512 МБ, поэтому я думаю, что вряд ли кто-то захочет, чтобы одно приложение заняло столь большую долю этого хранилища, поэтому создание файла .apk размером 100 МБ + не будет практичным.

Вы правы в том, что стандартные телефоны Android не могут запускать приложения с SD-карты. (Существуют специальные прошивки, которые позволяют это, но это не поможет вам, так как их запускает лишь небольшое количество пользователей.)

Вы говорите, что не можете запустить веб-сервер, но, к сожалению, я думаю, что это ваш единственный реальный вариант здесь. Вы можете загрузить изображения по мере необходимости и кэшировать их на SD-карте, если они были где-то на веб-сервере. Настроить веб-сервер для обслуживания целых изображений довольно просто, хотя вам может потребоваться проделать определенную работу, чтобы люди не смотрели на изображения с помощью веб-браузера, а не вашего приложения, если вы платите за него.

1 голос
/ 24 сентября 2010
ImageView iv = new ImageView(context);

iv.setImageResource(R.drawable.icon);
0 голосов
/ 11 мая 2011

Для доступа к большому массиву изображений, находящихся в каталоге на SD-карте:

ImageView iv= ...
    int imageIndex=0; //can access all image files by imageIndex, 0=first entry

    List<String> ImageList=FindImages();
    if(ImageList!=null && ImageList.size()>=currentIndex){
         iv.setImageDrawable(Drawable.createFromPath(ImageList.get(imageIndex)));
    }

    //put your image files on SD in DIRECTORY


    private List<String> FindImages() {
    final List<String> tFileList = new ArrayList<String>();
    Resources resources = getResources();
    // may use array of valid image file extensions
    //String[] imageTypes = ...
    FilenameFilter[] filter = new FilenameFilter[imageTypes.length];

    int i = 0;
    /* can use string array of image types:
               for (final String type : imageTypes) {
        filter[i] = new FilenameFilter() {
            public boolean accept(File dir, String name) {
                return name.endsWith("." + type);
            }
        };
        i++;
    }*/
    filter[i] = new FilenameFilter() {
        public boolean accept(File dir, String name) {
            return name.endsWith(".png");
        }
    };
    FileUtils fileUtils = new FileUtils();
    File[] allMatchingFiles = fileUtils.listFilesAsArray(
            new File(DIRECTORY), filter, -1);
    for (File f : allMatchingFiles) {
        tFileList.add(f.getAbsolutePath());
    }
    return tFileList;
}
0 голосов
/ 12 февраля 2010

Сам не пробовал, но похоже, что это может сработать:

public BitmapDrawable(Resources res, String filepath);

https://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html#BitmapDrawable%28android.content.res.Resources,%20java.lang.String%29

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...