B4A Library MaterialCircleProgress

Discussion in 'Additional libraries, classes and official updates' started by DonManfred, Jun 6, 2015.

  1. DonManfred

    DonManfred Expert Licensed User

    This is a wrapper for this Github project.

    MaterialCircleProgress
    Version:
    1
    • MaterialCircleProgress
      Fields:
      • ba As BA
      Methods:
      • AddToParent (Parent As ViewGroup, left As Int, top As Int, width As Int, height As Int)
      • BringToFront
      • DesignerCreateView (base As PanelWrapper, lw As LabelWrapper, props As Map)
      • Initialize (EventName As String)
      • Invalidate
      • Invalidate2 (arg0 As Rect)
      • Invalidate3 (arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int)
      • IsInitialized As Boolean
      • RemoveView
      • RequestFocus As Boolean
      • SendToBack
      • SetBackgroundImage (arg0 As Bitmap)
      • SetColorAnimated (arg0 As Int, arg1 As Int, arg2 As Int)
      • SetLayout (arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int)
      • SetLayoutAnimated (arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int, arg4 As Int)
      • SetVisibleAnimated (arg0 As Int, arg1 As Boolean)
      Properties:
      • ArrowHeight As Int
      • ArrowWidth As Int
      • BackGroundColor As Int
      • Background As Drawable
      • CircleBackgroundEnabled As Boolean
      • Color As Int [write only]
      • Colors()() As Int
      • Diameter As Int
      • Enabled As Boolean
      • Height As Int
      • InnerRadius As Int
      • Left As Int
      • Max As Int
      • Progress As Int
      • ProgressColor As Int
      • ProgressStrokeWidth As Int
      • ShadowRadius As Int
      • ShowArrow As Boolean
      • Tag As Object
      • TextColor As Int
      • TextSize As Int
      • Top As Int
      • Visible As Boolean
      • Width As Int

    [​IMG]

    Code:
    Sub Globals
        
    'These global variables will be redeclared each time the activity is created.
        'These variables can only be accessed from this module.
        Dim p1,p2,p3,p4,p5,p6 As MaterialCircleProgress
        
    Dim MaterialColors(19As Map
    End Sub

    Sub Activity_Create(FirstTime As Boolean)
        
    'Do not forget to load the layout file created with the visual designer. For example:
        'Activity.LoadLayout("Layout1")
        initMaterialColors

        p1.Initialize(
    "")
        
    Activity.AddView(p1,0,0,150dip,150dip)
        p1.Colors = 
    Array As Int(Colors.Red,Colors.Blue,Colors.Green,Colors.Yellow)
        p1.CircleBackgroundEnabled = 
    False
        p1.ProgressStrokeWidth = 
    5dip
        p1.ShowArrow = 
    True
        p1.ArrowHeight = 
    15dip
        p1.ArrowWidth = 
    25dip

        p2.Initialize(
    "")
        
    Activity.AddView(p2,200dip,0,150dip,150dip)

        
    Dim paletteIndex As Int = 0
        p2.Colors = 
    Array As Int(MaterialColors(paletteIndex).Get(50),MaterialColors(paletteIndex).Get(100),MaterialColors(paletteIndex).Get(200),MaterialColors(paletteIndex).Get(300),MaterialColors(paletteIndex).Get(400),MaterialColors(paletteIndex).Get(500),MaterialColors(paletteIndex).Get(600),MaterialColors(paletteIndex).Get(700),MaterialColors(paletteIndex).Get(800),MaterialColors(paletteIndex).Get(900))
        p2.CircleBackgroundEnabled = 
    False
        p2.ProgressStrokeWidth = 
    20dip
        p2.ShowArrow = 
    False


        p3.Initialize(
    "")
        
    Activity.AddView(p3,0,180dip,150dip,150dip)
        p3.Colors = 
    Array As Int(Colors.Red,Colors.Blue,Colors.Green,Colors.Yellow)
        p3.CircleBackgroundEnabled = 
    True
        p3.ProgressStrokeWidth = 
    10dip
        p3.ShowArrow = 
    True
        p3.ArrowHeight = 
    15dip
        p3.ArrowWidth = 
    25dip

        p4.Initialize(
    "")
        
    Activity.AddView(p4,200dip,180dip,150dip,150dip)
        p4.Colors = 
    Array As Int(Colors.Red,Colors.Blue,Colors.Green,Colors.Yellow)
        p4.CircleBackgroundEnabled = 
    True
        p4.ProgressStrokeWidth = 
    10dip
        p4.ShowArrow = 
    False
        p4.ArrowHeight = 
    15dip
        p4.ArrowWidth = 
    25dip



        p5.Initialize(
    "")
        
    Activity.AddView(p5,0,360dip,100dip,100dip)
        p5.Colors = 
    Array As Int(Colors.Red,Colors.Blue,Colors.Green,Colors.Yellow)
        p5.CircleBackgroundEnabled = 
    True
        p5.ProgressStrokeWidth = 
    10dip
        p5.ShowArrow = 
    True
        p5.ArrowHeight = 
    15dip
        p5.ArrowWidth = 
    25dip

        p6.Initialize(
    "")
        
    Activity.AddView(p6,200dip,360dip,50dip,50dip)
        p6.Colors = 
    Array As Int(Colors.Red,Colors.Blue,Colors.Green,Colors.Yellow)
        p6.CircleBackgroundEnabled = 
    True
        p6.ProgressStrokeWidth = 
    5dip
        p6.InnerRadius = 
    15dip
        p6.ShowArrow = 
    False
        p6.ArrowHeight = 
    15dip
        p6.ArrowWidth = 
    25dip
    End Sub
    This library is Donationware. You can download the library, you can test the library. But if you want to USE the library in your App you need to Donate for it.
    Please click here to donate (You can donate any amount you want to donate for the library (or my work) :)
    [​IMG]
     

    Attached Files:

    fredo, Croïd, Johan Schoeman and 9 others like this.
  2. yiankos1

    yiankos1 Active Member Licensed User

    Hello my firend, i have a question about your library, did you figure it out how to put the progress numbers inside the circle? Thanks in advance.
     
  3. DonManfred

    DonManfred Expert Licensed User

    Not really. I did not tried it actually as no one asks for it...

    Will have a look at it
     
    yiankos1 likes this.
  4. yiankos1

    yiankos1 Active Member Licensed User

    Thank you for quick answer. It would be a good point for your wrapper, if progress number was included. If you have spare time, you can add it sometime! Thank you for your time.
    p.s.1. I see many libraries at github that i wish to emb them at b4a, can you point me at right direction how to do it?(i don't care if it is hard or easy to do it)
     
  5. DonManfred

    DonManfred Expert Licensed User

    yiankos1 and lemonisdead like this.
  6. DonManfred

    DonManfred Expert Licensed User

    I´ve update the Library to V1.0.1
    - Included the Progress

    See Post #1

    [​IMG]
     
    yiankos1 and Peter Simpson like this.
  7. Croïd

    Croïd Active Member Licensed User

    Hi Don

    I want try you lib, but i've little trouble
     

    Attached Files:

    • Log.txt
      File size:
      2.4 KB
      Views:
      12
  8. DonManfred

    DonManfred Expert Licensed User

    did you copy the newest android-support-v4.jar to your additional libs folder?
     
  9. Croïd

    Croïd Active Member Licensed User

    Yes, I refresh support-v4.jar in my add-Lib, now works in my device, but always problem in log
     
    Last edited: Aug 20, 2015
  10. DonManfred

    DonManfred Expert Licensed User

    did you select an android.jar from Android 21+?
    Which android jar did you select in IDE Configure Paths?
     
  11. Croïd

    Croïd Active Member Licensed User

    I use 22, I moved manifest : android:targetSdkVersion= "14" → "22" and now it's ok . thanks
     
    DonManfred likes this.
  12. DonManfred

    DonManfred Expert Licensed User

    Thank you for this info.

    I did not thought that this may be a problem... Good to know now :)
    Great you got it work
     
  13. MarcoRome

    MarcoRome Expert Licensed User

    Hi Don Manfred.
    But xx.RemoveView dont work ?
     
  14. Croïd

    Croïd Active Member Licensed User

    I am happy to have you rendered service ;)
     
  15. Taha

    Taha Member Licensed User

    Didn't help for me
     
  16. Brian Robinson

    Brian Robinson Active Member Licensed User

    Hi All, Is it possible to not show the Progress %?
     
  17. Brian Robinson

    Brian Robinson Active Member Licensed User

    I am using this library, but I have noticed the animation (the circle with the colours that displays it is working) sometimes does not display.

    What I do is hide the progress circle off the screen, then when it is doing a task like making a web service call, I start the animation (of the circle inside the view) animate the whole view, by "sliding" the it across to the centre, then once the task is complete (or times out) it slides back off the screen and I pause the animation (of the circle inside the view).

    I have noticed that sometimes the animation of the circle showing the progress is not visible, has anyone any ideas why it might be like this?

    Cheers
    Brian
     
  18. grafsoft

    grafsoft Well-Known Member Licensed User

    When the app is working, sometimes the progress does not show. Try "doevents" in a loop or before you start the task. But, as Erel says, doevents may cause trouble. I think you have to make experiments, sorry ...
     
  19. Brian Robinson

    Brian Robinson Active Member Licensed User

    Thanks for the suggestion grafsoft. Ok, so maybe the animation of the progress isn't starting because I am then calling another animation to put the view on the screen.

    The suggestion of doevents has made me think I can use CallSubPlus to delay the call to SetLayoutAnimated to give it some time to start the progress animation by half a second, as that delay shouldn't matter. Will try this when I get home tonight.

    Cheers
    Brian
     
  20. Ardi Wirjo

    Ardi Wirjo New Member Licensed User

    Hi, I made some modification for my application using your library, perhaps you want to implement it by default :)

    I need masking like ProgressShowDialog where user maybe touch their screen before some jobs finished, so I add panel with transparent black and consume that event. Hope you will add that requirement to your library, maybe others need it :)

    example code modification
    Code:
    'Material Circle Progress customized
    Private Sub Class_Globals
        
    Private Act As Activity
        
    Private ListColor As List
        
    Private CircleSize As Int

        
    Private pnlMask As Panel
        
    Private mcp As MaterialCircleProgress
    End Sub

    'Initializes the object. You can add parameters to this method if needed.
    Public Sub Initialize(pActivity As Activity)
        Act = pActivity
        pnlMask.Initialize(
    "pnlMask")
        mcp.Initialize(
    "mcp")
        ListColor.Initialize
        CircleSize = 
    100dip

        ListColor.Add(COLORS_TZW.BLUE_ALPHA30)
        ListColor.Add(COLORS_TZW.BLUE_200)
        ListColor.Add(COLORS_TZW.BLUE)
    End Sub

    'sets Activity
    Sub setActivity(pActivity As Activity)
        Act = pActivity
    End Sub

    'sets Material Circle Progress Colors
    Sub setListColors(pListColor As List)
        ListColor = pListColor
    End Sub

    'sets Circle Size (default: 100dip)
    Sub setSize(pSize As Int)
        CircleSize = pSize
    End Sub

    Public Sub AddView
        AddPnlMask
        AddMcp
    End Sub

    Private Sub AddPnlMask
        pnlMask.Color = 
    Colors.ARGB(180000)

        Act.AddView(pnlMask, 
    00100%x100%y)
        pnlMask.BringToFront
    End Sub

    Private Sub AddMcp
        CircleSize = 
    100dip
        Act.AddView(mcp,(Act.Width-CircleSize) / 
    2,(Act.Height-CircleSize)/2,CircleSize,CircleSize)

        
    Dim arrayColor(ListColor.Size) As Int
        
    For i = 0 To ListColor.Size-1 Step 1
            arrayColor(i) = ListColor.Get(i)
        
    Next

        mcp.Colors = arrayColor
        mcp.CircleBackgroundEnabled = 
    True
        mcp.BackGroundColor = 
    Colors.White
        mcp.ShowArrow = 
    False
        mcp.TextSize = 
    9999
        mcp.Visible = 
    True
    End Sub

    Public Sub RemoveView
        pnlMask.Visible = 
    False
        mcp.Visible = 
    False
    End Sub

    'To consume click from user
    Private Sub pnlMask_Click

    End Sub
    How to use
    Code:
    Dim mcptzw As MaterialCircleProgressTZW
        mcptzw.Initialize(
    Activity)
        mcptzw.AddView 
    'to display
        .
        .
        .
        mcptzw.RemoveView 
    'to hide
    Screenshot_2016-04-10-18-14-54.jpg
     
Loading...