Android状态栏中的动画

Posted

技术标签:

【中文标题】Android状态栏中的动画【英文标题】:Animation in status bar in Android 【发布时间】:2012-02-09 18:30:15 【问题描述】:

我是 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】:

Starter 类也应该实现停止逻辑。 比如:

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() 方案来代替忙等待。为简单起见,上面的示例)。

.. 并且您需要将 Starter 类的实例保留在您的 Activity 中。匿名声明它不会让您在需要时更改它的值。

【讨论】:

以上是关于Android状态栏中的动画的主要内容,如果未能解决你的问题,请参考以下文章

Android appbarlayout 高程出现在状态栏中

如何为 Android 同步状态图标设置动画?

在android应用程序中,调用onResume方法时清除状态栏中的小图标

Android:如何在状态栏中获取电池图标资源 ID 或完整文件路径/名称?

如何在android系统状态栏中显示文本

Android:是不是可以更改 Android Lollipop 状态栏中图标的颜色