Страницы

Поиск по вопросам

Показаны сообщения с ярлыком android-support-library. Показать все сообщения
Показаны сообщения с ярлыком android-support-library. Показать все сообщения

четверг, 9 апреля 2020 г.

При старте приложения используется 86% оперативной памяти(HeapSize)

#android #memory_leaks #android_support_library

                    
Я разрабатываю приложение для Андроида(платформа Xamarin).
На текущий момент это приложение является прототипом(внутри нет ничего тяжелого).
Было добавленна библиотека app7compat support,так же был заимплементен тулбар с DrawerLayout.
Провожу тесты на устройстве Samsung Galaxy S4 Active и если корректно понимаю,то
это скорее всего баг\глюк, т.к. при запуске приложения Android Device Monitor показывает
следующее :


Как такое вообще возможно? Моя активити содержит:  


Тулбар(с Drawer layout)  
Пару контролов,таких как Imageview/ImageButtons


Как я говорил раньше,это происходит сразу после запуска. Чем же может быть занята
память на 86%, если даже нету никаких цпу\гпу вычислений?
Почему это происходит? 
    


Ответы

Ответ 1



Это нормально. Приложение занимает 86% от выделенной в данный момент для него памяти. Много конечно, но не смертельно. Гляньте лучше сколько памяти всего может быть выделено. В случае андроид это делается так: Runtime rt = Runtime.getRuntime(); long maxMemory = rt.maxMemory(); Log.v("onCreate", "maxMemory:" + Long.toString(maxMemory)); или так: ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); int memoryClass = am.getMemoryClass(); Log.v("onCreate", "memoryClass:" + Integer.toString(memoryClass)); Если не ошибаюсь для S4 это 192 Mb (201326592 b)

пятница, 13 марта 2020 г.

Как установить библиотеку svg-android-2?

#java #android #android_support_library


Я хочу работать с SVG форматом, нашел статью на хабре

https://goo.gl/ZWNzdM


В которой подробно объясняется как работать с этим форматом и все бы ничего, но как
только начинаешь искать как установить svg-android-2 библиотеку, то ничего нет. Там
есть только 2 ссылки на гуглокод в котором есть ссылка на гид и в нем есть 5 java файлов,
я подумал, что это библиотека(опыта у меня в этом не много) и скачал из в проект, но
оказалось не то и все равно вот этот код весь подсвечивается красным и не распознает
ничего...

SVG svg = SVGParser.getSVGFromResource(getResources(),R.raw.filename);
Drawable drawable = svg.createPictureDrawable();
imageView.setImageDrawable(drawable);


Как мне установить эту библиотеку?

svg Файл не распознается


    


Ответы

Ответ 1



Разобрался)) Нужно было скачать файл по этой ссылке http://goo.gl/DQzxg9 У меня лично Ubuntu поэтому мне пришлось распаковать архив, в нем лежал архив в нужном мне формате jar потом я его добавил себе в AndroidStudio в проект ,в папку libs после чего нажал правой кнопкой на добавленный архив и из перечня выбрал add as a library и все заработало

воскресенье, 8 марта 2020 г.

Библиотека совместимости фрагментов

#android #android_fragment #android_support_library


Вопрос уточняющий. Фрагменты появились в 3й версии Андроид API 11, ориентируюсь я
на пользователей начиная с API 15 и выше. Значит не нужно использовать android.support.v4.app.Fragment?
Эта либа для поддержки фрагментов в версиях ниже 3, так же ведь?)
    


Ответы

Ответ 1



Если хотите использовать все современные возможности фрагментов, исправления и максимально одинаковое поведение на разных версиях андройда, то лучше использовать фрагменты и библиотеки поддержки. Смысл использовать родные фрагменты есть, только если у вас довольно маленькое приложение и вы хотите сделать его макимально маленьким). Нынче даже сама Android Studio по умолчанию при создании нового проекта с активити и фрагментами использует таковые из сапорт либы.

Ответ 2



Да всё верно. Получается так, что если вы хотите использовать фрагменты и покрывать устройства версии ниже чем API11, то необходимо использовать android.support.v4.app.Fragment. Если в этом нет нужды, используйте android.app.Fragment

суббота, 4 января 2020 г.

Разница использования библиотек поддержки?

#java #android #lib #android_support_library #android_library


