Анимация в строке состояния в Android - PullRequest
1 голос
/ 09 февраля 2012

Я новичок в Android. Я бы хотел сделать анимацию зарядки аккумулятора в телефоне, например, в правом верхнем углу экрана, маленькую иконку, которая перемещается вверх дном при зарядке и останавливается на текущем проценте заряда батареи.

Пока что в моем коде я смог заставить его двигаться, но он никогда не останавливается.

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

Вот мой код в анимации:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.batteryinfo);

        ImageView batteryImage = (ImageView) findViewById(R.id.BatteryImage);
        batteryImage.setBackgroundResource(R.drawable.ic_battery_animation);

        BatteryAnimation = (AnimationDrawable) batteryImage.getBackground();
        batteryImage.post(new Starter());

        textBatteryLevel = (TextView) findViewById(R.id.batterylevel_text);

        registerBatteryLevelReceiver();
    }

    class Starter implements Runnable {

        public void run() {
            BatteryAnimation.start();
        }

    }

Пока я могу узнать состояние батареи, тип штекера и работоспособность батареи.

1 Ответ

2 голосов
/ 17 февраля 2012

Класс стартера должен также реализовывать логику остановки.Примерно так:

class Starter implements Runnable {
    boolean stopConditionMet = false;
    public void run() {
        BatteryAnimation.start();
        try {
         while (!stopConditionMet) { Thread.sleep(500); } 
        } catch (InterruptedException e) {}
         BatteryAnimation.stop();

    }
    public void stop() { stopConditionMet=true; }

}

(вместо занятое ожидание вы можете сделать это с помощью схемы wait () - notifyAll (). Приведенный выше пример для простоты).

.. and you 'Вам нужно будет сохранить экземпляр класса Starter внутри вашей Activity.Объявление анонимно не позволит вам изменить его значение, когда вам нужно.

...