Модераторы: javastic

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диалоги открытия/сохранения файла, Open/Save file dialogs 
V
    Опции темы
spyswamp
Дата 13.7.2011, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



Кто-нибудь знает готовые решения с открытым кодом, реализующие указанные в сабже диалоги? Как-то пока не сильно хочется заморачиваться над такой "мелочью", как стандартные (но не для android sdk, к сожалению) диалоги загрузки/сохранения файла - ну че там, лист с иконками накидать и эдит с кнопкой добавить.

Заранее спасибо.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
CaptainNemo
Дата 14.7.2011, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 5.6.2008
Где: White Russia, Min sk

Репутация: 3
Всего: 9



spyswamp, 

Цитата

Кто-нибудь знает готовые решения с открытым кодом, реализующие указанные в сабже диалоги?


я обычно подсматриваю исходники на code.google.com или нахожу из этого списка. По вашему сабжу подходит Text Edit . Там реализованы диалоги открытия и сохранения ... Правда, очень мудрогелисто, но всё же.. 

Это сообщение отредактировал(а) CaptainNemo - 14.7.2011, 02:43
PM MAIL WWW ICQ Skype GTalk   Вверх
ivanovpv
Дата 14.7.2011, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



Сходи на проект OpenIntents - там лежат готовые компоненты open/save собранные в виде интентов (то есть они вызываются в виде внешних интентов) - не всегда удобно, конечно, но использовать можно.

Добавлено через 6 минут и 1 секунду
Могу поделиться своими исходниками open/save - в обмен на твои. Есть что предложить?


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
spyswamp
Дата 14.7.2011, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



ivanovpv, твои исходники o/s в обмен на мои исходники o/s? Если да, то у меня таковых нет пока, а если и напишу все же сам (поборю вселенскую программерскую лень), то выложу сюда просто так потом.

За ссылки спасибо, вечером изучу что там есть.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
Noziga
Дата 14.7.2011, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



Такая же проблема
PM MAIL WWW   Вверх
spyswamp
Дата 14.7.2011, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



Я решил эту проблему: ваяю потихоньку сам. Че-то меня не радуют вещи, которые на данный момент нашел в этих ваших интернетах - либо сырые неюзабельные экзамплы, либо слишком сложная и ненужная фигня.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
spyswamp
Дата 16.7.2011, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



В общем, первый рабочий вариант диалога открытия файла (с иконками и т.п.) есть. Почитать/посмотреть картинки/забрать можно тут: http://slavikkk.livejournal.com/147718.html


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
spyswamp
Дата 17.7.2011, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



Пацан сказал - пацан сделал. Дописал и SaveFileDialog. Вместе с улучшенным OpenFileDialog'ом можно забрать здесь: http://slavikkk.livejournal.com/148080.html


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
ivanovpv
Дата 19.7.2011, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



Цитата(spyswamp @  17.7.2011,  23:09 Найти цитируемый пост)
Пацан сказал - пацан сделал.


Молодец только иконки MIME типов походу не отрабатываются... Сие не есть гуд.


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
spyswamp
Дата 19.7.2011, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



ivanovpv, поподробнее, пожалуйста. У меня и на эмуляторе, и на аппарате иконки прорисовываются нормально. Их там всего две: для сущностей "директория" и "файл".


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
ivanovpv
Дата 20.7.2011, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



Цитата(spyswamp @  19.7.2011,  11:51 Найти цитируемый пост)
 Их там всего две: для сущностей "директория" и "файл". 


Это неправильно... по хорошему нужно для каждого расширения использовать свою иконку


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
spyswamp
Дата 20.7.2011, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



ivanovpv, а, над этим не заморачивался, да. Но не думаю, что это будет так уж сложно. Кстати, в *nix-way не такого понятия, как "расширение". Это все ваши виндовые задумки. smile Да и то зависит от настроек пользователя. Можно хоть маленькие члены на всех иконках нарисовать. Если это потребует каких-то дополнительных увеличений ресурсов картанками - то вообще откажусь. В ОС имеется всего 2 сущности: файл и файл типа директория. Соответственно, правильно различать их именно по этому типу. Все остальное - рюшки, которые необязательны. ;)

Это сообщение отредактировал(а) spyswamp - 20.7.2011, 16:29


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
ivanovpv
Дата 20.7.2011, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



