شخصی سازی تُست‌ها و نوع قلم در اندروید

یکشنبه ۲۵ آبان ۹۳ • اشتراک گذاری در توییتر و فیسبوک

Toast-android

تُست‌ها (Toast) پیغام‌هایی از پیش تعیین شده هستند که بر اثر انجام یک رویداد خاص برای چند ثانیه بر روی صفحه گوشی ظاهر میشن و اطلاعاتی رو به نمایش میزارن،به راحتی میشه از تُست‌ها در برنامه‌های اندروید استفاده کرد ولی ظاهر خوبی ندارن،خیلیا دلشون میخواد که تُست‌هایی که اپلکیشنشون در حین کار نمایش میده با رابط کاربری برنامه هماهنگی داشته باشه که در این مطلب به طور کامل به نحوه‌ی شخصی‌سازی کردن تُست‌ها میپردازیم از طرفی توی برنامه‌ها از متن زیاد استفاده میشه پس نیاز هست که بدونیم چجوری میشه فونت و نوع قلم یک نوشته رو در اندروید تغییر و با قلم دلخواه خودمون جایگزین کنیم.

ساخت Toast

در ابتدا از طریق File > New > Android Project در اکلیپس یک پروژه جدید به نام Toast درست میکنیم (نحوه نامگذاری برای پکیج اندروید در این آموزش توضیح داده شده)،پس از طراحی رابط کاربری و تعریف ویجت‌ها در اکتیویتی به قسمت ساخت تُست میرسیم.در رابط کاربری ما دو دکمه تعریف کردیم،یکی برای نشان دادن تُست در حالت ساده و دیفالت خودش و یه دکمه برای نشان دادن تُست در حالت شخصی‌سازی شده که با کلیک روی هر دکمه تُست مربوطه نشون داده میشه.
ابتدا توسط setOnClickListener یک رویداد برای قابلیت کلیک کردن دکمه مینویسیم و توسط new یک شیء جدید از کلاس OnClickListener درست میکنیم.حالا زمان ساخت تُست میرسه،توسط دستور Toast.makeText میتونیم یک تُست بسازیم که این دستور شامل پارامترهای Contex،Charsequence text و int duration میباشد،به کد زیر دقت کنید:


Toast.makeText(context, text, duration);
  • برای Contex توسط getApplicationContex کانتکس جاری اپلکیشن رو دریافت میکنیم.
  • برای Charsequence text هم نوشته دلخواه خودمون رو که قراره نمایش بدیم مینویسیم.
  • int duration هم برای مدت زمان نشون دادن تُست استفاده میشه که شامل دو پارامتر Toast.LENGTH_LONG برای مدت زمان زیاد و Toast.LENGTH_SHORT برای مدت زمان کم،البته میتونید از میلی‌ثانیه (ms) نیز به عنوان مدت زمان استفاده کنید،مثال: ۲۰۰۰ میلی‌ثانیه برابر با دو ثانیه است.

و در آخر توسط show دستور نشان دادن تُست رو میدیم،کد کامل این قسمت به صورت زیر است:


//Widgets
TextView txtTitle = (TextView) findViewById(R.id.txtTitle);
Button btnStandardToast = (Button) findViewById(R.id.btnStandardToast);
Button btnCustomToast = (Button) findViewById(R.id.btnCustomToast);

//Make Typeface (Yekan)
 final Typeface yekan = Typeface.createFromAsset(getAssets(), "fonts/Yekan.ttf");

//Set Typeface For Widgets
txtTitle.setTypeface(yekan);
btnStandardToast.setTypeface(yekan);
btnCustomToast.setTypeface(yekan);

//Make Standard Toast
//Create onclick listener class
btnStandardToast.setOnClickListener(new OnClickListener() {

@Override
//When button is clicked, toast will be showed
public void onClick(View arg0) {
Toast.makeText(getApplicationContext(), "این یک تُست استاندارد است", Toast.LENGTH_LONG).show();
}
});

به این صورت تونستیم یه تُست بسازیم که برای نشون دادن پیغام‌های کوتاه به کاربر میتونه بهمون کمک کنه.

ساخت Toast شخصی‌سازی شده

چیزی که توی ذوق میزنه شکل ظاهری تُست هست و ممکنه با رنگبندی یا مدل رابط کاربری ما هماهنگ نباشه یا اصلا دوست داشته باشیم که تُست دلخواه خودمون نمایش داده بشه.
برای ساخت یک تُست دلخواه باید از LayoutInflater استفاده کنیم که این اجازه رو میده طرح‌بندی XML دلخواهمون رو جایگزین طرح‌بندی دیفالت یک ویجت کنیم،ابتدا یک فایل XML جدید از مسیر File > New > Android XML File درست میکنیم و درونش یک TextView برای نشون دادن تُست قرار میدیم،به کد زیر دقت کنید:


//Make Custom Toast
btnCustomToast.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
LayoutInflater inflater = getLayoutInflater();
View customLayout = inflater.inflate(R.layout.custom_toast, (ViewGroup) findViewById(R.id.toastCustomLayout));

TextView txtCustomToast = (TextView) customLayout .findViewById(R.id.txtCustomToast);
txtCustomToast.setText("این یک تُست شخصی‌سازی شده است");

//Set Typeface
txtCustomToast.setTypeface(yekan);

Toast customToast = new Toast(getApplicationContext());
customToast.setGravity(Gravity.BOTTOM, 0, 50);
customToast.setDuration(Toast.LENGTH_LONG);
customToast.setView(layout);
customToast.show();
}
});

یک view جدید به اسم customLayout میسازیم و توسط inflater.inflate لایه XML خودمون رو که قراره تُست درون اون نشون داده بشه در مسیر R.layout.custom_toast معرفی میکنیم و برای پارامتر بعد لایه اصلی فایل XML رو در مسیر R.id.toastCustomLayout معرفی میکنیم.
نکته: custom_toast اسم فایل XML تُستِ دلخواه و toastCustomLayout آیدی لایه اصلی درون فایل XML همون تُستِ دلخواه.
بعد از معرفی UI دلخواه باید تُست رو بسازیم،ابتدا یک شیء جدید به نام customToast از کلاس Toast میسازیم و کانتکس getApplicationContext رو برای اون در نظر میگیریم.
حالا که تُست ما ساخته شد مقادیری رو برای اون در نظر میگیریم:


customToast.setGravity(Gravity.BOTTOM, 0, 50);
customToast.setDuration(Toast.LENGTH_LONG);
customToast.setView(layout);
customToast.show();
  • توسط setGravity میتونیم محل قرارگیری تُست رو در صفحه مشخص کنیم، که پارامتر Gravity.BOTTOM تُست رو در پایین صفحه نمایش نشون میده و دو رقم بعدی فاصله تُست رو به ترتیب در جهت افقی و عمودی تغییر میدن.
  • توسط setDuration میتونیم مدت زمان نمایش تُست رو تعیین کنیم.
  • توسط setView لایه مورد نظر برای نمایش تُست رو که طراحی کردیم رو بهش معرفی میکنیم.
  • توسط show دستور نمایش تُست رو صادر میکنیم.

به این صورت میتونیم یک تُست شخصی‌سازی شده داشته باشیم و اون رو نمایش بدیم.

استفاده از فونت دلخواه در اندروید

رابط کاربری یکی از مهمترین بخش‌های یک برنامه محسوب میشه و کمک بسیاری میکنه که کاربر به سمت استفاده از برنامتون کشیده بشه پس چه بهتر که بتونیم یه رابط کاربری خوب و مورد پسند طراحی کنیم،یکی از مهمترین اجزای رابط کاربری فونت‌ها هستن،یک فونت خوب در خوانایی و زیباتر کردن برنامه خیلی میتونه موثر باشه،توی اندروید به راحتی میشه از فونت‌های دلخواه توی برنامه‌ها استفاده کرد،به کد زیر دقت کنید:


//Make Typeface (Yekan)
final Typeface yekan = Typeface.createFromAsset(getAssets(), "fonts/Yekan.ttf");

