Ответы пользователя по тегу Android
  • Туториалы для программирования под Android в Intel SDK?

    @itdroid
    Добрый день, посмотрите сюда:
    startandroid.ru/ru/uroki/vse-uroki-spiskom

    И конечно же:
    developer.android.com/intl/ru/guide/index.html

    Уроков для начала должно хватить, ну, а к документации можно возвращаться постоянно.
    Ответ написан
    Комментировать
  • Как осуществить плиточное расположение картинок?

    @itdroid
    Привет, такую разметку можно сделать с помощью RecyclerView + GridLayoutManager.
    Для GridLayoutManager установить кастомный GridLayoutManager.SpanSizeLookup и в нем определять столько ячеек будет занимать item. Например, так:
    RecyclerView recyclerView = (RecyclerView) findViewById(android.R.id.recycler);
    //грид в 3 колонки
    GridLayoutManager gridLayoutManager= new GridLayoutManager(context, 3); 
    gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            return position == 0 ? 3 : 1;
        }
    });
    recyclerView.setLayoutManager(gridLayoutManager);

    Теперь первая картинка будет занимать все 3 колонки, а все последующие по одной.
    С шириной картинок разобрались, осталось разобраться с высотой.
    Можно сделать например так: что бы высота считалась динамически и зависила от ширины картинки, допустим высота = (ширина * 3)/4. Это можно сделать отнаследовавшись от ImageView и переопределив метод onMeasure.

    Так как за ширину картинки будет отвечать GridLayoutManager, а высота будет динамически высчитываться, в результате мы получим что-то похожее на второй скриншот.
    Написав более сложную логику в getSpanSize можно получить разметку как на первом скриншоте.
    Ответ написан
    Комментировать
  • Не правильное отображение текста TextView, через ArrayAdapter?

    @itdroid
    Проблема в адаптере.

    Не надо создавать новый TextView для новых сообщений, просто добавляйте сообщение в список всех сообщений и передавайте этот список в адаптер, чтобы обновить ListView (в этом случае получите переиспользование TextView из коробки):

    List<String> messages = new ArrasyList<>();
    
    //when new message arrives
    messages.add(msg);
    
    //update adapter
    arrayAdapterMessage.setMessages(messages) ;
    arrayAdapterMessage.notifyDatasetChanged();


    Адаптер будет ответственным за создание и переиспользование TextView.

    Тут написано как работать с ListView:
    www.vogella.com/tutorials/AndroidListView/article.html
    startandroid.ru/ru/uroki/vse-uroki-spiskom/82-urok...
    Ответ написан
    Комментировать
  • Как работает приложение (типа вк, инстаграм и т.д.)?

    @itdroid
    Скорее всего, используется первый вариант: сервер через систему Push-уведомлений, говорит клиентам, что есть какие-то изменения и клиенты, в свою очередь, идут на сервер за более подробной информацией.

    Смотрите в сторону GCM: https://developers.google.com/cloud-messaging/andr...
    Ответ написан
    Комментировать
  • Как заменить статистический текст на текст с Strings.xml?

    @itdroid
    ИМХО
    private final static String APP_TITLE = "App name";
    тут лишнее. И более правильным решением будет перенести все строки в ресурсы, например так:

    <string name="app_name">App name</string>
    <string name="rate_dialog_msg">If you enjoy using %1$s, please...</string>


    И в методе showRateDialog() использовать это следующим образом:
    String appName = context.getString(R.string.app_name);
    String message = context.getString(R.string.rate_dialog_msg, appName);


    Рекомендация по получению стрингов из strings.xml отностися не только к константам, но и ко всем строкам, которые Вы собираетесь показывать пользователю. Это упростит локализацию в будущем, да и код будет смотрется чище.
    Ответ написан
    Комментировать
  • Как реализовать графический элемент в android?

    @itdroid
    Такое проще сделать с помошью картинки: использовать 9.path как background для всего контейнера или сделать составной layout.
    Эта стрелка отбрасывает тень и если отрисовывать ручками - прийдется повозится с canvas'ом.
    Ответ написан
    Комментировать
  • Как можно сделать подобную анимацию?

    @itdroid
    Привет, стандартными средствами Android SDK никак, ripple effect доступен только с API 21.
    Можно использовать сторонние библиотеки, например https://github.com/balysv/material-ripple или на подобии.
    Но я бы не рекомендовал заморачиваться по этому поводу, так как:
    1. Это принесет inconsistency со всеми остальными приложениями на устройстве
    2. На сколько я знаю в lollipop изменили механизм анимации/отрисовки вьюшек, и ripple/reveal effects не так бьют по производительности. Но на pre lollipop устрайствах с этим могут быть проблемы (тут могу ошибаться и надо смотреть производительность анимации на устройстве что бы быть уверенным что проблем нет).
    Ответ написан
    1 комментарий
  • Как релизовать запуск/остановку сервиса при сворачивании/разворачивании Activity?

    @itdroid
    В вашем случае, как по мне, лучше всего перенести всю логику расчетов в сервис и использовать его как Bound Service (developer.android.com/intl/ru/guide/components/bou...

    Когда пользователь открывает Activity, вы поднимаете сервис (startService) передавая ему исходные данные и сервис начинает делать что-то важное :). Далее, в onStart вашей Activity вы подключаетесь к сервису через bindService и начинаете с ним общаться. Когда пользователь сворачивает приложение, в onStop, вы отписываетесь от сервиса через unbindService. Но сервис продолжает делать что-то важное) Потом когда пользователь вернется в ваше приложение вы подключитесь к сервису и запрашиваете свежие данные.

    Если вам необходимо чтобы система не убивала сервис продолжительное время используйте Foreground Service, это повысит приоритет вашего процесса.
    Ответ написан
  • Почему не отображается реклама в приложении (adMob)?

    @itdroid
    Скорее всего проблема в Fill Rate, т.е. у AdMob попросту нет рекламы для вашего приложения из-за того что у вас пока нет большого колличества уникальных пользователей.

    Используйте testID что бы убедиться что все заимплементировано правильно и ждите когда будут установки и повышение Fill Rate.

    Так же в AdListener есть метод onError (точное название классов/методов не помню), туда прилетает код ошибки если не получилось загрузить рекламу, добавьте логирование/брейкпоинт и посмотрите в чем проблема.

    Более подробнее про Fill Rate и проблемы с ним можно погуглить.
    Ответ написан
    Комментировать
  • CardView и серая линия :)?

    @itdroid
    Привет,
    У вас что-то с темой не то, используется стандартная тема для <=Api10 (Android 2.3).
    Проверте наследуется ли ваша Activity от AppCompatActivity (compile 'com.android.support:appcompat-v7:2x.x.x').
    И если используете кастомную тему проверте чтобы она наследовалась от Theme.AppCompat, например так:

    <style name="YourCustomTheme" parent="@style/Theme.AppCompat">


    Надеюсь поможет.

    Так же советую ознакомится вот с этим документом: www.google.ru/design/spec/components/cards.html#ca...
    Нужны ли вам карточки для такой разметки?

    Нижний колонтитул добавляется таким же способом как вы добавляли поля Title, email, address.
    Ответ написан
    6 комментариев
  • Как скопировать базу автомобилей из android-приложения Avito?

    @itdroid
    Скорее всего полная база авто хранится на сервере, на клиенте могут хранится результаты последних запросов, чтобы ускорить время отображения. Так же есть Rest API через которое клиентские приложения получают список товаров (в данном случае - автомобилей). Можно попробовать поковырятся внутри Android приложения и найти урлы сервисов Avito, так же можно будет понять оно работает. Эта затея может не сработать по многим причинам:

    код обфусцирован и ничего не понять.
    серверное апи закрытое.

    Как уже писали, обвертку над апи копировать бесполезно - легче написать заново.
    Ответ написан
    Комментировать
  • OnClick на view в item listView?

    @itdroid
    ListView не перерисует список пока вы не пнете его(adapter.notifyDataSetChanged()).
    Без кода можно предположить что "заторможенность" появляется из-за того что данные изменились сразу после нажатия на кнопку но перерисовываются только спустя некоторое время, может кто-то другой пинает ListView или вы прокручиваете контент и view перерисовывается.

    Отказываться от ViewHolder просто так не стоит, скорее всего проблема не в нем, как писали выше без кода сложно что-то сказать.
    Ответ написан
  • Почему onDestroy вызывается всегда при старте другой активности?

    @itdroid
    Привет,

    Проверь Settings->Developer options->'Don't keep activities' пункт.
    Ответ написан
    Комментировать