Ответы пользователя по тегу Android
  • Аномальное потребление памяти при указании различных applicationId. Что делать?

    @xotta6bl4
    Память течет - это когда она выделяется но не освобождается, например где-то держим ссылку на активити. Повернули устройство - текущая активити остановлена, запущена еще раз, но в другой ориентации. По идее старый инстанс активити должен быть удален из памяти, но ссылка не дает GC сделать это. Многократные повороты устройства приведут к тому, что у вас в памяти будет много инстансов активити. А у вас не утечка, а нормальный режим работы приложения.

    Кто есть память? Мониторинг потребления памяти и ест ее. А потом освобождает. Это нормально. Точно также счетчик фпс снижает фпс. С другой стороны мне не очень понятно, почему при некоторых package name память расходуется меньше. Я бы посмотрел дампы и аллокации.
    Ответ написан
  • Какой ноутбук выбрать для работы с Android studio?

    @xotta6bl4
    Мои рекомендации по выбору железа для разработки.
    1. ОЗУ - не менее 8 ГБ
    2. Проц. В принципе хватит любого четырех-ядерного i5.
    3. Если комп для разработки, то диска на 500 ГБ хватит с головой. SSD быстрее чем HDD, а поскольку работаем с большим количеством мелких файлов, то разница вполне себе ощущается.
    Ответ написан
    Комментировать
  • Как сделать Navigation Drawer на всю ширину экрана?

    @xotta6bl4
    ((DrawerLayout.LayoutParams) root.getLayoutParams()).width = root.getContext().getResources().getDisplayMetrics().widthPixels;


    Где root - контейнер менюшки. Вызывать при старте и при изменении размера экрана (например, смена ориентации)
    Ответ написан
    Комментировать
  • Программное создание ImageButton и задание ей изображения (Android)?

    @xotta6bl4
    setImageResource(R.drawable.grass_01)
    Ответ написан
    Комментировать
  • Как выполнить http запрос в JS в Android WebView?

    @xotta6bl4 Автор вопроса
    Как показало гугление, начиная с Android 4.4 WebView использует обновлен и использует код Хромиума и имеет новый движек JS. https://developer.chrome.com/multidevice/webview/o...

    Старый WebView, судя по всему, не умеет XMLHttpRequest.
    Ответ написан
  • Какое приложение написать?

    @xotta6bl4
    На 4pda есть достаточно объемные топики "идеи для программиста" и "программы на заказ".
    Ответ написан
    Комментировать
  • Android: странное поведение Canvas?

    @xotta6bl4
    habrahabr.ru/post/151492 Здесь я в свое время описал работу с канвасом на джаве.
    //унаследовались от ScaleGestureDetector.SimpleOnScaleGestureListener, чтобы не писать пустую реализацию ненужных
        //методов интерфейса OnScaleGestureListener
        private class MyScaleGestureListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
            //обрабатываем "щипок" пальцами
            @Override
            public boolean onScale(ScaleGestureDetector scaleGestureDetector) {
                float scaleFactor=scaleGestureDetector.getScaleFactor();//получаем значение зума относительно предыдущего состояния
                //получаем координаты фокальной точки - точки между пальцами
                float focusX=scaleGestureDetector.getFocusX();
                float focusY=scaleGestureDetector.getFocusY();
                //следим чтобы канвас не уменьшили меньше исходного размера и не допускаем увеличения больше чем в 2 раза
                if(mScaleFactor*scaleFactor>1 && mScaleFactor*scaleFactor<2){
                    mScaleFactor *= scaleGestureDetector.getScaleFactor();
                    canvasSize =viewSize*mScaleFactor;//изменяем хранимое в памяти значение размера канваса
                    //используется при расчетах
                    //по умолчанию после зума канвас отскролит в левый верхний угол.
                    //Скролим канвас так, чтобы на экране оставалась
                    //область канваса, над которой был жест зума
                    //Для получения данной формулы достаточно школьных знаний математики (декартовы координаты).
                    int scrollX=(int)((getScrollX()+focusX)*scaleFactor-focusX);
                    scrollX=Math.min( Math.max(scrollX, 0), (int) canvasSize -viewSize);
                    int scrollY=(int)((getScrollY()+focusY)*scaleFactor-focusY);
                    scrollY=Math.min( Math.max(scrollY, 0), (int) canvasSize -viewSize);
                    scrollTo(scrollX, scrollY);
                }
                //вызываем перерисовку принудительно
                invalidate();
                return true;
            }
        }
    Ответ написан