Ответы пользователя по тегу Android
  • Как организовать хранение настроек в приложении android?

    @ProkletyiPirat
    примерно такую же проблему сейчас решаю.
    нужно сделать возможность инкрементной (во время выполнения) кастомизации внешнего вида программы, от размера и положения кнопок до их цветовой гаммы, и это не считая настроек того что должны делать эти кнопки. Помимо этого должна быть возможность собрать все настройки в группу и при определённых условиях применить эту группу.


    сейчас всего пара настроек и хранятся они в preferences.

    сначала думал реализовать всё в preferences но из за группировки и условий размер и сложность изменения этих preferences будет мега огромна.
    потом подумал о БД, но тут опять гемморой в добавлении\удалении\изменении как самих настроек так и их количества.

    в общем из-за того что при добавлении новой "фичи" придётся перелопачивать код сразу в нескольких места (и это не считая реализации самой "фичи") отказался от выше озвученных идей.

    но не всё так грустно, пришла в голову вот такая мысль "хранить настройки в формате xml или json". Собственно хранить в виде текста дефолтные настройки в preferences, а групповые в БД.
    Когда настройки понадобятся они парсятся из json-строки в map и передаются куда надо. В итоге имею возможность не трогая сохранение\загрузку\передачу данных в preferences и БД, добавлять настройки фич, нужно только подправлять десериализацию из за вложенности настроек.

    если нет вложенности настроек (вместо map просто набор переменных) то по крайней мере в gson сериализация\десериализация происходит в пару строк кода.
    Ответ написан
  • ООП - Как понимать Интерфейсы в java?

    @ProkletyiPirat
    идея
    смотрите, вы создаёте объект "Кнопка" и этот объект может изменять своё состояние (нажата кнопка да\нет это и есть состояние). Другие программисты в других проектах будут использовать ваш объект "Кнопка", и эти программисты хотят что бы при изменение состояния что то происходило. При этом вы не знаете что именно должно происходить во всех этих проектах (это знают только их разработчики).

    как это можно сделать?
    убогая банальщина: вы делаете метод .получитьТекущееСостояние() и другие программисты в каком-то цикле опрашивают вашу кнопку через этот метод, да ещё и хранят предыдущее состояние (надо же с чем то сравнивать). Как видите довольно убого... пользователю-программисту нужно писать кучу кода с проверками и в добавок тратить впустую память и время процессора (то есть программа лагает и жрёт дохрена ресурсов...).

    нормальная реализация: пусть сама кнопка вызывает нужные действия, веть она же знает когда её состояние изменилось. Значит кнопка должна вызывать какую-то функцию но при этом не знать что именно эта функция должна делать. Вот тут и приходят на помощь интерфейсы и паттерны проектирования в данном случае Listeners (aka Observers). Вот как раз OnClickListener это и есть интерфейс. Что касается кнопки то она хранит список объектов которые нужно уведомить при изменении состояния, тип этих объектов "OnClickListener". Таким образом "Кнопке" плевать "что где и как" должно происходить при изменении состояния, но при этом она обеспечивает возможность выполнения этого "что где и как" и при этом гарантирует что не произойдёт ошибки из за отсутствия вызываемого метода.

    ru.wikibooks.org/wiki/Java/Listeners
    citforum.ru/SE/project/pattern
    Ответ написан
    3 комментария
  • Как сделать центрирование drawable в button android?

    @ProkletyiPirat
    сам недавно искал ответ на этот вопрос, не нашел.
    Сделал так

    <?xml version="1.0" encoding="utf-8"?>
    
    <FrameLayout
        android:id="@+id/myButton"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/selector_bottom_buttons"
        >
    
        <ImageView
            android:id="@+id/myButton_Image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:contentDescription="@string/text_btnKill"
            android:clickable="false"
            android:focusable="false"
            android:focusableInTouchMode="false"
            />
    
        <TextView
            android:id="@+id/myButton_Text"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="Kill"
            />
    </FrameLayout>


    если размер кнопки строго фиксированный то можно сделать drawable из layer-list и внутри у картинки сделать отступ, но на мой взгляд FrameLayout более простой способ.
    Ответ написан
  • Как сделать многослойный интерфейс приложения Android Xamarin?

    @ProkletyiPirat
    в Android ВСЕ интерфейсы резиновые. и никогда даже не пытайтесь сделать по другому...

    в Android есть FrameLayout в котором можно располагать элементы поверх друг друга, и RealtiveLayout в котором вдобавок можно располагать элементы относительно друг друга. В общем используйте RealtiveLayout с позиционированием относительно других элементов или родителя и отступами внутренними и внешними.
    Ответ написан
  • Eclipse vs AndroidStudio: что выбрать?

    @ProkletyiPirat
    про AndroidStudio точнее intellij-idea можно говорить много и очень долго!

    сижу на ней пол года, ненарадуюсь! в прямом смысле не проходит недели что бы я не воскликнул "БОЖЕ, да ты и ЭТО, умеешь?!?!!" причин таких эмоций море достаточно зайти на хабр и почитать про линейку intellij от JetBrains или зайти на ютьюб и глянуть их TV, буквально вчера-позавчера опять статья про PhpStorm и её возможности....

    что касается Eclipse то в нём можно сделать тоже что и в intellij-idea но это нужно ставить 100500 плагинов, а с учётом того что есть бесплатная версия intellij-idea CE и что сама intellij-idea стоит для индивидуального лица 200$ а для фирмы 500$ то надобность в самом Eclipse и плагинов под него отпадает.
    Ответ написан
    Комментировать
  • Какой выбрать ноутбук для работы Android разработчика в районе 600$?

    @ProkletyiPirat
    по моему для разработки подойдёт любой ноут выполняющий следующие условия
    0. ОЗУ=8+гб, CPU=i5 или аналоги
    1.размер от 14 дюймов (меньше неудобно)
    2.удобная клава (опять таки только при размере 14+ получится норм клава)
    3.возможность установить 2-3 венча один из которых SSD а второй HDD от 1TB для хлама (у меня например msata + 2hdd)
    4.долгая работа при средней нагрузке, то есть возможность подрубить один мощный акум или сразу 2-3 акума
    5.относительно прочный
    дополнительным требованием может быть маленький блок питания с длинными проводами.

    на мой взгляд лучшие представители это ThinkPad'ы я со своим t420 могу летом просидеть весь день на лужайке без зарядки. Очень приятно!
    Ответ написан
    Комментировать
  • Какой есть оффлайновый англо-русский словарь на Android?

    @ProkletyiPirat
    а нужен словарь или переводчик? словари не умеют переводить фразы и предложения, только конкретные слова.

    лично я на андройде и винде пользуюсь GoldenDict + скаченные словари RU->RU, RU->EN, EN->RU, EN->EN, wiki(RU), wiki(EN) общий вес где то 15гб, количество словарей не поддаётся исчислению...

    дополнительный профит от словарей это; перевод в конкретной тематике и повышение словарного запаса...

    ru.wikipedia.org/wiki/GoldenDict
    4pda.ru/forum/index.php?showtopic=267685
    goldendict.org
    Ответ написан
    Комментировать
  • Логотип Android (робот), право на использование в рекламном объявлении

    @ProkletyiPirat
    там же установлена ссылка на описание лицензии "the Creative Commons Attribution license"
    там можете изучить все подробности, или почитать на wiki

    ---------------------------------------------
    немного отсебятины
    насколько я помню CC-BY позволяет всё что угодно при: если у исходного продукта(ИП) было указано авторство или лицензия то вы обязаны это сохранить

    то есть
    если у ИП был указан автор "это сделал вася пупкин" то вы обязаны сохранить надпись "это сделал вася пупкин"

    если у исходного названия было указано сокращенное название лицензии "img_name(CC-BY).gif" то вы обязаны сохранить (CC-BY)
    Ответ написан
    3 комментария