آموزش برنامه نویسی اندروید قسمت سیزدهم

1395/1/14 --- 2781

با سلام با قسمت  سیزدهم از آموزش اندروید در خدمتتان هستم

در این جلسه نیز به ادامه یک سری آموزشهای کاربردی دیگر میپردازیم. و در جلسه آینده یک جمع بندی از 3 جلسه آخری که داشتیم خواهیم داشت و با برگشتن به پروژه مان به اضافه کردن این کدها که یاد گرفتیم به پروژه میپردازیم.

1 ) کار با AutoComplete Textview

حتما تا به حال در برنامه اندروید خود دیدید که در جایی شروع به نوشتن متنی میکنید و بعد از آن لیستی برای شما باز میشود و کلماتی مشابه چیزی که تایپ کردید و در دیتاهای برنامه قرار دارد را برای شما نشان میدهد. بطور مثال در خود تلگرام من دو هشتگ آخری که سرچ کردم #unity و #secssion1 بوده. وقتی در EditText کانال تلگرام آموزش برنامه نویسی علامت # را بگذارم لیست زیر برای من باز میشود:

آموزش برنامه نویسی اندروید قسمت سیزدهم

به این ابزار AutoComplete TextView میگوییم. و اما نحوه ساخت.

برای ساخت آن ابتدا وارد layout خود شوید. کافی است تنها نام تگ این ابزار را نوشته و آن را بصورت زیر بسازید:

آموزش برنامه نویسی اندروید قسمت سیزدهم

این ابزار را ساختم. به آن عرض و طول و رنگ دادم و id آن را انتخاب کردم. حال باید برای ابزارمان کد بنویسیم. به اکتیویتی متصل به این layout بروید.

اول از همه باید برای این autocomplete خود یک لیستی از داده هایی که میخواهیم نشان دهیم بسازیم. برای ساخت این لیست باید یک آرایه بسازیم که با آنها آشنا شده اید.

مثلا من آرایه ی زیر را تعریف کرده ام که شامل آموزش­های اینجا هست:

آموزش برنامه نویسی اندروید قسمت سیزدهم

همانطور که میبینید بعضی از این اسامی دارای حروف اول یکسان و بعضی دارای 2 یا سه حرف اول یکسان هستند. تنها کاری که باید کرد اضافه کردن این لیست به autocomplete ما هست. قبل از او دو تا تعریف را باید دوره کنیم.

    یک View چیست؟  هرکدارم از المان های ui (user interface یا واسط کاربری) یک view هستند. در اصل ui ترکیبی از view ها هست.

    یک Adapter چیست؟ یک اداپتر در اصلا پلی بین view و داده هست که ارتباط بین داده و آن view را میسر کرده و دسترسی به آیتم های داده را امکان پذیر میکند.

داده ما لیستی بود که تهیه کردیم. پس با توجه به تعریفی که بیان شد برای اتصال این آرایه به Autocomplete view باید از اداپتر استفاده کنیم.

ابتدا یک نمونه از autocomplete خود در متد onCreate میسازم:

AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autcmplt);

حال باید یک array adapter بسازیم و مشخص کنیم میخواهیم از نوع String باشد.

در ورودی اول با گفتن this مشخص میکنیم میخواهیم در این صفحه نمایش داده شود. توجه کنید که برای نمایش adapter یک لیست به شما نمایش داده میشود. ما این لیست را نساخته ایم اما بصورت آماده در اندروید وجود دارد. برای صدا زدن layout های خودمان همیشه از R.layout. استفاده میکردیم. این بار میگوییم android.R.layout و سپس تعیین میکنیم که میخواهیم از دراپ دان لیست (همان لیستی که باز میشود) استفاده کنیم، در نهایت هم نام آرایه خود را بعنوان ورودی آخر میدهیم:

AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autcmplt);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,autolist);

نکته دیگری که هست، حتما دیدید گاها در برنامه ها برای باز کردن این لیست تنها باید یک کارکتر وارد کنید و یا نه گاها در برنامه هایی مانند خیلی از دیکشنری ها باید دو یا سه کاراکتر حداقل وارد کنید زیرا تعداد آیتم های لیست بالاتر هست. برای مشخص کردن این تعداد باید از متد زیر استفاده کنید:

autoCompleteTextView.setThreshold(1);

و در نهایت باید اداپتر خود را به view خود وصل کنیم:

autoCompleteTextView.setAdapter(adapter);

و این هم خروجی برنامه در دستگاه خودم:

آموزش برنامه نویسی اندروید قسمت سیزدهم

 2 ) اضافه کردن فونت.

فرض کنید میخواهم به برنامه خودم یک فونتی اضافه کنم مثلا b Kamran. خب این فونت در یک دستگاه اندروید شاید وجود نداشته باشد. مثل خیلی از برنامه ها که میبینید فونت ها بصورت مربعی نشان داده میشودند. برای اضافه کردم فونت به برنامه خود و اد کردن آن به یک TextView باید به روش زیر این کار را انجام دهید:

یک پوشه به نام asset داریم. این پوشه برای درج هر فایلی هست که شما بخواهید. مثل پوشه res نیست که قالب خاصی برای درج فایلها داشته باشد.

حالا یک پوشه در اینجا به نام fonts بسازید. سپس فونت خود را در اینجا کپی کنید.

برای پیدا کردن فایل ttf فونتتان به درایو c، سپس پوشه windows و سپس fonts بروید و آن را از آنجا کپی کنید:

آموزش برنامه نویسی اندروید قسمت سیزدهم

من یک TextView دارم و میخواهم فونتم را به آن نسبت بدهم. ابتدا آن را صدا میزنم:

TextView txtfont = (TextView) findViewById(R.id.txt);

در مرحله بعد باید فونتمان را به برنامه معرفی کنیم. باید مسیر آن را بدهیم به کلاسی به نام TypeFace.

TextView txtfont = (TextView) findViewById(R.id.txt);
Typeface typeface = Typeface.createFromAsset(getAssets(),"fonts/B Kamran Bold_YasDL.com.ttf");

از TypeFace خواستم تا از asset فایلش را بگیرد. البته میتوانید از createFromFile هم استفاده کنید فرقی ندارد منتها در آنجا باید آدرس فایلتان را بدهید. ابتدا با getAssets() که یک متد هست، آن را تا پوشه asset بردم و بعد آدرس پوشه fonts و نام فایلم را دادم.

در نهایت این typeface را به textview خود نسبت میدهیم.

txtfont.setTypeface(typeface);

و این هم خروجی برنامه در دستگاه خودم:

آموزش برنامه نویسی اندروید قسمت سیزدهم