<rmcreative>

RSS

Все заметки с тегом «Android»

Можно уточнить:

  1. Android: обрабатываем нажатие back в фрагментах

    28 октября 2014

    В Android-приложениях иногда требуется особым образом обработать нажатие кнопки back. Если у вас не используются фрагменты, всё просто. Перекрываем метод onBackPressed у Activity и делаем что нам нужно. Если же используются фрагменты и по нажатию back необходимо что-то поменять в фрагменте, обработку хочется сделать именно в нём.

    Посмотрев ответы на эту тему на StackOverflow я был несколько удивлён. Предлагается либо ненадёжный способ через OnKeyListener, либо жёсткий хардкод. Попробуем сделать это более красиво и удобно.

    Читаем

    9 комментариев
  2. Android, фрагмент в фрагменте и startActivityForResult

    12 июня 2014

    Одна из самых раздражающих недоработок Android проявляется когда нужно из фрагмента получить изображение с камеры или выбрать из готовых. Для этого используется Fragment.startActivityForResult(), а результат приходит в Fragment.onActivityResult(). Всё бы хорошо, но если фрагмент является потомком другого фрагмента, onActivityResult() не вызывается. Решается не очень тривиально:

    startActivityForResult() вызываем не для текущего фрагмента, а для родителя:

    private Fragment getActivityStarterFragment() {
            if (getParentFragment() != null) {
                return getParentFragment();
            }
            return this;
        }
     
    getActivityStarterFragment().startActivityForResult(...);

    В фрагменте-родителе явно вызываем onActivityResult() потомков:

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callOnActivityResultOnChildFragments(this, requestCode, resultCode, data);
    }
     
    // реализовано коллегами после изучения https://gist.github.com/artem-zinnatullin/6916740
    public static void callOnActivityResultOnChildFragments(Fragment parent, int requestCode, int resultCode, Intent data) {
        FragmentManager childFragmentManager = parent.getChildFragmentManager();
            if (childFragmentManager != null) {
                List<Fragment> childFragments = childFragmentManager.getFragments();
                if (childFragments == null) {
                    return;
                }
                for (Fragment child : childFragments) {
                    if (child != null && !child.isDetached() && !child.isRemoving()) {
                        child.onActivityResult(requestCode, resultCode, data);
                }
            }
        }
    }
    2 комментария
  3. Android: быстрый удобный эмулятор

    31 октября 2013

    Использовать встроенный эмулятор из Android SDK — та ещё радость из за его скорости. Дело усугубляется, если у вас процессор не Intel. Можно, конечно, прилично поковырявшись в BIOS и системе, добиться сходной с Intel производительности, но работать будет всё-равно неприятно.

    По этой причине вместо эмуляторов я обзавёлся реальными устройствами и долго пользовался ими пока не стал браться за задачки с довольно сложными интерфейсами. Железяк стало не хватать. У коллег при тестах иногда вылезали глюки на устройствах с другими пропорциями экрана и плотностью пикселей.

    Поискав получше, я нашёл нормальный эмулятор. Зовётся Genymotion и является обёрткой над VirtualBox и набором образов. Работает действительно быстро. Быстрее реального устройства.

    Пробуем

    14 комментариев
  4. Android: поймать back в EditText

    30 октября 2013

    Задачка — отловить нажатие хардварьной кнопки back и OK (или Done) на экранной клавиатуре при фокусе на EditText. Вроде должно решаться просто...

    Читаем

    4 комментария
  5. Adobe Shadow

    23 июля 2012

    В начале месяца у меня была задачка фикснуть одну злую штуковину на тему вёрстки на iPad, но так как внятных отладочных инструментов из коробки для него нет, работать приходилось вслепую, что результата не давало.

    Я попробовал поставить Firebug Lite. Получилось, но под iOS он, как оказалось, работает очень и очень криво. В комментариях TermiT подсказал попробовать Adobe Shadow, за что ему огромное спасибо.

    Штука очень крутая. Состоит из нескольких частей:

    • Приложения под iOs и Android плюс бонус для Amazon Kindle Fire.
    • ПО под Mac и Windows.
    • Расширение для Chrome.

    Эта связка даёт нам:

    • Возможность синхронно ходить на всех устройствах по страничкам. Командует парадом Chrome.
    • Возможность натраваить Chrome Developer Tools на любое из устройств, что даёт огромные возможности в отладке.

    UPD: инструмент зарелизился. Назвается теперь Adobe Edge Inspect. По прежнему бесплатен и очень удобен.

    8 комментариев
  6. jQuery mobile 1.0

    20 ноября 2011

    Релизнулся jQuery для мобильных устройств. Основан на jQuery, поэтому синтаксис остался примерно прежним. Основной плюс — кроссплатформенность: можно реализовать приложение в десктопном браузере и затем смело выкатывать на iOS, Android, Windows Phone, Blackberry, Palm и ещё кучу всяких экзотических девайсов.

    В комплекте, помимо фреймворка, идёт неплохой набор из страниц, диалогов, тулбаров, кнопок, списков и всяческих элементов форм. Выглядит и работает достойно, поддерживает скины-темы.

    После минификации и Gzip весит 24 Кб + 7 Кб CSS, что похвально, учитывая постоянно растущий размер самого jQuery.

    Поговаривают, что на Android жутко глючит анимация, но дело это наживное… поправят.

    Рассматриваем

    2 комментария