'Needed Libraries : Reflection
Sub Process_Globals
End Sub
Sub Globals
Dim masterpic As Bitmap
Dim button1 As Button
Dim button2 As Button
Dim picture As ImageView
Dim cnv As Canvas
End Sub
Sub Activity_Create(FirstTime As Boolean)
button1.Initialize("button1")
Activity.AddView(button1,20%x,90%y,30%x,10%y)
button1.Text="Draw"
button2.Initialize("button2")
Activity.AddView(button2,60%x,90%y,30%x,10%y)
button2.Text="Rotate"
picture.Initialize("picture")
Activity.AddView(picture,0,0,50%x,50%y)
End Sub
Sub button1_click
cnv.Initialize(picture)
For i=1 To 100
cnv.DrawLine(Rnd(0,25%x),Rnd(0,25%y),Rnd(25%x,50%x),Rnd(25%y,50%y),Colors.ARGB(255,Rnd(50,255),Rnd(50,255),Rnd(50,255)),1)
Next
End Sub
Sub button2_click
masterpic.Initialize3(picture.Bitmap)
masterpic.
rotatepicture(30)'Rotate the picture 30 degree at every step
picture.Bitmap=masterpic
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub rotatepicture( angle As Int)
Dim bb As Bitmap
Dim pwo As Int
Dim sqp As Int
Dim pho As Int
Dim recto As Rect
Dim c As Canvas
pwo = masterpic.Width
pho = masterpic.Height
'pwo=100
'pho=133
sqp = pwo 'for square imaqe
If pwo <> pho Then
'set longer side
sqp = pho
If pwo > pho Then sqp = pwo
'first RESIZE to square
bb = CreateScaledBitmap (masterpic, sqp, sqp, True)
End If
bb.InitializeMutable(sqp,sqp)
recto.Initialize(0, 0,sqp,sqp)
'ROTATE masterPic into bb
c.Initialize2(bb)
c.DrawBitmapRotated(masterpic, Null, recto, angle) 'Draw the new image
masterpic.Initialize3(bb)
'RESIZE back inverse, if pic was not square
If pwo <> pho Then
masterpic = CreateScaledBitmap (bb, pho, pwo, True)
End If
End Sub
Sub CreateScaledBitmap(Original As Bitmap, Width As Int, Height As Int, Filter As Boolean) As Bitmap
Dim rf As Reflector
Dim bm As Bitmap
bm = rf.RunStaticMethod("android.graphics.Bitmap", "createScaledBitmap", _
Array As Object(Original, Width, Height, Filter), _
Array As String("android.graphics.Bitmap", "java.lang.int", "java.lang.int", "java.lang.boolean"))
Return bm
End Sub