Я работаю над проектом android, где пользователь может сканировать метку RFID. Срок действия тега истекает через определенное количество секунд, чтобы очистить систему до появления другого тега, в основном, чтобы избежать ошибочной обработки одного и того же тега дважды. Чтобы визуализировать этот тайм-аут, я хочу, чтобы фон кнопки, где отображается идентификатор тега, был анимированным. По сути, я хочу, чтобы вся кнопка была заполнена цветом, когда тег только что отсканирован, и медленно уменьшалась до середины по мере того, как время обрабатывалось.
Что я нашел до сих пор: Я нашел этот ответ , где они говорят о свойствах API. Я мог видеть, как это работает с градиентом, но, к сожалению, документация по градиентам скудна, и, похоже, это будет не так просто сделать.
Я также подумал, что, возможно, вы могли бы добиться этого, наложив другой слой того же размера ниже кнопки и масштабировав его. Но, честно говоря, я думаю, что это было бы довольно сложно сделать последовательно, особенно с изменением размера представления при обработке таймера и изменении конфигурации. Опять же, я не очень разбираюсь в android и использую линейные и сеточные макеты почти для всего, так как их легче всего понять.
Все, что мне действительно нужно, это какой-то способ по существу "масштабировать" фон на величину (отношение общего времени и оставшегося времени) к середине, как я продемонстрировал здесь. Или способ по существу иметь жесткий градиент цвета, при котором белые части градиента перемещаются к середине по мере того, как обрабатывается время.
Последнее решение, которое, как я думал, могло бы сработать, - это нарисовать анимированный вектор и манипулировать объектаниматором. связано с этим, чтобы заставить его играть на правильной скорости. Однако, это решение, вероятно, довольно грязное, хотя я и не пробовал его (пока)
У кого-нибудь есть чистое решение этой проблемы?
Примечание: я использую java для этого проекта. Я не включил фрагменты кода, потому что не думал, что они нужны. Если вам нужны фрагменты, просто спросите, и я предоставлю. Мой minSdkVersion равен 25, поскольку целевое устройство для задания имеет android 7.1 и не может быть обновлено до более новой версии.