سلام خدمت همه عزیزان کدایت ، با قسمتی دیگر از مجموعه مباحث آموزش کاتلین در خدمت شما هستیم. امروز قصد دارم برای شما نحوی پیاده سازی یک Stopwatch در کاتلین یا همان ساعت کرنومتر در کاتلین را آموزش دهیم .
ساعت کرنومتر ( Stopwatch) در کاتلین چیست و چگونه پیاده سازی میشود؟
ما در طول برنامه نویسی باید کلیه مباحثی که برایمان لازم هست را باید یادبگیریم . تا در مواردی که نیاز هست از آنها استفاده کنیم . ساعت کرنومتر در کاتلین یا به اصطلاع stopwatch یکی از همین موارد میباشد . ساعت کرنومتر برای گرفتن تایم ، تا زمانی که ما تایمر را متوقف نکرده باشیم میباشد . ما امروز قصد داریم ساعت کرنومتر را با یک پروژه خیلی کوچک برای شما عزیزان یاد دهیم تا در برنامه نویسی خودتون به کار ببرید . ما در ساخت این stopwatch در کاتلین از هیچ گونه کتابخانه ای مربوط به تایمر توقف استفاده نکردیم و فقط با چند خط کد نویسی و استفاده از Handler ها این برنامه را برای شما آموزش میدهیم

پیاده سازی ساعت کرنومتر در برنامه نویسی کاتلین
ما در این پروژه از یک ویجت TextView برای نمایش تایمر و چند ویجت Button از جمله Start برای شروع تایمر ، Pause برای توقف و همچنین Reset برای شروع مجدد تایمر استفاده میکنیم . ما برای اینکه شما عزیزان راحت بفهمید سعی کردیم آموزشمان با پروژه همرا باشد . برای ساخت ساعت کرنومتر در کاتلین ایتدا یک اکتیویتی درست کنید و نام دلخواه برای آن قرار دهید . بعد در قسمت لایه XML این اکتیویتی کد های زیر را قرار دهید .
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <TextView android:id="@+id/textView" android:layout_width="209dp" android:layout_height="47dp" android:layout_gravity="center" android:layout_marginTop="50dp" android:gravity="center_horizontal|center_vertical" android:text="00:00:00" android:textSize="28sp" android:textStyle="bold" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="5dp" android:gravity="center" android:orientation="horizontal"> <Button android:id="@+id/btnStop" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="Stop" /> <Button android:id="@+id/btnReset" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_weight="1" android:text="Reset" /> <Button android:id="@+id/btnStart" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="Start" /> </LinearLayout> </LinearLayout>
بعد از قرار دادن کد های بالا حالا نوبت کدنویسی بخش Activiy میباشد . کد های این بخش به مانند زیر میباشد .
package com.example.stoptimer import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Looper import android.view.View import android.widget.Button import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.core.os.postDelayed import java.util.concurrent.TimeUnit class MainActivity : AppCompatActivity(), View.OnClickListener { lateinit var txt: TextView lateinit var btnstop: Button lateinit var btnstart: Button lateinit var btnreset: Button private val handler: Handler = Handler() var seconds: Int = 0 var running: Boolean = true override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) txt = findViewById(R.id.textView) btnstop = findViewById(R.id.btnStop) btnstart = findViewById(R.id.btnStart) btnreset = findViewById(R.id.btnReset) btnstop.setOnClickListener(this) btnstart.setOnClickListener(this) btnreset.setOnClickListener(this) startTimer() } private fun startTimer() { val handler = Handler() handler.postDelayed(UpdateSongTime, 0) } override fun onClick(v: View?) { when (v?.id) { R.id.btnStart -> { running = true } R.id.btnStop -> { running = false } R.id.btnReset -> { running = false seconds = 0 } } } private val UpdateSongTime: Runnable = object : Runnable { override fun run() { var hrs: Int = seconds / 3600 var min: Int = (seconds % 3600) / 60 var sec: Int = seconds % 60 var time = String.format("%02d : %02d : %02d", hrs, min, sec) txt.text = time if (running) { seconds++ } handler.postDelayed(this, 0) } } }
در این قسمت کدنویسی ما به پایان میرسد و به همین راحتی یک ساعت کرنومتر در کاتلین درست کردیم و میتوانیم از آن در پروژه های بزرگتر خودمون استفاده کنیم. از این که تا اینجا کنار ما بودید بسیار سپاس گذاریم .
خروجی پروژه به صورت زیر میباشد .
دیدگاهتان را بنویسید