Я понимаю, что это запоздалый ответ, но, глядя через developer.android.com, кажется, что кнопка Toggle идеально подходит для вашей ситуации.
[/g1] http://developer.android.com/guide/topics/ui/controls/togglebutton.html
И конечно, вы все равно можете использовать другие предложения для получения фонового рисунка, чтобы получить желаемый пользовательский вид.
Теперь, если вы хотите перейти с окончательным редактированием и иметь эффект «ореола» вокруг ваши кнопки, вы можете использовать другой настраиваемый селектор, чтобы сделать именно это.
-
-
Реализация задержки в 5 секунд, измеряющая прошедшие миллисекунды и считывание аналогового значения во время ожидания, выглядит следующим образом:
startTime = millis();
while(millis()-startTime < 5000) {
sensorValue = analogRead(A0);
if (sensorValue >= 300) {
AbsMouse.press(MOUSE_LEFT);
AbsMouse.release(MOUSE_LEFT);
}
}
Это имеет два недостатка, которые вам придется решить при необходимости. Первый заключается в том, что события щелчка будут выполняться, пока значение остается выше 300 (то есть оно может щелкать более одного раза). Вторая проблема заключается в том, что это не точная задержка в 5 секунд, поскольку она может иметь дрожание из-за кода, выполняемого внутри блока while
.
Другой вариант, как вы упомянули, - использовать прерывания по таймеру для достижения более точной задержки. Используя такую библиотеку, как TimerOne , это выглядит так (вдохновлено примерами библиотек и модифицировано для выполнения каждые 5 секунд):
#include <TimerOne.h>
void setup(void) {
Timer1.initialize(5000000);
Timer1.attachInterrupt(fiveSeconds);
}
void fiveSeconds(void) {
// do stuff
}
Функция fiveSeconds
должна выполняться каждые 5 секунд, с большей точностью, чем подход millis()
.
Теперь вам нужно добавить код в эту функцию, чтобы достичь того, что вы хотите сделать. Я бы предложил использовать loop()
для считывания аналогового значения и щелчка, а также прерывание для перемещения курсора мыши, но ваш подход может быть другим.