【问题标题】:How to implement badge using push notification in android如何在android中使用推送通知实现徽章
【发布时间】:2014-09-24 04:33:10
【问题描述】:
我正在用 android 编写一个应用程序。我们将拥有带有多个图标的仪表板,我想在其中一个带有计数器编号的图标上显示徽章。我希望一旦收到通知,诸如计数器编号之类的实现就会在仪表板上更新。我怎样才能在通知中实现它。
这是一笔交易,
我们有一个表格,我们在其中插入来自使用云(即 Google App Engine)的用户的数据。一旦条目被插入到表格推送通知中,应该提示用户和仪表板上的计数器编号将在同一屏幕上更新。
请给我一个例子,以便我可以在我的应用程序中实现它。
谢谢,
普拉尚特。
【问题讨论】:
标签:
android
android-notifications
【解决方案2】:
我需要类似的功能,我使用以下代码实现了这一点
菜单/main.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourappname="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/notification"
android:title="@string/notifications"
yourappname:actionLayout="@layout/notification_update_count"
yourappname:showAsAction="always" />
</menu>
布局/notification_update_count.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:paddingRight="10dp">
<!-- Menu Item Image -->
<ImageView
android:id="@+id/notification_bell"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:clickable="true"
android:background="@drawable/ic_actionbar_notification" />
<!-- Badge Count -->
<TextView
android:id="@+id/actionbar_notifcation_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/notification_bell"
android:layout_alignTop="@id/notification_bell"
android:background="@drawable/counter_bg"
android:gravity="center"
android:textColor="@color/white"
android:visibility="invisible" />
</RelativeLayout>
src/MainActivity.java:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = MainActivity.this;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (currentPosition != 6 && currentPosition != 7 && currentPosition != 8 && currentPosition != 9) {
getMenuInflater().inflate(R.menu.main, menu);
item = menu.findItem(R.id.notification);
View menu_notification_view = MenuItemCompat.getActionView(item);
ImageView notification_bell = (ImageView) menu_notification_view.findViewById(R.id.notification_bell);
try {
TextView notification_count = (TextView) menu_notification_view.findViewById(R.id.actionbar_notifcation_textview);
if (Count > 0) {
notification_count.setVisibility(View.VISIBLE);
notification_count.setText(String.valueOf(Count));
}
} catch (Exception e) {
e.printStackTrace();
}
}
return true;
}
}