خوب حالا به یکی از کلاسهای دلخواه خودتون این متد رو اضافه کنید (من به کلاس App که از Application مشتق کردم و توی مانیفست هم با android:name معرفیش کردم اضافه کردم ولی هیچ فرقی نمیکنه توی چه کلاسی باشه). دقت کنید که این متد استاتیک هست و درنتیجه بدون نیاز به ایجاد شئ از کلاس، میتونین توی کل پروژه استفاده کنید (بهشرط اینکه کلاس رو public تعریف کرده باشین) :
public static void toast(String message) { toast(message, Toast.LENGTH_SHORT);
}
public static void toast(String message, int length) { Context CONTEXT = getApplicationContext; Inflater INFLATER = (LayoutInflater) CONTEXT.getSystemService(LAYOUT_INFLATER_SERVICE); Typeface FONT = Typeface.createFromAsset(getAssets(), "fonts/IRANSansMobile.ttf"); Toast toast = new Toast(CONTEXT); View view = INFLATER.inflate(R.layout.toast, null); CustomTextView txtMessage = (CustomTextView) view.findViewById(R.id.txtMessage); txtMessage.setTypeface(FONT); txtMessage.setText(message); toast.setView(view); toast.setDuration(length); toast.show();
}
اگه خوب دقت کنید میبینید که الان متد toast درواقع Overload شده و میتونیم با یک یا دو پارامتر صداش بزنیم (اگه تکپارامتری باشه، Toast با زمان کوتاه نمایش داده میشه).
حالا این متد چیکار میکنه؟ اول Context یا زمینه اجرای برنامه رو میگیره تا Toast رو روی اون اجرا کنه. من از getApplicationContext استفاده کردم تا حتی اگه برنامه در پسزمینه درحال اجرا بود و سرویس خاصی اجرا شد، بازم بتونیم بدون نمایش یه اکتیویتی خاص، پنجره Toast رو نمایش بدیم. بعد با کمک Inflater لیاوت toast که توی مرحله قبل ساختیم رو تبدیل به یه شئ از کلاس View میکنیم و همچنین فونت دلخواهمون رو هم بارگذاری میکنیم که بتونیم بعنوان Typeface برای متن انتخاب کنیم تا متن با این فونت ظاهر بشه (این قسمت هم اختیاریه). درنهایت متن رو تنظیم میکنیم و toast رو نمایش میدیم منتها قبلش با setView، نمایی که با کمک Layout ساختیم رو برای toast تعیین میکنیم.
برنامه نویس...
ما را در سایت برنامه نویس دنبال می کنید
برچسب : نویسنده : خنجی prog بازدید : 203 تاريخ : چهارشنبه 31 شهريور 1395 ساعت: 23:49