خانه اندروید

800 ساعت آموزش اختصاصی

بیش از 30 هزار دانشجو

آموزش های پروژه محور

مطالب پیشنهادی حتما مشاهده کنید :

ساخت یک Toast شخصی سازی شده +سورس +دمو

ساخت یک Toast شخصی سازی شده +سورس +دمو

سلام و عرض ادب خدمت تمامی همراهان عزیز

امروز با یه آموزش کاربردی خدمت شما هستیم به اسم Toast شخصی سازی شده!

ما قبلا Toast ساده رو نمایش دادیم و ازش استفاده کردیم —> کار با Toast در برنامه نویسی اندروید

امروز قصد داریم روش ساختن Toast شخصی سازی شده رو نمایش بدیم!

برای این کار یه پروژه جدید ساختیم. و کار ما فقط با کلاس جاوا است برای این کار ابتدا ما باید چند پیش نیاز رو اول تکمیل کنیم و بعد از اون کد های کلاس جاوا مون رو مینویسیم.

۱) این آموزش نیاز به کتابخونه خاصی نداره پس توی این آموزش ما نیازی له کتابخونه نداریم و به قسمت دوم آموزش میریم.

۲) ما ابتدا باید از مسیر app->res->values->colors.xml در فایل رنگ هامون دو کد جدید وارد کنیم. من این تغییرات رو اینجوری قرار دادم:

    <color name="MyToastText">#ffe100</color>
    <color name="MyToastBackground">#000c8c</color>

* کد اول رنگ متن ماست.

* کد دوم رنگ پس زمینه متنمون.

۳) حالا توی مسیر app->res->drawable یک فایل میسازیم به اسم shap.xml و کد های زیر رو درونش وارد میکنیم:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="https://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <corners android:radius="11dp" />

    <solid android:color="@color/MyToastBackground" />

    <stroke
        android:width="5dp"
        android:color="@color/MyToastText" />

</shape>

* solid رنگ داخل کادر پس زمینه ما میباشد.

* corners مقدار گرد بودن گوشه های کادر ماست.

* stroke مقدار حاشیه و رنگ کناری کادر ماست.

۴) حالا داخل فایل activity_main.xml یک دکمه قرار میدیم تا با زدن اون Toast نمایش داده بشه:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_centerHorizontal="true"
        android:background="@android:color/white"
        android:elevation="4dp"
        android:text="your text"
        android:textColor="#000"
        android:id="@+id/btn"
        android:textAllCaps="false"
        android:layout_centerVertical="true"
        android:layout_height="wrap_content"/>

</RelativeLayout>

۵) حالا میرسیم به قسمت مهم و اصلی کارمون که کد نویسی جا هست:

import android.graphics.Typeface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import static android.widget.Toast.makeText;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Toast toast = makeText(getBaseContext()," کار با Toast شخصی سازی شده ",Toast.LENGTH_LONG);
        final TextView myToast = (TextView) toast.getView().findViewById(android.R.id.message);
        myToast.setTextColor(getResources().getColor(R.color.MyToastText));
        Typeface typeFace = Typeface.createFromAsset(getAssets(),"divani.ttf");
        myToast.setTypeface(typeFace);
        View view = toast.getView();
        view.setBackgroundResource(R.drawable.shap);

        Button btn = (Button)findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                toast.show();
            }
        });
    }
}

* ابتدا یه فاینال toast تعریف میکنیم که به این منظور است مقدار داده شده تغییر نخواهد کرد.

* و سپس یک فاینال textView به همان روش باالا ایجاد میکنیم.

* اما یه بخشی که اینجا متفاوت است باید بعد از تعریف کردن textView باید بهش با اسم toast که قبل از اون تعریف کرده بودیم یه view نسبت داد با کد getView و با استفاده از ID تعریفش کرد که ID پیام Toast در برنامه نویسی اندروید مساوی با android.R.id.message است.

* حالا به textView با استفاده از کد setTextColor میگیم که میخوایم رنگ متن رو اینجوری تعریف کنیم که با کد getResources برو از سورس بردار با کد getColor رنگ مورد نظر رو انتخاب میکنیم.

* قسمت بعدی برای تغییر دادن فونت متن میباشد که اگر شما نیاز به نغییر فونت ندارید نیازی نیست ۲ خط بعدی رو وارد کنید.

* حالا برای تغییر دادن رنگ پس زمینه باید یه view تعریف کننیم و به toast نسبت بدیم.

* حالا به view که ساختیم باید با کدsetBackgroundColor رنگمون رو اختصاص بدیم.

* اما ما ()show. نمیکنیم که نمایش داده بشه چون ما قرار بود کد رو وقتی دکمه زده شد نشون بدیم پس دکمه خودمون رو تعریف میکنیم و با استفاده از ID شناسایی میکنیم و متد OnClickListener رو برای اجرای کار هنگام فراخانی میکنیم.

* و در اخر toast مون رو ()show. میکنیم که نمایش داده بشه.

* پایان برنامه رو Run کنید.

دانلود دمو

دانلود سورس آموزش

*****************

موفق و پیروز باشید!

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

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

محمد هستم و امیدوارم که بتونم سهم کوچکی توی پیشترفت برنامه نویسان جوان و آینده دار داشته باشم.

قبل از ارسال دیدگاه

  • قبل از ارسال دیدگاه: لطفا دیدگاه خودتون رو فقط در مورد این مطلب بنویسید.سپاسگزارم.

    دیدگاه های طولانی نادیده گرفته می شوند لذا دیدگاه خودتان را در دو خط خلاصه کنید.

    دیدگاه های که شامل توهین یا متن توهین آمیز اصلا تایید نمی شود.

    به دیدگاه های بی نام و نشان که ایمیل فیک و نام فیک وارد می کنند پاسخ داده نمی شود

6 دیدگاه

  1. دانیال گفت:

    سلام خسته نباشید واقعا عالی بود.

  2. ابوالفضل سلمانی از کاشان گفت:

    سلام من این کدها رو نوشتم Force Close میده ، چرا؟
    final TextView myToast = (TextView) toast.getView().findViewById(android.R.id.message);
    اینجوری من نوشتم ایراد نگرفت ،
    final TextView myToast = (TextView) findViewById(android.R.id.message);
    دلیل toast.getView چیست؟
    و خط اول این کد رو توضیحات کامل نیست خط اول دقیقا چرا لازم به این کار شدیم؟
    View view = toast.getView();
    view.setBackgroundResource(R.drawable.f_draw);
    خط اول کد بالا

    • Mohammad Ali Riazati گفت:

      با سلام
      اول یسوال…
      شما از سورس استفاده کردید یا از روی کد ها نوشتید؟
      چون یه layout اضافه توی سورس موجوده که بعد باز بینی متوجه شدیم اسمش هم test هستش میتونید پاکش کنید.
      دوم این که توی توضیحات گفتم که شما میخواید به Toast که با اسم toast تعریف کردید یک view نسبت بدیم که رنگ متن toast رو تغییر بده پس باید TextView رو getView کنید به Toast چون مرتبط به toast اون TextView که ساختیم
      سوم این که گفتم در جواب بالا ما میخوایم به toast مون view نسبت بدیم پس یه view ساختیم و مساویش کردیم با toast که اول ساختیم و با کد زیرش از resource بک گرانند رو انتخاب کردیم.
      اگر کماکان استوپ میده لطفا عکس از ارورتون در هاست های رایگان مثل picofile اپلود کنید و لینکش رو قرار بدین.
      موفق باشین

  3. ابوالفضل سلمانی از کاشان گفت:

    این اموزش عالیه ، لذت بخشه .ممنونم از کانال و وب