Цитата(spyswamp @  20.7.2011,  17:25 Найти цитируемый пост)
Все остальное - рюшки, которые необязательны. ;)

Ух круто... Дело в том, что надо учитывать пожелания юзеров. Юзеру начхать на юникс не юникс, винда не винда - ему подай так чтобы было удобно. А удобно когда он видит, что это Экселевский файл, а вот это вот PDF или ZIP. Прогер может думать все что угодно, но пожелание юзера - это для него должно быть законом. 

Тем более что сделать это не так и сложно:

Код

//mimeType строка типа "image/bmp"
public Drawable getDrawableForFile(Context context, File file, String mimeType)
{
        PackageManager pm = context.getPackageManager();
        Uri data = Uri.fromFile(file);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(data, mimeType);
        final List<ResolveInfo> lri = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
        if (lri != null && lri.size() > 0) //mimeType известен в системе
        {
            int index = lri.size() - 1;
            //смотрим последний элемент списка, который соотвествует последнему установленному приложению, который "признает" данный mime тип
            final ResolveInfo ri = lri.get(index);
            return ri.loadIcon(pm);
        }
        // если неизвестный mime тип грузим картинку по умолчанию
        return  context.getResources().getDrawable(R.drawable.default);
}





Это сообщение отредактировал(а) ivanovpv - 21.7.2011, 16:30


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
spyswamp
Дата 20.7.2011, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



ivanovpv, зерно истины в этом есть, определенно. smile Хотя, для юзеров я буду улучшать эти диалоги немного и в другую сторону (как минимум, в отдельную либу). Они еще кривоватые, мне кажется. Пока что "обкатаю" их на приложении, которое чисто для себя пишу. Да и хз вообще буду ли я когда либо продакшеном под Андроид заниматься, я спец. на других языках и платформах.

За пример спасибо, он конечно немного "новичковский" по стилю кодирования, но попилить, и отлично получится. smile

В любом случае, думаю, у нас получилась отличная тема с примерами и т.п., которая, очень надеюсь, поможет кому-нибудь.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
ivanovpv
Дата 21.7.2011, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



Цитата(spyswamp @  20.7.2011,  21:06 Найти цитируемый пост)
За пример спасибо, он конечно немного "новичковский" по стилю кодирования, но попилить, и отлично получится


Сильно сказано. А я другой стиль и не приемлю... - хотя вроде далеко не новичок, более того совсем не новичок. Ну да ладно- на вкус и цвет как гриться...


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
spyswamp
Дата 21.7.2011, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



Код

return lri != null && lri.size() > 0
        ? lri.get(lri.size() - 1).loadIcon(rm) // аля берем иконку из последнего поддерживающего данный mime-тип приложения
        : context.getResources().getDrawable(R.drawable.default);


Не? ;)

Это сообщение отредактировал(а) spyswamp - 21.7.2011, 11:12


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
ivanovpv
Дата 21.7.2011, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



Не-а... С точки зрения компилятора это одно и то же. А с точки зрения читабельности кода - это не айс. То же самое и относится к анонимным классам и проч. усложняющим чтение кода вещам.

Короткий "if" хорошо использовать в простых конструкциях типа:
Код

int b=(a>0)?a:0; 


В других случаях это ни к чему хорошему не ведет  smile 

Это сообщение отредактировал(а) ivanovpv - 21.7.2011, 16:28


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
spyswamp
Дата 21.7.2011, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



Простите, конечно, но читабельность ухудшает лишь ваше бездумное использование final'а. ;) А так же int index = 0; lri.size() - 1; а вот менять сообщение после указаний на недочеты - это уже плохой тон. smile Атата! В остальном опытному глазу гораздо проще увидеть суть тернарного оператора (а этот оператор называется именно так, а не "короткий if", еще один камень вслед за final), нежели if со вложенностью, скобки, очевидные комментарии и дополнительный return в конце.

И прошу не относиться к маленькому ревью как к наезду. Просто указал на недочеты.

оффтоп: В качестве отличного примера кодирования рекомендую изучать исходники Half Life перед сном. smile


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
ivanovpv
Дата 22.7.2011, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



Цитата(spyswamp @  21.7.2011,  17:47 Найти цитируемый пост)
И прошу не относиться к маленькому ревью как к наезду. Просто указал на недочеты.


Да ладно ужо наехал... В качестве оправдания (а придется оправдываться) - скажу что исходник выдран из довольно большого класса. В методе еще есть туча параметров, которые убирал когда постировал - так что мог и ошибитьс выкашивая ненужные куски кода... Если бы я выложил весь код который раза в 4 длиннее - то ничего не было бы понятно. А наезжать все не дураки и слова правильные тоже знаем - тока вот думается форум не для того, чтобы выпячивать себя - а чтобы обменивать опытом. В StackOverflow вас давно бы уже изничтожили.

Ваша метода в общем то ясна - нас**ть на ближнего... Я хотел помочь, в итоге только получил по шарам. Ну да ладно - попишите парочку прожектов под сто тыщь строк, потом может меня и поймете. Так шта давай - с флагом и барабаном вперед - пральной дарогой идете.


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
spyswamp
Дата 22.7.2011, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



ivanovpv, я 10 лет занимаюсь крупными корпоративными проектами. Ваше "сто тыщ строк" меня просто насмешило. smile Удивительно, как у вас код не проходит даже элементарное ревью, чтобы в продакшн не попадал такой ахтунг. Остальное можете не доказывать. smile

Добавлено через 4 минуты и 47 секунд
ivanovpv, а если мало "спасибо" выше, то плюсану потом, когда 100 сообщений наберу.  smile 

Это сообщение отредактировал(а) spyswamp - 22.7.2011, 10:03


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
ivanovpv
Дата 22.7.2011, 17:05 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



Какой продакшн? О чем вы говорите уважаемый? Вы что клиент у меня принимать работу или босс? Код был выложен не на предмет обсасывания на оптимизацию и проч. схоластику, а просто чтобы указать на то как можно улучшить (и довольно просто) ваш же и код.  Повторяю код выдранный из контекста не прогнанный ни через компилятор или упаси боже профайлер, добавлены были комментарии - чтобы вам же и было удобно.

Далее начался откровенный  smile - собсно говоря вот и все. Ваши комментарии касаемо ста тыщь строк кода также как и про "новичковость", умничания по тернарные операции и проч. сами же вас и характеризуют, что я и выразил своей оценкой. Я в отличие от вас никого не поучаю, хотя наверное с опытом Java разработок с 95-го года и с количеством подчиненных в 100 с гаком наверное имею на это право  smile 

За сим кланяюсь - тема закрыта. Все щасливы и разбегаются по своим углам "разрабатывать крупные корпоративные прожекты на мульон строк".


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
spyswamp
Дата 22.7.2011, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



ivanovpv, по-моему, ты тролль, а не начальник и джавист с 95 года. Ты даже элементарных вещей не знаешь.

Добавлено через 1 минуту и 44 секунды
Признайся, что лоханулся на элементарщине, не знаешь где правильно применять final и пытаешься лечить. smile Ну а минус я тебе верну, не переживай.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
CaptainNemo
Дата 23.7.2011, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 5.6.2008
Где: White Russia, Min sk

Репутация: 3
Всего: 9



spyswamp, зачем тут цирк устраиваете. Я, например, вообще Джавы не знаю, но это не мешает мне писать проги под моего планшета и мобилу. Нахожу исходники и правлю под себя или в книжке примеры смотрю... Что не понимаю, спрашиваю на форуме. И всё нормально работает...  smile 

Это сообщение отредактировал(а) CaptainNemo - 23.7.2011, 22:21
PM MAIL WWW ICQ Skype GTalk   Вверх
Bearness
Дата 26.7.2011, 20:12 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 25.7.2011

Репутация: нет
Всего: нет



Цитата(spyswamp @  22.7.2011,  18:23 Найти цитируемый пост)
 не знаешь где правильно применять final и пытаешься лечить.


Не знаю чего ты взъелся то? Применение final оправданно в данной ситуации поскольку возвращается значение типа ResolveInfo то есть информация об интенте обрабатывающем данный тип фильтра. Очевидно, что у автора нет желания изменять его значение о чем он и сообщает компилятору применением модификатора final.  При этом достигаются 2 цели: первых в дальнейшем если ResolveInfo случайно где-то будет модифицироваться то компилятор ругнется, во вторых компилятор информацию может использовать для своих оптимизаций. 

Так что ты неправ.
PM MAIL   Вверх
spyswamp
Дата 27.7.2011, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



Bearness, RTFM.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0886 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.