При чтении статей сталкиваюсь с тем, что пишут нужно подключить такую или такую библиотеку
поддержки. Я немного почитал, чтоб постараться от сего зависит какую библиотеку нужно
подключать.

Я так понял, что в зависимости для какого апи пишешь то такую библиотеку и нужно
использовать. 

Я открыл один из своих проектов и в градле заметил, что у меня бывает даже есть 2
библиотеки разных версий. Допустим так

android.support.v4
android.support.v13


Я так понимаю, что 

android.support.v4


Можно вовсе удалить так как 

android.support.v13


должна включать в себя все из предыдущей библиотеки, верно я понял?
    


Ответы

Ответ 1



К сожалению все неправильно. Во первых, версией библиотеки считается трехзначный номер в конце (как 24.3.0), а не число, что идет после v. в названии библиотеки. Эти числа - это до какого минимального API эта библиотека поддержки собственно оказывает поддержку. Так, v.4 значит, что библиотека поддержки будет работать на устройствах с API4 и выше. Использовать нужно версию библиотеки не менее чем minSDKversion проекта и равную или более, чем compileSDKversion (targetSDKversion) а крайне желательно - последнюю стабильную (сейчас это 24.3.0), так как с каждой новой версией вносятся фиксы в существующие классы и дополняются новые классы или методы. При этом смотреть соответствие API нужно по мажорному номеру библиотеки (здесь 24.3.0 - для compileSDKversion API24). Ознакомиться с изменениями, вносимыми в библиотеки поддержки с каждой новой ревизией можно на официальном сайте разработчика Android - здесь указано, какие именно изменения и дополнения были внесены с каждой ревизией и в какие именно из библиотек поддержки (так в ревизии 24.3.0 были внесены изменения в библиотеки v4, v7 (в подбиблиотеки AppCompat, MediaRouter, Preferences, RecyclerView) , Design. библиотеки support.v4 , support.v7 и тд - это разные библиотеки, с различными классами поддержки и выполняемыми функциями и они не взаимозаменяют друг друга по принципу большей версии. С полным списком библиотек поддержки Google и их назначением и функциями вы можете ознакомиться на все том же официальном сайте разработчика Android. Например, библиотека com.android.support:support-v4:24.3.0 - библиотека поддержки с минимальным API, на котором она работает API4 и версией самой библиотеки - 24.3.0. Список классов и функций этой библиотеки можно посмотреть здесь. Как видите, это совсем не то же, что библиотека com.android.support:support-v7, в которую входит вообще несколько отдельных библиотек, как ApppCompat, CardView и тд. PS: никакой библиотеки support.v21 у Google не наблюдается ..

понедельник, 15 июля 2019 г.

Как задать цвет для кнопки с сохранением ripple-эффекта?

Использую в своем приложении (minSdk 9) кнопки AppCompatButton. Кнопки в моем приложении бывают разных цветов и могут становиться неактивными (setEnabled(false)).
Хочу сделать их плоскими и с ripple-анимацией, согласно материал-дизайну. Но не могу задать им цвет. Либо теряется ripple-эффект, либо они перестают становиться серыми в неактивном состоянии.
Как задать цвет кнопке, чтобы сохранился ripple-эффект, а в неактивном состоянии были серыми?
В данный момент есть это:


Кнопки меняют цвет, текст белый, но нет ripple-эффекта и в неактивном состоянии цвет остается зеленым.


Ответ

Получилось реализовать так. Проверял на версиях ОС от 2.3.3 до 6.0.1, работает (разумеется ripple-эффект только от 5).
Разметка:

styles.xml:

button_background_selector.xml:

button_text_selector.xml:

вторник, 25 июня 2019 г.

При старте приложения используется 86% оперативной памяти(HeapSize)

Я разрабатываю приложение для Андроида(платформа Xamarin). На текущий момент это приложение является прототипом(внутри нет ничего тяжелого). Было добавленна библиотека app7compat support,так же был заимплементен тулбар с DrawerLayout. Провожу тесты на устройстве Samsung Galaxy S4 Active и если корректно понимаю,то это скорее всего баг\глюк, т.к. при запуске приложения Android Device Monitor показывает следующее :
Как такое вообще возможно? Моя активити содержит:
Тулбар(с Drawer layout) Пару контролов,таких как Imageview/ImageButtons
Как я говорил раньше,это происходит сразу после запуска. Чем же может быть занята память на 86%, если даже нету никаких цпу\гпу вычислений? Почему это происходит?


Ответ

Это нормально. Приложение занимает 86% от выделенной в данный момент для него памяти.
Много конечно, но не смертельно.
Гляньте лучше сколько памяти всего может быть выделено. В случае андроид это делается так:
Runtime rt = Runtime.getRuntime(); long maxMemory = rt.maxMemory(); Log.v("onCreate", "maxMemory:" + Long.toString(maxMemory));
или так:
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); int memoryClass = am.getMemoryClass(); Log.v("onCreate", "memoryClass:" + Integer.toString(memoryClass));
Если не ошибаюсь для S4 это 192 Mb (201326592 b)

среда, 29 мая 2019 г.

Библиотека совместимости фрагментов

Вопрос уточняющий. Фрагменты появились в 3й версии Андроид API 11, ориентируюсь я на пользователей начиная с API 15 и выше. Значит не нужно использовать android.support.v4.app.Fragment? Эта либа для поддержки фрагментов в версиях ниже 3, так же ведь?)


Ответ

Если хотите использовать все современные возможности фрагментов, исправления и максимально одинаковое поведение на разных версиях андройда, то лучше использовать фрагменты и библиотеки поддержки. Смысл использовать родные фрагменты есть, только если у вас довольно маленькое приложение и вы хотите сделать его макимально маленьким). Нынче даже сама Android Studio по умолчанию при создании нового проекта с активити и фрагментами использует таковые из сапорт либы.

пятница, 1 февраля 2019 г.

Разница использования библиотек поддержки?

При чтении статей сталкиваюсь с тем, что пишут нужно подключить такую или такую библиотеку поддержки. Я немного почитал, чтоб постараться от сего зависит какую библиотеку нужно подключать.
Я так понял, что в зависимости для какого апи пишешь то такую библиотеку и нужно использовать.
Я открыл один из своих проектов и в градле заметил, что у меня бывает даже есть 2 библиотеки разных версий. Допустим так
android.support.v4 android.support.v13
Я так понимаю, что
android.support.v4
Можно вовсе удалить так как
android.support.v13
должна включать в себя все из предыдущей библиотеки, верно я понял?


Ответ

К сожалению все неправильно.
Во первых, версией библиотеки считается трехзначный номер в конце (как 24.3.0), а не число, что идет после v. в названии библиотеки. Эти числа - это до какого минимального API эта библиотека поддержки собственно оказывает поддержку. Так, v.4 значит, что библиотека поддержки будет работать на устройствах с API4 и выше.
Использовать нужно версию библиотеки не менее чем minSDKversion проекта и равную или более, чем compileSDKversion (targetSDKversion) а крайне желательно - последнюю стабильную (сейчас это 24.3.0), так как с каждой новой версией вносятся фиксы в существующие классы и дополняются новые классы или методы. При этом смотреть соответствие API нужно по мажорному номеру библиотеки (здесь 24.3.0 - для compileSDKversion API24).
Ознакомиться с изменениями, вносимыми в библиотеки поддержки с каждой новой ревизией можно на официальном сайте разработчика Android - здесь указано, какие именно изменения и дополнения были внесены с каждой ревизией и в какие именно из библиотек поддержки (так в ревизии 24.3.0 были внесены изменения в библиотеки v4, v7 (в подбиблиотеки AppCompat, MediaRouter, Preferences, RecyclerView) , Design
библиотеки support.v4 , support.v7 и тд - это разные библиотеки, с различными классами поддержки и выполняемыми функциями и они не взаимозаменяют друг друга по принципу большей версии. С полным списком библиотек поддержки Google и их назначением и функциями вы можете ознакомиться на все том же официальном сайте разработчика Android.
Например, библиотека com.android.support:support-v4:24.3.0 - библиотека поддержки с минимальным API, на котором она работает API4 и версией самой библиотеки - 24.3.0. Список классов и функций этой библиотеки можно посмотреть здесь. Как видите, это совсем не то же, что библиотека com.android.support:support-v7, в которую входит вообще несколько отдельных библиотек, как ApppCompat, CardView и тд.
PS: никакой библиотеки support.v21 у Google не наблюдается ..