एक्सपैंडेबल/कॉलैप्सिबल नोटिफिकेशन
एंड्रॉइड नोटिफिकेशन डिफॉल्ट रूप से एक्सपैंड/कॉलैप्स होते हैं। BigTextStyle या InboxStyle लगाने पर यूजर नोटिफिकेशन को नीचे खींचकर एक्सपैंड कर सकता है और ऊपर धकेलकर कॉलैप्स।
चरण 1-2: प्रोजेक्ट और लेआउट
सामान्य सेटअप।
चरण 3: MainActivity — BigTextStyle (एक्सपैंडेबल)
package app.tutorialspoint.com.notifyme;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
public class MainActivity extends AppCompatActivity {
public static final String NOTIFICATION_CHANNEL_ID = "10001";
private final static String default_notification_channel_id = "default";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void createNotification(View view) {
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity.this, default_notification_channel_id);
mBuilder.setContentTitle("Notify Me");
String longText = getResources().getString(R.string.lorem_ipsum);
mBuilder.setContentText(longText);
// BigTextStyle — एक्सपैंड/कॉलैप्स अपने आप काम करता है
mBuilder.setStyle(new NotificationCompat.BigTextStyle().bigText(longText));
mBuilder.setSmallIcon(R.drawable.ic_launcher_foreground);
mBuilder.setAutoCancel(true);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
assert mNotificationManager != null;
mNotificationManager.createNotificationChannel(notificationChannel);
}
assert mNotificationManager != null;
mNotificationManager.notify((int) System.currentTimeMillis(), mBuilder.build());
}
}
कैसे काम करता है?
- कॉलैप्स्ड स्टेट — केवल शीर्षक, छोटा टेक्स्ट, समय, छोटा आइकन दिखता है
- एक्सपैंडेड स्टेट — यूजर नोटिफिकेशन पर दो उंगलियों से नीचे खींचे या सिंगल टैप करके (कुछ डिवाइस पर) पूरा कंटेंट देखता है
BigTextStyle,InboxStyle,BigPictureStyle— ये स्टाइल एक्सपैंडेड व्यू इनेबल करते हैं- कोई अतिरिक्त कोड नहीं चाहिए — सिस्टम हैंडल करता है
प्रोग्रामेटिकली एक्सपैंड/कॉलैप्स (एडवांस्ड)
आमतौर पर जरूरी नहीं, लेकिन अगर करना हो:
// नोटिफिकेशन पोस्ट करने के बाद तुरंत एक्सपैंड नहीं कर सकते // लेकिन Wear OS, ऑटो में अलग बिहेवियर होता है
कस्टम लेआउट में एक्सपैंड/कॉलैप्स
RemoteViews से कस्टम लेआउट बनाने पर setCustomBigContentView() (एक्सपैंडेड) और setCustomContentView() (कॉलैप्स्ड) अलग-अलग सेट करें।
यह उदाहरण स्टैंडर्ड BigTextStyle दिखाता है — ऐप चलाकर नोटिफिकेशन पर स्वाइप डाउन करके टेस्ट करें।