بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

درخواست کد : انجام کاری بعد از چند لمس پشت سرهم

مدیریت گفتگو
reza 10 سال پیش
آخرین تغییر: 10 سال پیش

مثلا بر روی Button به تعداد 7 تا 10 بار کلیک شد یک کاری رو انجام بده

نظرات

MeY3am 10 سال پیش
ایده جالبیه تا حالا بهش فکرنکردم ولی فکرکنم با استفاده از تردها بشه یعنی شما میگی بطورمثال تا 10 ثانیه onCLick باتن غیرفعال باشه بعد از 10 ثانیه دیگه بدون مشکل کلیک بشه یا اصلا یه چیز ساده تر یه ترد بزاری بعدش تا 10 ثانیه Enable باتن رو غیرفعال کنی بعد ده ثانیه دیگه فعال بشه ؛ این یکی بهتره !
reza 10 سال پیش
ممنون MeY3am جان ولی منظورم این بود بعد از 10 بار کلیک مثلا یه کار ساده ای مثل toast رو انجام بده
احمد 10 سال پیش
متغییر بگیر با هر با کلیک چکش کن و یکی اضافه کن
reza 10 سال پیش
ممنون احمد جان ولی من می خوام متغییر هایم پشت سرهم کلیک شن تو این روش فرقی نداره پشت سرهم کلیک شه یا یک ساعت بعد
احمد 10 سال پیش
از تایمر استفاده کن بعد از یه زمان مشخص صفرش کن

پاسخ‌ها 2

مشاهده پاسخ صحیح
Mohammad Vp 10 سال پیش

int click=0;
btn = (Button)findViewById(R.id.firstButton); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { click++;
if (click==عددموردنظر){
//کدی که میخوای رو بزار
} } });

نظرات

reza 10 سال پیش
ممنون Mohammad جان ولی من می خوام متغییر هایم پشت سرهم کلیک شن تو این روش فرقی نداره پشت سرهم کلیک شه یا یک ساعت بعد
Mohammad Vp 10 سال پیش
منظورت اینه اگه 10ثانیه کلیکی نشد عدد صفر شه؟
reza 10 سال پیش
یه حالتی مثل Android version را چند بار به صورت پیاپی و بسیار سریع انتخاب کنید. بازی مخفی اندروید آشکار میشه
hamidd 10 سال پیش

 پاسخ صحیح

سلام کدشو براتون نوشتم 
توی این کد شما زمان مورد نظرتونو به میلی ثانیه در maxTimeMillis و تعداد کلیک شدن رو در targetClickCount میریزین.
برای تست این کد، توی کمتر از 5 ثانیه باید 7 بار کلیک کنین.
نکته1 : هر هزار میلی ثانیه برابر با یک ثانیه ست.
نکته2 : اگه دوست داشتین به کاستوم کنترل هم می تونین تبدیل کنین که کدهای اضافه توی اکتیویتی تون نباشن

 public class MainActivity extends Activity {

    long lastClickedTimeMillis;
    long clickCount;

    final long maxTimeMillis = 5000;
    final long targetClickCount = 7;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btnTest = (Button) findViewById(R.id.btnTest);

        btnTest.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if((System.currentTimeMillis() - lastClickedTimeMillis) > maxTimeMillis / targetClickCount){
                    clickCount = 0;
                }else{
                    clickCount++;
                }
                lastClickedTimeMillis = System.currentTimeMillis();
                if(clickCount == targetClickCount - 1){
                    Toast.makeText(MainActivity.this, "button clicked " + targetClickCount + " times in less than " + maxTimeMillis + " milliseconds! :)", Toast.LENGTH_SHORT).show();
                    clickCount = 0;
                    lastClickedTimeMillis = 0;
                }
            }
        });
    }
}



نظرات

MeY3am 10 سال پیش
حمیدجون مثل همیشه کارت درسته، آفرین !
hamidd 10 سال پیش
لطف داری میثم جون .مرسی
reza 10 سال پیش
ممنون hamidd جان

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