آموزش ساخت Notification سفارشی در اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش ساخت Notification سفارشی در اندروید می پردازیم منظور از Notification سفارشی یعنی اینکه خودمان کل بخش های آن را طراحی کنیم مثلا شاید دوست داشتید در آن CheckBox قرار دهید یا هر چیز دیگر مثلا دوتا ImageView در ادامه با ما همراه باشید تا این آموزش را نیز فرا گیرید .
در ابتدا چون Notification سفارشی است باید layout سفارشی خودمان را ایجاد کنیم.
باید یک فایل به نام custom_push.xml در layout خود درست کرده و کد های زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="64dp" android:padding="10dp" > <ImageView android:src="@mipmap/ic_launcher" android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentLeft="true" android:layout_marginRight="10dp" /> <TextView android:textSize="13dp" android:textColor="#000" android:text="Testing" android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/image" /> <TextView android:textSize="13dp" android:textColor="#000" android:text="Testing is awecome" android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/image" android:layout_below="@id/title" /> </RelativeLayout> |
در بالا یک ImageView و دو TextView قرار گرفته است هرجوری دوست دارید تنظیمش کنید ! مثلا دوتا عکس یا هر چیز دیگه.
چون در اینجا یک Layout جدید ساخته شده باید آن را Inflate کنیم تا نمایش داده شود کد زیر را قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 | RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_push); contentView.setImageViewResource(R.id.image, R.mipmap.ic_launcher); contentView.setTextViewText(R.id.title, "Custom notification"); contentView.setTextViewText(R.id.text, "Programchi.ir ! wow"); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.icon) .setContent(contentView); Notification notification = mBuilder.build(); notification.flags |= Notification.FLAG_AUTO_CANCEL; notification.defaults |= Notification.DEFAULT_SOUND; notification.defaults |= Notification.DEFAULT_VIBRATE; notificationManager.notify(1, notification); |
در بالا دقت کنید از RemoteView استفاده کردیم چون خود Notification از نوع RemoteViews است و توسط آن به چیزهایی که قرار داده ایم (دو تا TextView و یک ImageView) دسترسی گرفتیم و مقدار در آن قرار داده ایم سپس از NotificationCompat.Builder استفاده کردیم و از setContent به جای setTile و… استفاده کردیم . در ادامه می توانید از ویژگی های خود NotificationCompat.Builder استفاده کنید قبلا آموزشش را قرار داده ایم واژه NotificationCompat.Builder رو جستجو کنید همانطور که دید کنترل کردن آن نیز زیاد سخت نبودش.
این آموزش هم همانند آموزش های دیگر به پایان رسید.
موفق و موید باشید.
سلام،ممنون از زحمات شما
متاسفانه اندازه نوتیفیکیشن محدودیت داره و نمیشه تعداد مورد نظری کاراکتر رو درونش نمایش داد
اما بعضی اپ ها مثل تلگرام میذارن تا چند خط نوتیفیکشن نمایش داده بشه
راه حلی برای این موضوع در نظر دارید؟
با تشکر
سلام
خواهش می کنم.
اگر دقیق بخواهیم بررسی کنیم امکان نداره توی Notification معمولی بیش از 300 تا کارکتر نمایش داده شود دقیق تر بخوایید بدونید بیش از 1024 بایت نمیشه نمایش داد.
در Title می شود 16 کارکتر نمایش داد .
بخش Text برابر با 27 کارکتر
و در بخش Ticker بیش از 300 کارکتر نمایش داده می شود.
من خودم تست نکردم ولی این کد بالا را بررسی کنید شاید بیش از 1000 کلمه جواب داد.
موفق باشید.
سلام
می خوام از این نوتیفکشن استفاده بکنم با دادن تاریخ و زمان ، این نوتیفکشن در اون تاریخ و زمان نمایش بده چطور باید اینکار رو بکنم ؟
با استفاده از Alarm باید این کار رو انجام بدهید.
سلام
notificationManager
شناخته نمیشه و قرمز رنگ میمونه
سلام با mBuilder جایگزین کنید.
با سلام و تشکر big text style رو چطوری ست کنیم واسه این روش؟
سلام این notification کاستوم هست خودتون باید براش توی layout قرار بدید مواردی رو که می خواهید.
کافیه یک textview به layout اضافه کنید و متن رو یکم bold و فونت را افزایش دهید.
موفق و پیروز باشید.
مرسی از جوابتون منظورم اینه اگه متنی که از دیتابیس میگیریم بیشتر از یه خط باشه رو چطور نشون بدیم این فقط متن هایی که یک سطر هستن رو کامل نشون میده وقتی سه سطر میشه نصفش رو نشون نمیده
ویژگی زیر را به دو تا TextView اضافه کنید
مشکل حل می شود.
و اینکه notification محدودیت نمایش متن دارد حدودا 65sp می تونه view داشته باشه
با توجه به سورس خود گوگل
https://android.googlesource.com/platform/frameworks/base/+/gingerbread/packages/SystemUI/res/layout/status_bar_latest_event.xml
و کد زیر و هم یه تست بکنید شاید کمک کند.
موفق و پیروز باشید.
سلام
یه سوال داشتم
میخوام عکسهایی که توی دیتابیس هست رو به صورت روزانه و هر روز یک عکس نمایش داده بشه چیکار منم؟
یعنی امروز یه عکس رو از دیتابیس بگیره و در نوتیفیکیشن اطلاع داده بشه و کاربر روی اون کلیک کرد اون عکس رو نمایش بده و روز های بعد عکسهای دیگه رو
توروخدا کمکم کنید
اگه آموزش ویدیویی هست ممنون میشم معرفی کنید