کاربران اندروید از انواع مختلفی از فرم فاکتورها مانند تلفنها، تبلتها، دستگاههای تاشو و کرومبوکها به برنامه شما میآیند. هنگام تعامل با برنامه شما، به خصوص در صفحه نمایشهای بزرگتر، کاربران ممکن است از نوعی دستگاه اشارهگر مانند ماوس سه دکمهای نیز استفاده کنند. برنامههای اندروید از اعمال سبکهای مختلف به نشانگر ماوس پشتیبانی میکنند تا به این کاربران کمک کنند تا یک نشانه بصری داشته باشند که میتوانند با یک شیء تعامل داشته باشند.
استفاده از نشانگرهای پیشفرض سیستم
کاربران با قراردادهای مختلف برای تعامل با انواع مختلف اشیاء در دستگاههای صفحه نمایش بزرگ آشنا هستند. اندروید برخی از رایجترین آیکونهای مکاننما را که کاربران با آنها آشنا هستند، در اختیار توسعهدهندگان قرار میدهد. میتوانید این آیکونهای مکاننمای پیشفرض سیستم را با چند خط کد اضافه کنید. بیایید نگاهی به قطعه کد کاتلین زیر بیندازیم:
myView.setOnHoverListener { view, _ -> view.pointerIcon = PointerIcon.getSystemIcon(applicationContext, PointerIcon.TYPE_HAND) false // Listener did not consume the event. }
در این مثال، myView نمایی است که تحت شرایط خاص روی یک آیکون اشارهگر تنظیم میشود. شرطی که در اینجا نشان داده شده است، حالت شناور است که زمانی رخ میدهد که نشانگر ماوس روی یک نما قرار دارد. در سناریوهای دیگر، ممکن است بخواهید در حین پردازش یک آیکون انتظار یا در یک بازی یک علامت ضربدر داشته باشید.
تابع setOnHoverListener به زمان ورود اشارهگر به حالت شناور گوش میدهد و سپس بر اساس آن رویداد عمل میکند. درون شنونده رویداد، view.pointerIcon فراخوانی میشود تا آیکون اشارهگر را برای آن نمای خاص تنظیم کند. از یک آیکون سیستمی موجود برای تنظیم آیکون اشارهگر استفاده میشود.
چندین آیکون سیستمی در اندروید وجود دارد؛ لیست کامل آنها در پایین این صفحه آمده است. از آیکون TYPE_HAND استفاده شده است که یک دست بسته با انگشت اشاره باز را نشان میدهد.
از نشانگر مخصوص خودتان استفاده کنید
// Loading a bitmap to use as a pointer icon BitmapFactory.decodeResource( this.resources, R.drawable.dollar_sign ), CURSOR_WIDTH, CURSOR_HEIGHT, false ) // Creating the pointer icon and sending clicks from the center of the mouse icon PointerIcon.create(dollarBitmap, (CURSOR_WIDTH/2).toFloat(), (CURSOR_HEIGHT/2).toFloat())
نکته: محل قرارگیری نقطه اتصال (hotspot) به مورد استفاده شما بستگی دارد. برای مثال، یک برنامه نقاشی، نقطه اتصال را روی نوک قلم یا قلممو تنظیم میکند.
مثالها
اضافه کردن آیکونهای اشارهگر به برنامهتان، راهی عالی برای کمک به کاربرانتان است تا تجربیات بصری بیشتری در مورد فرمفکتورهای مختلف دستگاههایی که استفاده میکنند، داشته باشند. آیکونهای سیستم پیشفرض بسیار خوبی در دسترس هستند و اگر آنها متناسب با نیازهای شما نیستند، همیشه میتوانید آیکونهای خودتان را بارگذاری یا ایجاد کنید.
- کشیدن و رها کردن - اگر برنامه شما از کشیدن و رها کردن از برنامه دیگر و رها کردن در برنامه شما پشتیبانی میکند، میتوانید آیکون
TYPE_NO_DROPرا پیادهسازی کنید. این یک نشانه بصری است که برنامه شما از نوع MIME که سعی در رها کردن آن در برنامه شما دارد، پشتیبانی نمیکند. - نقشهبرداری - اگر یک برنامه نقشهبرداری دارید و میخواهید به کاربران نشان دهید که میتوانند نقشه را حرکت دهند، میتوانید گزینهای داشته باشید که وقتی ماوس را روی نقشه نگه میدارید، آیکون
TYPE_GRABرا نمایش دهد. وقتی کاربر کلیک میکند، میتوانید آیکون را به یک دست که در حال گرفتن نقشه است، بهروزرسانی کنید تا نشان دهید که آنها در حال حرکت روی نقشه هستند. - ویرایش عکس - کاربران ویرایش عکس دوست دارند کنترلهایی داشته باشند که به آنها امکان انتخاب ذرهبین برای بزرگنمایی را بدهد. میتوانید هنگام انتخاب حالت بزرگنمایی، مکاننما را با نماد
TYPE_ZOOM_INبه ذرهبین تغییر دهید. - و بسیاری فرصتهای دیگر
نکته: برای دیدن تغییرات مختلف اشارهگر در عمل، این نمونه اشارهگر گیتهاب را بررسی کنید.

پیوست
مطالعه بیشتر
- نمونه اشارهگر گیتهاب
- مستندات کلاس PointerIcon در اندروید
- بهینهسازی برنامهها برای ChromeOS: مکاننماهای سفارشی
مکاننماهای پیشفرض سیستم
اینها مکاننماهایی هستند که به طور پیشفرض در سیستم اندروید موجود هستند.
| نام مکان نما | آیکون |
|---|---|
| نوع_نام مستعار | ![]() |
| نوع_همه_پیمایش | ![]() |
| نوع_فلش | ![]() |
| سلول نوع | مکاننمای سلول |
| منوی زمینه نوع | ![]() |
| نوع_کپی | ![]() |
| نوع_ضربه_زن | ![]() |
| نوع_پیشفرض | ![]() |
| نوع_گرفتن | ![]() |
| گرفتن نوع | ![]() |
| نوع_دست | ![]() |
| کمک تایپی | ![]() |
| نوع_افقی_فلش_دوگانه | ![]() |
| نوع_بدون_رها کردن | ![]() |
| نوع تهی | هیچ مکاننمایی نمایش داده نمیشود |
| نوع متن | ![]() |
| نوع_بالا_چپ_مورب_دوگانه | ![]() |
| نوع_بالا_راست_مورب_دوگانه | ![]() |
| نوع_عمودی_دوگانه_فلش | ![]() |
| نوع متن عمودی | ![]() |
| نوع_انتظار | ![]() |
| نوع_بزرگنمایی_داخل | ![]() |
| نوع_بزرگنمایی | ![]() |




















