Italian Nuova Libreria IMLibrary v 1.01

ivanomonti

Expert
Licensed User
Longtime User
Su gentile richiesta di Luca Colombo ho modificato la classe ClassMyButton, ora è possibile inserire una label dove il bottone stesso ne eredita i suoi valori di cui TextSize, TextColor, TextType.

B4X:
#Region  Project Attributes
   #ApplicationLabel: B4A Example
   #VersionCode: 1
   #VersionName:
   'SupportedOrientations possible values: unspecified, landscape or portrait.
   #SupportedOrientations: unspecified
   #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes
   #FullScreen: False
   #IncludeTitle: True
#End Region

Sub Process_Globals
   'These global variables will be declared once when the application starts.
   'These variables can be accessed from all modules.

End Sub

Sub Globals
   Dim iml As ClassMyLayout
   Dim imb As ClassMyButton
   Dim Panel1 As Panel
   Dim Panel2 As Panel
   Dim lbl As Label
   Dim Panel3 As Panel
End Sub

Sub Activity_Create(FirstTime As Boolean)
   Activity.LoadLayout("Main")
   imb.Initialize
   iml.Initialize
   iml.SettingLayoutPanel(Activity,Panel1)
   lbl.Initialize("")
   lbl.Text = "ClassMyButton"
   lbl.TextColor = Colors.White
   lbl.TextSize = 14
   lbl.Typeface = Typeface.DEFAULT_BOLD
   imb.NewButton4(Panel2,lbl.Text,"",255,50,100,110,True,1,False,lbl)
   lbl.TextSize = 34
   lbl.TextColor = Colors.ARGB(200,222,222,222)
   imb.NewButton4(Panel3,lbl.Text,"Maps.png",255,50,100,110,True,1,False,lbl)
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Se servono delle nuove modifiche o richieste basta chiedere come ha fatto Luca Colombo.
 

Attachments

  • 2013-10-08_215252.png
    82.8 KB · Views: 425
Last edited:

giannimaione

Well-Known Member
Licensed User
Longtime User
Luca 11,1-13 ... chiedete e vi sarà dato.

grande Ivano!
 

ivanomonti

Expert
Licensed User
Longtime User
Ecco ricompilata la libreria con la versione di Basic4Android 2.7xx che avevo compilato erroneamente con 3.xx
 

Attachments

  • IMLibrary 1.02.zip
    22.4 KB · Views: 358

ivanomonti

Expert
Licensed User
Longtime User
Aggiornameno libreria, nuove fnzionalità e semplicità d'uso... al più pr

B4X:
Sub Globals

   Dim imb As ClassMyButton
   Dim iml As ClassMyLayout
   Dim imi As ClassMyIntent

end sub



Sub Activity_Create(FirstTime As Boolean)

Activity.LoadLayout("Main")

iml.Initialize
imi.Initialize
imb.Initialize

iml.SettingLayoutPanel(Activity,Panel1)

lbn.Initialize("lbn")
lbn.Text ="Vinci per la vita"
lbn.TextColor = Colors.ARGB(200,255,255,255)
lbn.TextSize = 22
lbn.Typeface = Typeface.DEFAULT_BOLD
lbn.Gravity = Gravity.CENTER_HORIZONTAL
lbn.Gravity = Gravity.CENTER_VERTICAL

Dim col1, col2 As Int
col1 = Colors.ARGB(220,50,100,150)
col2 = Colors.ARGB(255,0,0,0)


imb.NewButtonRec(Panel1,lbn,"android.png",col1,col2,True,1,False)


End Sub
 

Attachments

  • 1376454_591866790877431_1351296834_n.jpg
    65.9 KB · Views: 410
Last edited:
D

Deleted member 103

Guest
Ciao Ivano,

grazie per aver messo a disposizione la tua libreria, anche se io ancora non ho usato.
Se ti posso dare un consiglio, inserisci sempre nel primo post la nuova libreria, così non c'è bisogno di cercare sempre la nuova versione.

Ciao,
Filippo
 

ivanomonti

Expert
Licensed User
Longtime User
Sarà fatto, in effetti non ho ancora capito questo forum come funziona (intendo la truttura del forum), le prossime versioni le metto in prima pagina del post.
 

ivanomonti

