آموزش برنامه نویسی اندروید (بخش چهل و چهارم: کار با OnLongClick در اندروید)

استاندارد

با ClickListener در بخش های ابتدایی آشنا شدیم. نحوه کار با آن با Button ها را در جلسه یازدهم آموختیم.

کار ClickListener اینست که قابلیتی به ابزارها مثلا دکمه Button می دهد که همواره به کلیک کردن کاربر گوش کنند.

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

سپس کدهای مربوط به آن رویداد اجرا شده تا فعالیت های مورد نظری که می خواهیم انجام شوند.

در این بخش می خواهیم در مورد OnLongClickListener صحبت کنیم.

ولی OnLongClickListener چیست؟

با دقت به کلمه Long می توان حدس هایی زد. در واقع در این جا باید دکمه و یا به طور کلی ابزار ما که با OnLongClickListener تعریف شده است، را برای مدتی نگه (Hold) داشت تا رویداد مورد نظر فعال شود.

پس فقط با یک بار زدن بر روی آن ابزار، اتفاق خاصی نمیوفتد.

در ادامه با ما همراه باشید تا نحوه کار با OnLongClick را با استفاده از پروژه ای بیاموزید.

من یک پروژه به نام OnLongClick-GSM ایجاد می کنم.

سپس به قسمت لایه اپلیکیشن (activity_main.xml) و ابزار اندروید استودیو (Palette) می روم. و یک Button بر روی لایه اضافه می کنم.

در مرحله بعد به قسمت کد جاوای برنامه (MainActivity) می روم تا کدهای مورد نظر را بنویسم.

دقت داشته باشید که این مرحله بسیار شبیه به همان ClickListener معمولی ست.

در داخل متد ()onCreate ابتدا دکمه ی Button را که در لایه اپلیکیشن اضافه کرده بودم را در قسمت جاوا نیز تعریف می کنم.

Button BTN = (Button) findViewById(R.id.button);

حال رویدادی به صورت OnLongClickListener برای دکمه Button تعریف می کنم.

BTN.setOnLongClickListener(new Button.OnLongClickListener(){

// کدهای این رویداد
   });

می توانیم برای تست عملکرد OnLongClickListener کدهای زیر را در داخل این رویداد بنویسیم:

@Override
            public boolean onLongClick(View arg0) {
                Toast.makeText(MainActivity.this, "کلیک انجام شد", Toast.LENGTH_SHORT).show();
                return false;
            }

کل کدهای که در متد ()onCreate ایجاد کردیم را می توانید در زیر مشاهده کنید :

Button BTN = (Button) findViewById(R.id.button);
        BTN.setOnLongClickListener(new Button.OnLongClickListener(){

            @Override
            public boolean onLongClick(View arg0) {
                Toast.makeText(MainActivity.this, "کلیک انجام شد", Toast.LENGTH_SHORT).show();
                return false;
            }

        });

کد کلاس MainActivity.java به همراه کلاس ها و کتابخانه های import شده:

package com.gsm_developers.onlongclick_gsm;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

        Button BTN = (Button) findViewById(R.id.button);
        BTN.setOnLongClickListener(new Button.OnLongClickListener(){

            @Override
            public boolean onLongClick(View arg0) {
                Toast.makeText(MainActivity.this, "کلیک انجام شد", Toast.LENGTH_SHORT).show();
                return false;
            }

        });
    }
}

کار تمام است.

این اپلیکیشن را اجرا می کنیم.

هنگامی که اپلیکیشن اجرا می شود، اگر بر روی Button کلیک کنیم اتفاقی نمی افتد. ولی اگر به مدت دو ثانیه Button را نگه داریم، خروجی زیر را در این اپلیکیشن مشاهده می کنید: