SKETCHWARE95
782 subscribers
14 photos
103 videos
427 files
33 links
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 TagGroupView — удобный виджет для тегов в Android!

<custom.tag.view.TagGroupView
android:id="@+id/tagGroupView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>

Добавляй, удаляй и стилизуй теги красиво и просто 🎨

Функции:

Добавление тегов: addTag(Tag tag)

Удаление: removeTag(int position)

🧹 Очистка: clear()

🎨 Настройка стиля: цвет текста, фон, рамка, размер текста, закругления, иконка закрытия

🔒 Закрываемые теги: setClosable(true)

📝 Получение данных: имена, цвета, полная информация


📏 Отступы между тегами: setHorizontalSpacing(), setVerticalSpacing()
👂 Слушатель удаления: setOnTagRemoveListener()

💻 Пример использования:

tagGroupView.addTag(new Tag("Android", Color.BLUE));
tagGroupView.setTextColor(Color.WHITE);
tagGroupView.setBackgroundColor(Color.DKGRAY);
tagGroupView.setCornerSize(16f);
tagGroupView.setClosable(true);

Подробнее вы можете изучать в проекте skpro.
🔥3👍1
Нашел интересную библиотеку и решил поделиться.

💻 Простой виджет движения для разблокировки на Kotlin

dependencies {
implementation "com.ncorti:slidetoact:0.11.0"
}

— полностью векторный, никаких .png
— поддерживаются разные анимации
— легко интегрируется (просто строка компиляции gradle)
— подстраивается под тему приложения
— можно использовать из коробки, всё будет работать

🖥 GitHub
20👍51🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Нашёл ещё одну годную библиотеку для Android и хочу поделиться 👇

📚 Удобный виджет для двухуровневых списков — LinkageRecyclerView

dependencies {
implementation 'com.kunminx.linkage:linkage-recyclerview:2.7.0'
}

— готовая реализация связанного списка (категории слева + элементы справа)
— работает на базе RecyclerView без лишней сложности
— полностью кастомизируется (адаптеры, layout, клики, стили)
— поддерживает smooth scroll, футеры и sticky заголовки
— легко адаптируется под меню, категории товаров, настройки и многое другое
— минимальная интеграция: передаёшь список — всё работает из коробки
— современный, чистый код, без тяжёлых зависимостей

🖥 GitHub
202🔥1
Как автоматически убирать фокус с EditText при клике вне него в Android

В Android часто возникает ситуация, когда пользователь хочет убрать фокус с EditText, кликнув по любой части экрана. Особенно это актуально, если клавиатура закрывается только вручную. Ниже описан простой и универсальный способ, который работает для EditText как в Activity, так и во фрагментах.


1. Проблема

Когда EditText в фокусе, клавиатура остаётся открытой, и пользователю нужно явно нажать “Назад” или кликнуть на другой EditText. Если экран содержит множество кнопок, текстов и других элементов, вручную добавлять OnTouchListener на каждый элемент неудобно.


2. Решение через dispatchTouchEvent

Android позволяет перехватывать все касания на экране через метод dispatchTouchEvent в Activity.

Преимущества:

Работает для всех EditText на экране.

Не зависит от того, находится ли EditText в фрагменте или Activity.

Не нужно назначать слушатели на каждую кнопку или view.

3. Код для Activity

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
// Получаем текущий фокус
View v = getCurrentFocus();
if (v instanceof EditText) {
Rect outRect = new Rect();
// Получаем глобальные координаты EditText
v.getGlobalVisibleRect(outRect);
// Проверяем, кликнули ли вне EditText
if (!outRect.contains((int) ev.getRawX(), (int) ev.getRawY())) {
// Снимаем фокус
v.clearFocus();
// Прячем клавиатуру
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
}
}
return super.dispatchTouchEvent(ev);
}

Комментарии к коду:

getCurrentFocus() возвращает любой View с фокусом, даже если он в фрагменте.

Rect outRect определяет область EditText на экране.

contains() проверяет, кликнули ли вне EditText.

clearFocus() снимает фокус.

InputMethodManager.hideSoftInputFromWindow() скрывает клавиатуру.

4. Куда вставлять код

В Activity, где находятся ваши фрагменты, нужно просто переопределить метод dispatchTouchEvent.

Для EditText в фрагментах дополнительных действий не требуется: Activity “видит” их через getCurrentFocus().

Этот метод будет работать для всех EditText на всех фрагментах, без отдельной настройки каждого элемента.


5. Итог

Использование dispatchTouchEvent — это простой и универсальный способ управлять фокусом EditText:

Работает с любым количеством EditText.

Не зависит от расположения элементов в иерархии.

Прячет клавиатуру автоматически.

Этот метод значительно упрощает пользовательский опыт, особенно на экранах с множеством интерактивных элементов.


для skpro импортируйте
import android.view.inputmethod.InputMethodManager;

Java код вставьте в moreblock между скобками
}

Java code


{
2🥰1
ClickAwayEdit.apk
4 MB
Test it
2🔥1
Media is too big
VIEW IN TELEGRAM
XPopup — удобная библиотека для красивых диалогов и всплывающих окон в Android

Адаптировал XPopup под skpro

Сделал полноценный рабочий пример библиотеки XPopup, полностью адаптированный под skpro.

Что было сделано:

Перевёл оригинальный пример с китайского на английский.

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

Настроил структуры, макеты и логику, чтобы XPopup корректно работал в skpro.


Теперь библиотеку можно легко изучать и использовать даже без Android Studio — прямо внутри skpro.

🖥 GitHub
1🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Обновление SimpleChat
Решил немного обновить проект SimpleChat для примера с использованием firebase

Добавил регистрацию и аутентификацию через firebase Auth
Подключил firebase real time для чата
1🔥1