Expert
Licensed User
Longtime User
Trovate un nuovo aggiornamento che risolve autoscaling della picture, quindi da ora potete avere immagini anche da 1024x1024 ce si utoadattano al centro del vostro pannello qualunque sia la profondità del display 120,160,240 ppi... La libreria la trovate all'inizio del post come suggerito da Filippo.
 

Attachments

  • 1375122_592362580827852_1986930701_n.jpg
    78.2 KB · Views: 314

Antonio1

Member
Licensed User
Longtime User
Ciao Ivano

Sto cercando di utilizzare la tua libreria che reputo molto interessante; in particolar modo volevo utilizzarla per adattare il panel e il suo contenuto ( tutti i controlli in esso contenuti ) alla gradezza degli schermi di diverse dimensioni.
Ho installato la libreria e l'ide di b4a la vede regolarmente , ho copiato il codice che hai postato tu :

Sub Globals
Dim cvsMain As Canvas
Dim Panel1 As Panel
Dim Panel2 As Panel
Dim Panel3 As Panel
Dim Panel4 As Panel
Dim Panel5 As Panel
Dim Panel6 As Panel
Dim imi As ClassMyButton
Dim iml As ClassMyLayout

End Sub

Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Main")
imi.Initialize
iml.Initialize
iml.SettingLayoutPanel(Activity,Panel5)
imi.NewButton4(Panel1,"Android","mia.jpg",255,79,129,186,True,1,False)
imi.NewButton4(Panel2,"Iphone","mia.jpg",255,79,129,186,True,1,False)
imi.NewButton4(Panel3,"BlackBerry","mia.jpg",255,79,129,186,True,1,False)
imi.NewButton4(Panel4,"Voice Search","mia.jpg",255,79,129,186,True,1,False)
imi.NewButton4(Panel6,"IMLibrary 1.01","",255,79,129,186,True,2,False)
End Sub

Sub Activity_Resume
End Sub

Sub Activity_Pause (UserClosed As Boolean)
End Sub


ma in compilazione mi da:

Parsing code. 0.00
Compiling code. Error
Error compiling program.
Error description: Unknown member: newbutton4
Occurred on line: 39
imi.NewButton4(Panel1,"Android","logo_dpc.jpg",255,79,129,186,True,1,False)
Word: newbutton4


nb:uso b4a utlimo aggiornamento 3.0

dove sbaglio?

Grazie per l'aiuto
 

ivanomonti

Expert
Licensed User
Longtime User
la libreria a fatto passi avanti nel semplificare il tutto ma dovrei aggiornare il thread, perchè a furia di mettere nuove versioni ho creato confusione.

' esempio codice del nuovo button
B4X:
iml.SettingLayoutPanel(Activity,Panel1)

lbn.Initialize("lbn")
lbn.Text ="Vinci per la vita"
lbn.TextColor = Colors.ARGB(200,255,255,255)
lbn.TextSize = 22
lbn.Typeface = Typeface.DEFAULT_BOLD
lbn.Gravity = Gravity.CENTER_HORIZONTAL
lbn.Gravity = Gravity.CENTER_VERTICALDim col1, col2 AsInt


col1 = Colors.ARGB(220,50,100,150)
col2 = Colors.ARGB(255,0,0,0)

' panel, label, namefile.png, colors, colors, gradient, corner, boird
imb.NewButtonRec(Panel1,lbn,"android.png",col1,col2,True,1,False)
 

ivanomonti

