mirror of
https://github.com/zhigang1992/RubyMotion.git
synced 2026-03-29 00:48:07 +08:00
63 lines
1.3 KiB
Ruby
63 lines
1.3 KiB
Ruby
class TimerButtonListener
|
|
attr_accessor :activity
|
|
|
|
def onClick(view)
|
|
@activity.toggleTimer
|
|
end
|
|
end
|
|
|
|
class TimerTask < Java::Util::TimerTask
|
|
attr_accessor :activity
|
|
|
|
def run
|
|
@activity.handler.post -> { @activity.updateTimer }
|
|
end
|
|
end
|
|
|
|
class MainActivity < Android::App::Activity
|
|
attr_reader :handler
|
|
|
|
def onCreate(savedInstanceState)
|
|
super
|
|
@handler = Android::Os::Handler.new
|
|
|
|
layout = Android::Widget::LinearLayout.new(self)
|
|
layout.orientation = Android::Widget::LinearLayout::VERTICAL
|
|
|
|
@label = Android::Widget::TextView.new(self)
|
|
@label.text = 'Tap to start'
|
|
@label.textSize = 80.0
|
|
@label.gravity = Android::View::Gravity::CENTER_HORIZONTAL
|
|
layout.addView(@label)
|
|
|
|
@button = Android::Widget::Button.new(self)
|
|
@button.text = 'Start'
|
|
listener = TimerButtonListener.new
|
|
listener.activity = self
|
|
@button.onClickListener = listener
|
|
layout.addView(@button)
|
|
|
|
self.contentView = layout
|
|
end
|
|
|
|
def toggleTimer
|
|
if @timer
|
|
@timer.cancel
|
|
@timer = nil
|
|
@button.text = 'Start'
|
|
else
|
|
@timer = Java::Util::Timer.new
|
|
@counter = 0
|
|
task = TimerTask.new
|
|
task.activity = self
|
|
@timer.schedule task , 0, 100
|
|
@button.text = 'Stop'
|
|
end
|
|
end
|
|
|
|
def updateTimer
|
|
@label.text = "%.1f" % (@counter += 0.1)
|
|
end
|
|
end
|
|
|