//Set Typeface For Widgets
txtTitle.setTypeface(yekan);
btnStandardToast.setTypeface(yekan);
btnCustomToast.setTypeface(yekan);

توسط کلاس Typeface میتونیم فونت دلخواهمون رو به برنامه ضمیمه کنیم پس یک شیِ به نام yekan از کلاس Typeface درست میکنیم و توسط Typeface.createFromAsset مسیر فونتی رو که مد نظرمونه بهش میدیم.
نکته: ایتدا در پکیج برنامتون پوشه‌ای به نام assests (منابع) درست کنید و فونت‌های دلخواهتون رو فقط با فرمت ttf درون این پوشه قرار بدید،این اسم باید دقیقا به همین صورت که نوشتم باشه در غیر اینصورت اکلیپس از شما خطا میگیره چون این یکی از پوشه‌های معرفی شده در پکیج اندرویده.
در آخر ویجت‌هایی که میخواهیم فونتشون تغییر کنه رو انتخاب و توسط setTypeface فونت دلخواه رو براشون سِت میکنیم.
من رابط کاربری برنامه رو به سلیقه خودم درست کردم شما میتونید هرجوری که خواستید اون رو طراحی کنید،برنامه ساخته شده و کد کامل به صورت زیره:

Toast

کد کامل اپلکیشن:


package me.imohamad.toast;

import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;


public class ToastActivity extends Activity {

//Coded By: MohamadReza Deylami | Twitter: mr_deylami | http://imohamad.me

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//Widgets
TextView txtTitle = (TextView) findViewById(R.id.txtTitle);
Button btnStandardToast = (Button) findViewById(R.id.btnStandardToast);
Button btnCustomToast = (Button) findViewById(R.id.btnCustomToast);

//Make Typeface (Yekan)
final Typeface yekan = Typeface.createFromAsset(getAssets(), "fonts/Yekan.ttf");

//Set Typeface For Widgets
txtTitle.setTypeface(yekan);
btnStandardToast.setTypeface(yekan);
btnCustomToast.setTypeface(yekan);

//Make Standard Toast

//Create onclick listener class
btnStandardToast.setOnClickListener(new OnClickListener() {

@Override
//When button is clicked, toast will be showed
public void onClick(View arg0) {
Toast.makeText(getApplicationContext(), "این یک تُست استاندارد است", Toast.LENGTH_LONG).show();
}
});

//Make Custom Toast
btnCustomToast.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
LayoutInflater inflater = getLayoutInflater();
View customLayout = inflater.inflate(R.layout.custom_toast, (ViewGroup) findViewById(R.id.toastCustomLayout));

TextView txtCustomToast = (TextView) customLayout.findViewById(R.id.txtCustomToast);
txtCustomToast.setText("این یک تُست شخصی‌سازی شده است");

//Set Typeface
txtCustomToast.setTypeface(yekan);

Toast customToast = new Toast(getApplicationContext());
customToast.setGravity(Gravity.BOTTOM, 0, 50);
customToast.setDuration(Toast.LENGTH_LONG);
customToast.setView(customLayout);
customToast.show();
}
});

}
}

نکته: توی این آموزش بیشتر سعی شده کسایی که کمی با برنامه‌نویسی اندروید آشنایی دارن نحوه‌ی کار شخصی‌سازی ویجت‌ها مشخص بشه تا اینکه آموزش جزء به جزء دستورات.
در آخر هم میتونید کُد این برنامه رو از اینجا دانلود و وارد اکلیپس کنید.

نوشته شده در آموزش ، اندروید

مرتبط با برچسب‌های ، ، ، ،



یکشنبه ۳۱ خرداد ۹۴ • نوشته شده توسط شیما

خیلی ممنون مفید بود

چهارشنبه ۱۶ تیر ۹۵ • نوشته شده توسط anal video

Really informative article post.Thanks Again. Keep writing.

یکشنبه ۳ مرداد ۹۵ • نوشته شده توسط yeezy shoes

This actually answered my problem, thank you!

چهارشنبه ۱۷ آذر ۹۵ • نوشته شده توسط آرش

عالی