如何在android的状态栏上显示倒数计时器,如时间显示?

Posted

技术标签:

【中文标题】如何在android的状态栏上显示倒数计时器,如时间显示?【英文标题】:How to display countdown timer on status bar in android, like time display? 【发布时间】:2017-01-15 13:36:28 【问题描述】:

我正在制作一个允许用户选择日期和时间的应用程序。到达日期和时间后,屏幕上将显示动画。在时间之前,它只会在屏幕上显示倒计时时间(如 xxx:xx:xx)。我使用每秒变化的文本视图实现了这一点。如何在状态栏上显示此文本,例如显示时间

我尝试过使用 Notification 构造函数,就像在我在这里找到的一些帖子中一样,但它们已被贬低并且不再起作用。 我尝试使用 NotificationCompat.Builder,但它确实没有办法设置可以显示在状态栏上的文本。

任何人都知道任何工作arpund解决方案,请给我一个答案。我只需要在图标的状态栏上显示一个文本

【问题讨论】:

你试过NotificationCompat.Builder类中的setTicker方法吗? 我试过了。问题是,当我的通知文本每秒更新一次时,setTicker 每秒都会在通知栏上显示它并带有动画(来自下方),这对用户来说非常烦人 查看@Shazeel Afzal 的回答here。可能符合您正在寻找的内容 创建通知并使用 setSmallIcon(resId, level)。用计数器更新级别。当然 resId 必须是可绘制的级别列表,并且您必须将所有数字作为可绘制文件夹中的图像 我认为@uguboz 是正确的 【参考方案1】:

您可以通过传递布局文件或视图在 ActionBar 上设置 CustomView。这是一个示例代码。

protected void setCustomActionBarTitle(String title) 
        ActionBar actionBar = getActionBar();
        if (actionBar != null) 
            actionBar.setDisplayHomeAsUpEnabled(true);
            actionBar.setDisplayShowCustomEnabled(true);
            actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
            actionBar.setCustomView(R.layout.layout_action_bar_title);
            TextView titleView = (TextView) actionBar.getCustomView().findViewById(R.id.action_bar_title);
            titleView.setText(title);
            ImageView imageView = (ImageView) actionBar.getCustomView().findViewById(R.id.up_icon);
            imageView.setOnClickListener(new View.OnClickListener() 
                @Override
                public void onClick(View v) 
                    onBackPressed();
                
            );
        
     

【讨论】:

【参考方案2】:

将此添加到您的 activity_main xml 文件中

<android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_
            android:layout_
            android:minHeight="@dimen/header_size"
            android:background="?attr/colorPrimary"
            android:layout_gravity="center"
            android:gravity="center">
            <TextView
                android:id="@+id/title"
                android:textColor="@color/title"
                android:gravity="center"
                android:background="@color/white"
                android:layout_
                android:layout_
                android:textSize="@dimen/header_text_size"
                android:textStyle="bold"
                android:text=""/>

        </android.support.v7.widget.Toolbar>

并在您的活动中添加这些行

    actionbar = getSupportActionBar();
    actionbar.setHomeAsUpIndicator(R.drawable.ic_back);
    actionbar.setDisplayHomeAsUpEnabled(true);
    title = (TextView) findViewById(R.id.title);

现在你可以在这个textview中设置倒计时,也可以根据需要对齐TextView

【讨论】:

以上是关于如何在android的状态栏上显示倒数计时器,如时间显示?的主要内容,如果未能解决你的问题,请参考以下文章

Android游戏中的倒数计时器

Xamarin.Android RunOnUIThread 和 onTimedEvent 延迟/滞后(我正在尝试显示倒数计时器)

如何在Android中制作倒数计时器?

Android 如何在状态栏上隐藏 NotificationCompat.Builder 通知的图标?

如何从 Android 应用程序与服务器同步倒数计时器

Android解析推送通知不会在状态栏上显示消息