Expert
Licensed User
Longtime User
Nuovo aggiornamento, Dialog04 con title dialog e animation ( metto il codice e se riesco l'esempio, ma se riuscite non fate solo copia ed incolla, studiatevi anche la classe stessa.)

B4X:
#Region  Project Attributes
    #ApplicationLabel: B4A Example
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: portrait
    #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: False
#End Region

Sub Process_Globals

End Sub

Sub Globals

    Dim imd As ClassMyDialog
    Dim iml As ClassMyLayout

    Dim lv As ListView
   
    Dim Button1 As Button
    Dim Button2 As Button
    Dim Button3 As Button
    Dim Button4 As Button
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Main")
    iml.Initialize
    iml.SettingLayout(Activity)
    imd.Initialize(Colors.ARGB(255,50,100,150),Colors.Black)
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub lv_ItemClick (Position As Int, Value As Object)
    imd.DialogClose
End Sub

Sub Button1_Click
    Dim bt As Button
    bt.Initialize("bt")
    bt.Text = "Close"
    bt.Gravity = Gravity.CENTER
    imd.Dialog01(Activity,"Dialog 1","finestra dialogo semplice",bt)
End Sub

Sub bt_Click
    imd.DialogClose
End Sub

Sub Button2_Click
    Dim bt1 As Button
    bt1.Initialize("bt")
    bt1.Text = "Close"
    bt1.Gravity = Gravity.CENTER
    Dim bt2 As Button
    bt2.Initialize("bt")
    bt2.Text = "Save"
    bt2.Gravity = Gravity.CENTER
    imd.Dialog02(Activity,"Dialog 1","finestra dialogo semplice",bt1,bt2)
End Sub

Sub Button3_Click

    lv.Initialize("lv")

    For i = 0 To 10
        lv.AddSingleLine("Line " & i)
    Next

    Dim title As Label
    title.Initialize("")
    title.Text = "New dialog"
    title.TextSize = 16
    title.TextColor = Colors.White
    title.Typeface = Typeface.DEFAULT_BOLD
    title.Gravity = Gravity.CENTER

    imd.Dialog03(Activity,lv)

End Sub


Sub Button4_Click

    lv.Initialize("lv")

    For i = 0 To 10
        lv.AddSingleLine("Line " & i)
    Next

    Dim title As Label
    title.Initialize("")
    title.Text = "New dialog"
    title.TextSize = 16
    title.TextColor = Colors.White
    title.Typeface = Typeface.DEFAULT_BOLD
    title.Gravity = Gravity.CENTER

    imd.Dialog04(Activity,lv,title)

End Sub
 

Attachments

  • DialogAnimate.zip
    507.5 KB · Views: 400
Last edited:

ivanomonti

Expert
Licensed User
Longtime User


Ciao Oramai e diventata un ossessione su gentile richiesta sono state aggiunte nuove dialog, queste sono Dialog di sistema e non pannelli, ma il risultatato e identico alle precedenti...

  • Dialog01System
  • Dialog02System
  • Dialog03System

Ecco gli esempi di come richiamare le dialog

Dialog01System

B4X:
    Dim title,Message, bt1  As String
 
    title = "test dialog system"
    Message = "Questa finestra ha un solo bottone"
    bt1 = "Close"
 
    Dim result As Int
    result = imd.Dialog01System(Activity,title,Message,bt1)
 
    If result = -1 Then
 
    Else If result = -2 Then
 
    Else
 
    End If

Dialog02System

B4X:
    Dim title,Message, bt1, bt2  As String
 
    title = "test dialog system"
    Message = "Questa finestra ha due soli bottone"
    bt1 = "Save"
    bt2 = "Close"
 
    Dim result As Int
    result = imd.Dialog02System(Activity,title,Message,bt1,bt2)
 
    If result = -1 Then
 
    Else If result = -2 Then
 
    Else
 
    End If

Dialog03System

B4X:
    lv.Initialize("lv")
 
    lv.SingleLineLayout.Label.TextSize = 16
    lv.SingleLineLayout.Label.TextColor = Colors.Green
    lv.SingleLineLayout.Label.Typeface = Typeface.DEFAULT_BOLD
 
    For i = 0 To 10
        lv.AddSingleLine("Line " & i)
    Next
 
    Dim title,bt1,bt2,bt3 As String
 
    title = "test dialog system"
    bt1 = "Save"
    bt2 = "Close"
    bt3 = ""
 
    Dim result As Int
    result = imd.Dialog03System(Activity,lv,title,bt1,bt2,bt3)
 
    If result = -1 Then
 
    Else If result = -2 Then
 
    Else
 
    End If
 

Attachments

  • IMLibrary1.02-5-11-2013.zip
    37.7 KB · Views: 339
Last edited:

Antonio1

Member
Licensed User
Longtime User
Ciao Ivano Grazie della pronta risposta
Io purtroppo solo oggi mi sono riaffacciato al forum e vedo che hai implementato ulteriormente la tua libreria.
Siccome non sono ancora riuscito farla funzionare mi potresti postare un esempio semplice dove compare un panel
con all'interno una label, un editext o comunque altro view.
Vorrei vedere come il tutto si autodiemsiona ( se non ho capito male) su schermi di diversa grandezza.
Grazie
Io seguo e faccio parte del gruppo b4Ita su FB

Ciao
 

ivanomonti

Expert
Licensed User
Longtime User
é molto semplice

1) inserisci gli oggetti come Editext, listview ecc ecc dome vuoi poi scrivi nella parte codice quanto segue

B4X:
Sub Globals
   Dim iml As ClassMyLayout
End Sub

Sub Activity_Create(FirstTime As Boolean)
   Activity.LoadLayout("Main")
   iml.Initialize
   iml.SettingLayout(Activity)
End Sub

fine, il layout si auto impagina in base allo schermo che trova, non e nulla di così difficile.
 

maxware

Well-Known Member
Licensed User
Longtime User
Ciao Ivano
piccola info / dubbio
sto testando la classmylayout con l'oggetto tabhost
preparato layout base ( 320*480 ) con un tabhost e non ho messo nulla nel design scripts
poi altri layhout con dentro una semplice test e sempre activity 320*480 e
usando la classe ho l'impressione che sistemi i due layout all'interno della tabhost ma non sistemi la tabhost
se invece metto nello scripts del pannello contenetente il tabhost TabHost1.SetLeftAndRight(0,100%X) viene ridimensionato correttmaente
ti posto lo stesso il codice del modulo
ciaooo
Mamo

Sub Globals
Dim iml As ClassMyLayout
Dim TabHost1 As TabHost
End Sub

Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("TEST")
TabHost1.AddTab("PRIMO","TEsT_1")
TabHost1.AddTab("SECONDO","TEsT_2")
iml.Initialize
iml.SettingLayout(Activity)

End Sub
 

ivanomonti

Expert
Licensed User
Longtime User
Ciao Max no il problema della view tabhost e un problema serio in quanto non puoi controllare le view child, insomma non fa da parent e pertanto non si riesce a ridimensionare nulla della tabhost e parentela questo vale per tutti le view al di fuori panel e activity che per b4a vengono considerato come form.
 

ivanomonti

Expert
Licensed User
Longtime User
Un problema di b4a e che un pannello o un elemento su di essa non ha codice click b4a prende il focus della view sottostante ... sembra un errore in realtà e un baco (per me) di b4a
 

Antonio1

Member
Licensed User
Longtime User

Ok Ivano
ho appena provato e credo di aver capito il funzionamento... (ho provato al volo la ClassMyLayout ma conto di vedere anche il resto della libreria)

Complimenti e grazie per la condivisione...
Mi sarà sicuramente Utile per alcune applicazioni in cui ero costretto ad interrogare prima l'hrdware per poi lanciare l'Activity con Layout appropriato in relazione alla grandezza dello schermo.
A proposito della ClassMyLayout / Panel non sarebbe possibile provvedere automaticamente al ridimensionamento della fonte del testo delle varie views senza la necessita di operare singolarmente su ognuna di esse :iml.LabelFontSize(Label1) ecc..?

Comunque Grazie e buon lavoro e sempre grande passione...
 

ivanomonti

Expert
Licensed User
Longtime User
Per i font non bisogna lavorare di fantasia, nel senso i valore size sempre in formato dip

fontsize = 12dip

per poi avere una sorta di ridimensionamento valido per tutti i layout va diviso per la scala esempio 160 = scala 1 quindi il 12dip rimane 12dip se si passa a 320 = scala 2 (Note2) allora il 12dip diventa 6dip, in questo modo i font rimangono sempre allineati alla stessa grandezza in base alla scala che trovano.

Spero di aver dato l'idea giusta.
 

Pisinho

Active Member
Licensed User
Longtime User
Ciao a tutti ecco la libreria che semplifica il tutto per Button, Intent, Sensor, Battery. Un nuovo modo per non scrivere o copiare codice da un progetto all'altro ;-)

Buongiorno Ivano,
essendo nuovo ho visto solo ieri questa libreria perchè cercavo qualcosa di 'pronto' per far aprire una chiamata telefonica ad un determinato numero. Ho visto però che la tua funzione chiama il 118, 113 etc... c'è il modo di passargli come parametro il numero da chiamare ?

Grazie mille.
 
Last edited:
Cookies are required to use this site. You must accept them to continue using the site. Learn more…