آموزش اندروید، فصل ۱۵: آشنایی مقدماتی با View های اندروید (بخش سوم)

در دو فصل قبلی درباره View های اندروید مانند TextView و EditText و ImageView و … نوشتم. در این فصل تعداد دیگری از View های اندروید را معرفی می کنم.

Time and Date

در پالت Date and Time ویوهای مرتبط با تاریخ و ساعت قرار گرفته اند. این View ها علیرغم این که به شدت کاربردی و مورد نیاز هستند، به علت تفاوت ساعت و تقویم ایرانی، معمولاً قابل استفاده در برنامه های ایرانی و فارسی نیستند و نیاز به جایگزینی آنها با View های مناسب به شدت احساس می شود.

TimePicker

از این View برای انتخاب زمان استفاده می شود. می توان زمان را به فرمت ۲۴ ساعته یا ۱۲ ساعته به همراه AM/PM نمایش داد:

android-ch15-01-time-picker

DatePicker

از این View برای انتخاب تاریخ استفاده می شود. متأسفانه این View قابلیت این که تاریخ را بر مبنای تقویم کشورها و مناطق مختلف نمایش دهد ندارد:

android-ch15-02-date-picker

این View در اندرویدهای با API Level بالاتر از ۱۱، به صورت پیش فرض یک CalendareView هم در کنار خود دارد:

android-ch15-03-date-picker-2

برای غیرفعال کردن نمایش این Calendar ویژگی android:calendarViewShown را برابر false قرار دهید:

android:calendarViewShown="false"

همانطور که می بینید، این View قابلیت انتخاب تاریخ هجری شمسی را ندارد. برای کمک به رفع این مشکل، یک کتابخانه کد باز در GitHub قرار داده ام به نام PersianDatePicker.

استفاده از PersianDatePicker بسیار ساده است ولی با این حال در روزهای آتی یک راهنمای تصویری برای آن خواهم نوشت.

CalendarView

مثل DatePicker، از این View هم برای انتخاب یک تاریخ استفاده می شود. تفاوت این دو View در شکل نمایش و انتخاب تاریخ است:

android-ch15-04-calendar-view

همانطور که در عکس می بینید، این View هم قابلیت نمایش تقویم های غیر انگلیسی را ندارد و بنابراین اگر می خواهید تقویم فارسی را نمایش دهید، باید یک View سفارشی برای این کار بنویسید. شاید در آینده PersianCalendarView را هم نوشتم!

Chronometer

از این View برای نمایش گذر زمان استفاده می شود. مثلاً فرض کنید قرار است در جایی فقط ۵ دقیقه سخنرانی کنید. می توانید با شروع سخنرانی، این View را start کنید و با نگاه کردن به آن زمان گذشته را ببینید:

android-ch15-05-chronometer

ویژگی های این View بسیار شبیه TextView است. برای کنترل این View باید در کد جاوا اقدام کنید که در فصل های آتی می آموزید.

AnalogClock

از این View برای نمایش یک ساعت آنالوگ استفاده می شود. این View همواره زمان فعلی سیستم را نمایش می دهد:

android-ch15-06-analog-clock

DigitalClock

از این View برای نمایش ساعت فعلی سیستم به صورت یک ساعت دیجیتال استفاده می شود:

android-ch15-07-digital-clock

ویژگی های این View مشابه ویژگی های TextView است.


 

Transitions

View های معرفی شده در این قسمت، برای انتقال و جابجایی بین View ها استفاده می شوند. برای استفاده از آنها غالباً نیاز است که تنظیمات بسیاری را در کد انجام دهید و عملکرد اصلی آنها در کد جاوا مشخص می شود نه در فایل های Layout. با این حال برای هر کدام از آنها توضیح مختصری می نویسم تا با آنها آشنا شوید و در آینده در صورت ضرورت آنها را معرفی خواهم کرد.

ImageSwitcher

گاهی پیش می آید که با یک ImageView می خواهیم ۲ یا چند عکس را نمایش دهیم. در واقع می خواهیم بین چند عکس با انیمیشن و افکت حرکت کنیم. برای این کار از ImageSwitcher استفاده می کنیم.

اگر عجله دارید و می خواهید زودتر کار کردن با ImageSwitcher را یاد بگیرید، اینجا و اینجا را ببینید!

AdapterViewFlipper و ViewFlipper

از ViewFlipper هم مثل ImageSwitcher برای حرکت کردن بین View ها استفاده می شود. دو یا چند View به ViewFlipper اضافه می کنیم که در هر لحظه فقط یکی از آنها نمایش داده می شود. حالا می توان با استفاده از دکمه هایی مثل «بعدی» و «قبلی» یا با استفاده از ژست های حرکتی (همان جسچرها) بین View ها حرکت کرد.

ViewFlipper قابلیت بازیافت View ها برای استفاده مجدد را ندارد و به همین دلیل در بعضی مواقع ممکن است مشکلاتی را برای سیستم به وجود بیاورد. برای رفع این مشکل در API Level 11 یک View جدید به نام AdapterViewFlipper به اندروید اضافه شده است.

برای مطالعه زودهنگام درباره ViewFlipper و دیدن چند مثال از نحوه استفاده از آن اینجا و اینجا و اینجا را ببینید.

StackView

StackView هم برای نمایش چندین View روی هم شبیه یک دسته کارت است. اگر View بالایی را جابجا کنید، View پایینی نمایش داده می شود و به صورت چرخشی همه View ها نمایش می شوند:

android-ch15-08-stack-view-1

برای مطالعه بیشتر درباره StackView و دیدن مثالی از نحوه استفاده از آن اینجا را ببینید.

TextSwitcher

TextSwitcher همانطور که از اسمش پیدا است، نوع خاصی از TextView است که بین چند متن مختلف با انیمیشن و به زیبایی حرکت می کند.

برای مطالعه بیشتر درباره TextSwitcher و دیدن مثالی از نحوه استفاده از آن اینجا را ببینید.


 

Advanced

در این پالت تعدادی از View های اندروید معرفی شده اند که چون هیچ سنخیت . مشابهتی با هم ندارند، همگی تحت عنوان Advanced اینجا قرار گرفته اند!

requestFocus

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

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <requestFocus />
</EditText>

View

View پایه ای ترین View اندروید است. همه View های اندروید از این کلاس مشتق شده اند. خود View هیچ خاصیت نمایشی ندارد. معمولاً اگر بخواهیم جایی در صفحه توسط یک View اشغال شود که هیچ نمایشی ندارد و فقط جا می گیرد از ای View استفاده می کنیم. یا اگر بخواهیم مثلاً بین دو View متفاوت در صفحه یک خط افقی یا عمودی بکشیم، معمولاً از View استفاده می کنیم و به آن background می دهیم. به عکس زیر دقت کنید:

android-ch15-09-view

کدی که View زیر را می سازد شبیه قطعه کد زیر است:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="4dip" >

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Username:" >
    </EditText>

    <View
        android:layout_width="match_parent"
        android:layout_height="2dip"
        android:layout_margin="5dip"
        android:background="#FF0000" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Password:" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Login" />

</LinearLayout>

دقت کنید که برای کشیدن خط قرمز رنگ بین دو EditText مربوط به Username و Password از View استفاده کرده ایم.

view

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

<ir.smartlab.persindatepicker.PersianDatePicker
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

روش دوم استفاده از view و اعلام نام کلاس به عنوان یکی از ویژگی های آن است. کد زیر همان کار کد بالا را انجام می دهد:

<view
    class="ir.smartlab.persindatepicker.PersianDatePicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

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

TextureView

از TextureView برای نمایش محتوای استریم شده مثل ویدئو یا صحنه های OpenGL استفاده می شود. این View فقط در صفحاتی که از شتابدهنده سخت افزاری استفاده می کنند قابل استفاده است. کار کردن با این View نیاز به اطلاعات زیادی در برنامه نویسی دارد که امیدوارم بتوانم در فصل های بعدی مفصل به این View بپردازم.

SurfaceView

از SurfaceView هم مانند TextureView برای کشیدن گرافیک های اختصاصی که نیاز به رندر بالا دارند مثل نمایش ویدئو، پیش نمایش دوربین، بازیهای OpenGL و … استفاده می شود. کار کردن با این View نیاز به اطلاعات زیادی در برنامه نویسی دارد که امیدوارم بتوانم در فصل های بعدی مفصل به این View بپردازم.

NumberPicker

یک View ساده برای انتخاب یک عدد یا یک متن. این View متن یا اعداد را مثل یک چرخ نمایش می دهد و کاربر می تواند از میان آنها یکی را انتخاب کند:

android-ch15-10-number-picker

بعد از افزودن این View به صفحه، کد زیر به صفحه اضافه می شود:

<NumberPicker
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

محدوده اعدادی که این View نمایش می دهد باید در کد تعریف شود.

ZoomButton

عملکرد این View بسیار شبیه Button است. در اصل همان Button است با یک تصویر!

android-ch15-11-zoom-button

ZoomControls

برای وقتی که می خواهید دو دکمه zoom-in و zoom-out را در صفحه نمایش بدهیم، از این View استفاده می کنیم. این View عمل zoom-in یا zoom-out را انجام نمی دهد و برنامه نویس باید عملکرد این دو دکمه را پیاده سازی کند:

android-ch15-12-zoom-controls


Custum & Library Views

اگر در پروژه تان یا کتابخانه های وابسته به آن View های شخصی سازی شده ای وجود داشته باشد، فهرستی از آنها را اینجا خواهید دید.


با ما باشید در فصل بعد!

4 فکر می‌کنند “آموزش اندروید، فصل ۱۵: آشنایی مقدماتی با View های اندروید (بخش سوم)

  1. navidmk

    سلام دوستان من یک برنامه ساختم که سن رو محاسبه کنه یعنی از ۹ تا ادیت تکست تشکیل شده که تاریخ را وارد میکنید و تاریخ تولد را هم می زنید و سپس دکمه را میزنید و سال و ماه روز سن شمارا میگه
    حالا مشکل من این جاس که می خوام برای ماه و روز حد بگذارم تا ماه بین ۱-۱۲ بماند و روز هم بین ۱-۳۱ الان اگه ۵رو از ۹ مثلا کم کنی جواب منی میده ۴- میزنه ماه رو درصورتی که باید بگه ۸
    اگه سریع تر کمکم کنید، بسیار ممنون میشم پروژه ام هست گیر افتادم.
    ممنون

    پاسخ
  2. مهدی حقیقی

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

    پاسخ
  3. محمد آرانی

    سلام
    خیلی م.جز و مفید اطلاعات خوبی در اختیارم گذاشتید خیلی ممنون.
    اگر بتونید اکثر بخش ها رو همین طور بگید واقعا عالیه.

    پاسخ

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

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