Android as a platform is very hot nowadays. Many people want to develop software for it and the base of end users is growing all the time. Probably because Android based devices are everywhere, they exist in form of smart phones, tablets and TVs.
One basic rule for an Android app is that it’s graphics shouldn’t be fixed sized, the graphics should be scaled into target Android devices resolution. In this short blog I present my skeleton Android program that scales it’s graphics into target android devices maximum resolution and as a convenience has an exit button. Application’s own exit button is one feature that I miss in many Android applications.
The code is written in Monkey X Pro, which is a great multiplatform programming language from Blitz Research Ltd.
To the code…
Import mojo Function Main() New MyApp End Class MyApp Extends App Const BG_WIDTH:Int = 800 Const BG_HEIGHT:Int = 600 Const RADIUS:Int = 100 Const ORIGIN_X:Float = (BG_WIDTH - 100) / 2.0 Const ORIGIN_Y:Float = (BG_HEIGHT - 100) / 2.0 Global touchX:Int, touchY:Int Global ovalX:Float, ovalY:Float Global scaleX:Float, scaleY:Float Global devWidth:Float, devHeight:Float Global angle:Float = 0 Method OnCreate() devWidth = DeviceWidth() devHeight = DeviceHeight() scaleX = devWidth / BG_WIDTH scaleY = devHeight / BG_HEIGHT SetUpdateRate(60) End Method OnUpdate() ' Is exit button touched? If TouchHit() > 0 Then touchX = TouchX() touchY = TouchY() If touchX >= (BG_WIDTH - 50) * scaleX And touchX <= (BG_WIDTH - 25) * scaleX And touchY >= 25 * scaleY And touchY <= (25 + 25) * scaleY Then ExitApp() Endif angle = angle + 1 ovalX = ORIGIN_X + Cos(angle) * RADIUS ovalY = ORIGIN_Y + Sin(angle) * RADIUS End Method OnRender() ' Scale the graphics PushMatrix() Scale (scaleX,scaleY) SetColor 255,255,0 ' Here could be bg image ' drawn with DrawImage DrawRect 0,0,BG_WIDTH,BG_HEIGHT ' Circle SetColor 0,0,255 DrawOval ovalX,ovalY,20,20 ' "Exit button" SetColor 255,0,0 DrawRect BG_WIDTH - 50, 25, 25, 25 PopMatrix() End Function ExitApp:Void() Error "" ' Exit without error End End Class
The program draws fullscreen yellow background, an exit button and a ball that moves around the screen.
Compiled to desktop
The scaling is made by pushing current drawing matrix to internal matrix stack and then scaling it by the screen ratio.
With free Monkey X you can compile to desktop and HTML5 and it comes with MinGW that is also needed in Monkey X Pro.