我在應用程序收到fcm通知時顯示自定義視圖有困難。 我成功地顯示收到的fcm通知給android的通知列表。 但我也希望fcm消息作爲自定義視圖顯示在屏幕上(自上而下,幾秒鐘後消失),而不管應用狀態如前景,背景或死亡。如何在應用程序收到fcm通知時顯示自定義頂部/底部視圖
我該如何解決我的問題? 先進的謝謝!
我在應用程序收到fcm通知時顯示自定義視圖有困難。 我成功地顯示收到的fcm通知給android的通知列表。 但我也希望fcm消息作爲自定義視圖顯示在屏幕上(自上而下,幾秒鐘後消失),而不管應用狀態如前景,背景或死亡。如何在應用程序收到fcm通知時顯示自定義頂部/底部視圖
我該如何解決我的問題? 先進的謝謝!
我猜你需要實現PopupWindow
有在this doc
我要展示一個樣品的情況下,這樣你可以瞭解一個簡短的想法。
假設你對你的View
的layout
是custom_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl_custom_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="2dp"
android:background="#ab2fc4"
>
<ImageButton
android:id="@+id/ib_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_close_white_24dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="@null"
/>
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a sample popup window."
android:layout_centerInParent="true"
android:padding="25sp"
/>
</RelativeLayout>
然後在你要處理的雲消息,你只需要添加此代碼段
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
// Inflate the custom layout/view
View customView = inflater.inflate(R.layout.custom_layout,null);
// Initialize a new instance of popup window
mPopupWindow = new PopupWindow(
customView,
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT
);
// Set an elevation value for popup window
// Call requires API level 21
if(Build.VERSION.SDK_INT>=21){
mPopupWindow.setElevation(5.0f);
}
// Get a reference for the custom view close button
ImageButton closeButton = (ImageButton) customView.findViewById(R.id.ib_close);
// Set a click listener for the popup window close button
closeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Dismiss the popup window
mPopupWindow.dismiss();
}
});
在這種情況下,你可以點擊關閉您的mPopupWindow
。如果您想自動關閉它,請使用Handler
使用其postDelayed()
方法。 要知道如何實現其與Handler
看到這個answer
從這個blog.
希望這有助於我得到的幫助!
正如我所做的答案一樣,但通知列表的視圖已應用。那不是我想要的。我想要在屏幕上顯示新的自定義視圖,無論何時我使用其他應用程序或Android家庭等等。 – Dennis
對不起,我的壞!但是現在我明白了你的觀點。所以你想要一個彈出窗口來顯示? –
請檢查我編輯的答案 –
您可以使用下面的代碼,使自定義視圖:
Notification notification = new Notification(icon, "Custom Notification", when);
NotificationManager mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification);
contentView.setImageViewResource(R.id.image, R.drawable.ic_launcher);
contentView.setTextViewText(R.id.title, "Custom notification");
contentView.setTextViewText(R.id.text, "This is a custom layout");
notification.contentView = contentView;
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.contentIntent = contentIntent;
notification.flags |= Notification.FLAG_NO_CLEAR; //Do not clear the notification
notification.defaults |= Notification.DEFAULT_LIGHTS; // LED
notification.defaults |= Notification.DEFAULT_VIBRATE; //Vibration
notification.defaults |= Notification.DEFAULT_SOUND; // Sound
mNotificationManager.notify(1, notification);
嘗試使用服務這一功能 –
您是否嘗試過'Notification.Builder'? –