سبد (0)

ساخت Toast سفارشی در اندروید

ساخت Toast سفارشی

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

برای شروع کار یک پروژه جدید ایجاد می کنیم و نام آن را  Toast قرار می دهیم.ب رروی لایه اصلی برنامه main.xml یک Button قرار می دهیم تا زمانی که روی آن کلیک شد پیغام برنامه را به کاربر نمایش دهد.

 

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.toast.MainActivity" >

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Button" />

</RelativeLayout>

در ادامه یک فایل xml جدید در پوشه ی layout ایجاد کرده و نام آن را  toast_layout قرار می دهیم. در داخل این لایه یک ImageView برای نمایش تصوی و یک TextView برای نمایش دادن متن قرار می دهیم،در واقع این لایه همان Toast ما خواهد بود.کدهای زیر را در لایه ی toast_layout وارد کنید:

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android
"android:layout_width="wrap_content
"android:layout_height="wrap_content
<"android:background="@drawable/toast_border

"ImageView android:layout_width="wrap_content>
"android:layout_height="wrap_content
</"android:src="@drawable/ic_launcher

TextView>
"android:paddingLeft="10dp
"android:textColor="#ffffff
"android:textStyle="bold
"android:layout_width="wrap_content
"android:layout_height="wrap_content
"android:text="Please wait
</"android:layout_gravity="center_vertical

<LinearLayout/>

حالا می خواهیم از یک فایل shape برای زیبا کردن Toast استفاده کنیم.برای این کار یک فایل xml در فولدر drawable  ایجاد کرده و نام آن را toast_shape قرار دهید.به صورت زیر:

 

 

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="20dp"
/>
<solid
android:color="#03D9C3"
/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="500dp"
android:height="110dp"
/>
<stroke
android:width="1dp"
android:color="#878787"
/>
</sh

در مرحله ی بعد وارد فایل MainActivity.java شده و کدهای زیر را در آن وارد کنید:

 

 

package com.example.toast;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

private Button btn;

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

btn = (Button) findViewById(R.id.button1);

//ایجاد قابلیت کلیک برای دکمه
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

showCustomAlert();

}
});
}


public void showCustomAlert()
{

Context context = getApplicationContext();
// ساخت یک لایه با استفاده از toast.xml file
LayoutInflater inflater = getLayoutInflater();

// فراخوانی لایه برای نمایش toast
View toastRoot = inflater.inflate(R.layout.toast_layout, null);

Toast toast = new Toast(context);

// ست کردن مقادیر لایه به toast جهت نمایش
toast.setView(toastRoot);
toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL,
0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();

}

در مرحله اول Button را معرفی میکنیم و برای آن یک رویداد کلیک مینویسیم تا وقتی که روی آن کلیک کردیم کدهای توست اجرا شود.در ادامه یک تابع ایجاد میکنیم تا مقادیر توست را در آن بنویسیم.با استفاده از دستور setGravity برای Toast یک گرانش در نظر میگیرم که حالت آن را روی CENTER_HORIZONTAL و CENTER_VERTICAL قرار میدهیم.بعد با استفاده از دستور setDuration یک زمان نمایش برای toast در نظر میگیرم.تصویر زیر خروجی این آموزش می باشد.

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه