آموزش ایجاد Custom Toast در اندروید استودیو با جاوا

ارسال شده توسط: حسین درویشی Comments: 0

آموزش ایجاد Custom Toast در اندروید استودیو با جاوا

برای نمایش یک پیغام برای کاربر در اندروید از Toast استفاده می کنند. این Toast بطور پیشفرض ساده بوده و زیبایی ندارد. در اینجا می خواهیم که با ایجاد Custom Toast در اندروید استودیو آشنا شویم.

اول اشاره ای خواهم داشت به Toast ساده.

Toast ساده در اندروید استودیو

حالت ساده ایجاد یک Toast استفاده از متد make text هست که می توان بشکل زیر از آن استفاده کرد.

Toast.makeText(this, "my toast", Toast.LENGTH_SHORT).show();

همانطور که می بینید این متد شامل سه پارامتر ورودی می باشد که اولی مربوط می شود به اینکه این Toast قرار است در کدام اکتیویتی اجرا شود، دومی متن نمایشی است و پارامتر سوم زمان نمایش آن است که دو مقدار می گیرد. اولی Toast.LENGTH_SHORT و Toast.LENGTH_LONG که به ترتیب هر کدام در مدت زمان کمتر و بیشتر نمایش داده می شود.

ایجاد Custom Toast در اندروید استودیو

اما ما می توانیم Toast را بشکل زیر وارد کنیم.

Toast to=new Toast();

چون یک کلاس بوده و شامل متدهای زیر است:

    public Toast(Context context) {
throw new RuntimeException("Stub!");
}
public void show() {
throw new RuntimeException("Stub!");
}
public void cancel() {
throw new RuntimeException("Stub!");
}
public void setView(View view) {
throw new RuntimeException("Stub!");
}
public View getView() {
throw new RuntimeException("Stub!");
}
public void setDuration(int duration) {
throw new RuntimeException("Stub!");
}
public int getDuration() {
throw new RuntimeException("Stub!");
}
public void setMargin(float horizontalMargin, float verticalMargin) {
throw new RuntimeException("Stub!");
}
public float getHorizontalMargin() {
throw new RuntimeException("Stub!");
}
public float getVerticalMargin() {
throw new RuntimeException("Stub!");
}
public void setGravity(int gravity, int xOffset, int yOffset) {
throw new RuntimeException("Stub!");
}
public int getGravity() {
throw new RuntimeException("Stub!");
}
public int getXOffset() {
throw new RuntimeException("Stub!");
}
public int getYOffset() {
throw new RuntimeException("Stub!");
}
public static Toast makeText(Context context, CharSequence text, int duration) {
throw new RuntimeException("Stub!");
}
public static Toast makeText(Context context, int resId, int duration) throws NotFoundException {
throw new RuntimeException("Stub!");
}
public void setText(int resId) {
throw new RuntimeException("Stub!");
}
public void setText(CharSequence s) {
throw new RuntimeException("Stub!");
}

در ادامه متدهای قابل نیاز توضیح داده خواهند شد.

اول اینکه این کلاس یک سازنده داشته و آن هم مربوط به Context است. یعنی می توانید بگویید در همین اکتیویتی باید نمایش داده شود.

Toast toast=new Toast(this);

و مورد دوم اینکه باید یک View به آن پاس دهیم و بر روی آن ویو کار کنیم. منظور از ویو ساخت یک Layout است. این کار را با متد setView انجام خواهیم داد که یک آرگومان از جنس View می گیرد.

شروع ساخت Custom Toast

اول قصد داریم پس زمینه Toast را تغییر دهیم. به روش زیر عمل خواهیم کرد:

        Toast toast1=Toast.makeText(this,"My Toast",Toast.LENGTH_SHORT);
toast1.getView().setBackgroundColor(0xff443600);
toast1.show();

در این تکه کد اول ویوی Toast را می گیرم و بعد رنگ پس زمینه اش را تغییر می دهم در مبنای شانزده. خروجی در نهایت بصورت زیر خواهدبود.

ایجاد Custom Toast در اندروید استودیو با جاوا

بسیار عالی! اکنون یک کلاس با نام ToastColors بسازید. در این کلاس یک سری رنگ هایی را تعریف کنیم. رنگ ها را می توانید از سایت color-hex بردارید.

public class ToastColors {
private static final int RED = 0xffbf1932;
private static final int GREEN = 0xffcaf4ae;
private static final int CAYAN = 0xff26ffff;
private static final int ORANGE = 0xffff9e00;
}

حالا یک متدی تعریف خواهیم کرد که این متد یک Toast را گرفته و View آن return بکنه.

    private static View getToastView(Toast toast) {
return (toast == null) ? null : toast.getView();
}

در اینجا گفتیم اگر toast بدون مقدار بود مقدار null در غیر اینصورت ویوی آن را باز می گرداند.

حالا نیاز خواهیم داشت به یک متد دیگری با نام colorToast که اینبار می خواهیم toast ایجاد شده را رنگی کنیم.

    private static Toast colorToast(Toast toast, int colorId) {
View getView = getToastView(toast);
if (getView != null)
getView.setBackgroundColor(colorId);
return toast;
}

این متد شامل دو آرگومان می باشد. آرگومان اول مربوط به Toastای می باشد که قرار است پس زمینه آن را تغییر دهیم و آرگومان دوم رنگ اختصاصی برای toast است.

متد colorToast ویوی Toast را قرار است بگیرد سپس بکگراند آن را ست می کند و آن را با جنس Toast باز می گرداند.

خوب حالا برای هرکدام از رنگ های تعریف شده یک متد تعریف خواهیم کرد.

    public static Toast alert(Toast toast) {
return colorToast(toast, RED);
}
public static Toast warning(Toast toast) {
return colorToast(toast, ORANGE);
}
public static Toast success(Toast toast) {
return colorToast(toast, GREEN);
}
public static Toast info(Toast toast) {
return colorToast(toast, CAYAN);
}

مثلاً در متد اول که alert است. این متد برای ما یک toast با پس زمینه قرمز ایجاد خواهد کرد. این متد آرگومان از جنس toast خواهد گرفت و سپس با صدا زدن تابع colorToast رنگ قرمز را برای آن ست می کند.

حالا می توانیم تست کنیم.

    public static Toast alert(Toast toast) {
return colorToast(toast, RED);
}
public static Toast warning(Toast toast) {
return colorToast(toast, ORANGE);
}
public static Toast success(Toast toast) {
return colorToast(toast, GREEN);
}
public static Toast info(Toast toast) {
return colorToast(toast, CAYAN);
}

خروجی:

و به همین ترتیب success و info را نمایش داده خواهد داد.

همین طور که می بینید تونستیم پس زمینۀ Toast را تغییر دهیم و به همین شکل می تونیم رنگ متن، سایز Toast و… را تغییر دهیم.

این یکی از حالات های ایجاد Custom Toast در اندروید استودیو هست. در حالت های پیشرفته یک Layout تعریف کرده و توسط آن Toast می سازند. این حالت را بعداً منتشر خواهیم کرد.

برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *