B4A Library B4APhotoPager v3.85

Creaky

Member
Licensed User
Longtime User
Hi All,

There are several mentions of a demo app in this thread, yet the OP doesn't contain one, just the libs. Where can I find a sample app for this library?
 

Creaky

Member
Licensed User
Longtime User
Hi Shahid,

Thanks for the link, but I'm actually looking for example code. I've tried to make very simple app but it keeps crashing when I initialize the Photopager. So I'm in need of example code to see what I'm doing wrong.
 

Creaky

Member
Licensed User
Longtime User
Whatever I do, my app crashes with an outofmemory error as soon as I initialise the PhotoPager object.
 

Creaky

Member
Licensed User
Longtime User
Shahid, I found your example, but it doesn't contain the layout files, so I can't get it to work.
The error I get when I initialise the object on a Galaxy S6 is:

java.lang.OutOfMemoryError: OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stack available

This is my code:

#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
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim objPager As PhotoPager
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")
objPager.Initialize("pg")
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub
 

Shahid Saeed

Active Member
Licensed User
Longtime User

I have attached a working example for an older version of PhotoPager. I hope it may help you
 

Attachments

  • B4APhotoPager v1.30.zip
    508.2 KB · Views: 320

Creaky

Member
Licensed User
Longtime User
Please help. I'm trying to use the B4APhotoPager library in an app for a customer. While the 1.3 example code/app works fine, the library crashes when I incorporate it in my app. I've simply copy/pasted the 1.3 example code in a new activity module in my project and I start the activity by clicking a button in my app.

As soon as the activity tries to initialize the vp object, the app crashes with this line in the Logs:

java.lang.OutOfMemoryError: OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stack available

If I compile and run the 1.3 example on the same device it works just fine.

My deadline is very near and I really need this library to work, someone please lend me a hand!

Here is my code:
B4X:
#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: False
#End Region

Sub Process_Globals

End Sub

Sub Globals

    Dim vp As PhotoPager
    Dim fromWeb() As String
   
End Sub

Sub Activity_Create(FirstTime As Boolean)

    Activity.AddMenuItem("Show From SdCard","a")
    Activity.AddMenuItem("Show From MediaStore","b")
    Activity.AddMenuItem("Show From Assets","c")
    Activity.AddMenuItem("Show Media From Web","d")
    Activity.AddMenuItem("Clear Memory Cache","f")
    Activity.AddMenuItem("Clear Disk Cache","g")
    Activity.AddMenuItem("Exit","exit")
    vp.Initialize("vp")
    Activity.AddView(vp, 0, 0, 100%x, 100%y)
   
'    vp.ScaleType = vp.ScaleType.Center_Inside
    vp.FadeEnabled = True
    vp.ScaleType = vp.ScaleType.Center_Crop
'    vp.PagingEnabled = True
    vp.OutlineEnabled = True
    vp.OutlineColor = Colors.Black
    vp.Effect = vp.Effect.Standard '.CubeOut
'    vp.DoubleTapEnabled = False
'    vp.ScaleEnabled = False
'    vp.ScrollEnabled = False
'    vp.CacheInMemory = True
    vp.CacheOnDisk = True
    vp.ProgressBarVisible = True
   
'    vp.CompressQuality = 80
'    vp.CompressFormat = vp.CompressFormat.Compress_Format_JPG
'    vp.ToggleRotation = True

loadweb
d_Click
End Sub

Sub loadweb
fromWeb = Array As String( _
            "https://lh4.googleusercontent.com/-Z4zGiC5nWdc/URqvBdEwivI/AAAAAAAAAbs/ZRZR1VJ84QA/s1024/Sin%252520Lights.jpg", _
            "https://lh4.googleusercontent.com/-_0cYiWW8ccY/URqvBz3iM4I/AAAAAAAAAbs/9N_Wq8MhLTY/s1024/Starry%252520Lake.jpg", _
            "https://lh3.googleusercontent.com/-A9LMoRyuQUA/URqvCYx_JoI/AAAAAAAAAbs/s7sde1Bz9cI/s1024/Starry%252520Night.jpg", _
            "https://lh3.googleusercontent.com/-KtLJ3k858eY/URqvC_2h_bI/AAAAAAAAAbs/zzEBImwDA_g/s1024/Stream.jpg", _
            "https://lh5.googleusercontent.com/-dFB7Lad6RcA/URqvDUftwWI/AAAAAAAAAbs/BrhoUtXTN7o/s1024/Strip%252520Sunset.jpg", _
            "https://lh5.googleusercontent.com/-at6apgFiN20/URqvDyffUZI/AAAAAAAAAbs/clABCx171bE/s1024/Sunset%252520Hills.jpg", _
            "https://lh4.googleusercontent.com/-7-EHhtQthII/URqvEYTk4vI/AAAAAAAAAbs/QSJZoB3YjVg/s1024/Tenaya%252520Lake%2525202.jpg", _
            "https://lh6.googleusercontent.com/-8MrjV_a-Pok/URqvFC5repI/AAAAAAAAAbs/9inKTg9fbCE/s1024/Tenaya%252520Lake.jpg", _
            "https://lh5.googleusercontent.com/-B1HW-z4zwao/URqvFWYRwUI/AAAAAAAAAbs/8Peli53Bs8I/s1024/The%252520Cave%252520BW.jpg", _
            "https://lh3.googleusercontent.com/-PO4E-xZKAnQ/URqvGRqjYkI/AAAAAAAAAbs/42nyADFsXag/s1024/The%252520Fisherman.jpg", _
            "https://lh4.googleusercontent.com/-iLyZlzfdy7s/URqvG0YScdI/AAAAAAAAAbs/1J9eDKmkXtk/s1024/The%252520Night%252520is%252520Coming.jpg", _
            "https://lh6.googleusercontent.com/-G-k7YkkUco0/URqvHhah6fI/AAAAAAAAAbs/_taQQG7t0vo/s1024/The%252520Road.jpg", _
            "https://lh6.googleusercontent.com/-h-ALJt7kSus/URqvIThqYfI/AAAAAAAAAbs/ejiv35olWS8/s1024/Tokyo%252520Heights.jpg", _
            "https://lh5.googleusercontent.com/-Hy9k-TbS7xg/URqvIjQMOxI/AAAAAAAAAbs/RSpmmOATSkg/s1024/Tokyo%252520Highway.jpg", _
            "https://lh6.googleusercontent.com/-83oOvMb4OZs/URqvJL0T7lI/AAAAAAAAAbs/c5TECZ6RONM/s1024/Tokyo%252520Smog.jpg", _
            "https://lh3.googleusercontent.com/-FB-jfgREEfI/URqvJI3EXAI/AAAAAAAAAbs/XfyweiRF4v8/s1024/Tufa%252520at%252520Night.jpg", _
            "https://lh4.googleusercontent.com/-vngKD5Z1U8w/URqvJUCEgPI/AAAAAAAAAbs/ulxCMVcU6EU/s1024/Valley%252520Sunset.jpg", _
            "https://lh6.googleusercontent.com/-DOz5I2E2oMQ/URqvKMND1kI/AAAAAAAAAbs/Iqf0IsInleo/s1024/Windmill%252520Sunrise.jpg", _
            "https://lh5.googleusercontent.com/-biyiyWcJ9MU/URqvKculiAI/AAAAAAAAAbs/jyPsCplJOpE/s1024/Windmill.jpg", _
            "https://lh4.googleusercontent.com/-PDT167_xRdA/URqvK36mLcI/AAAAAAAAAbs/oi2ik9QseMI/s1024/Windmills.jpg", _
            "https://lh5.googleusercontent.com/-kI_QdYx7VlU/URqvLXCB6gI/AAAAAAAAAbs/N31vlZ6u89o/s1024/Yet%252520Another%252520Rockaway%252520Sunset.jpg", _
            "https://lh4.googleusercontent.com/-e9NHZ5k5MSs/URqvMIBZjtI/AAAAAAAAAbs/1fV810rDNfQ/s1024/Yosemite%252520Tree.jpg")
End Sub

Sub a_Click

    vp.ShowFromSdCard(File.DirRootExternal, "Images2",False)

End Sub

Sub b_Click

    vp.ShowFromMediaStore(False)

End Sub

Sub c_Click
   
    vp.ShowFromAssets("Images",False)  'or  vp.ShowFromAssets("Image/",false)
   
End Sub

Sub d_Click
   
    vp.ShowFromWeb(fromWeb,False)
    vp.GoToPage(Main.intCurrentAlbumPhoto,False)
End Sub

Sub f_Click

    vp.ClearMemoryCache
   
End Sub

Sub g_Click

    vp.ClearDiskCache
   
End Sub

Sub vp_PageSelected(Position As Int)

    Activity.Title  = "Current Item = " & Position
   
End Sub

Sub vp_PageScrollStateChanged(State As Int)
    ' here some event
End Sub

Sub vp_PageScrolled(Position As Int, PositionOffset As Float, PositionOffsetPixels As Int)
    ' here some event
End Sub

Sub vp_LongClick
    vp.DestroyEngine
    ExitApplication
End Sub

Sub exit_Click
    vp.DestroyEngine
    ExitApplication
   
End Sub

Sub Activity_Resume
End Sub
Sub Activity_Pause(UserClosed As Boolean)
End Sub
 
Last edited:

Creaky

Member
Licensed User
Longtime User
I think I just found out what the problem was.
The three images (empty_photo.png, ic_error.png, icon.png) in the files dir of the example project ARE REQUIRED by the B4APhotoPager library!
If they are not present you will receive the OutOfMemoryError error.

Giuseppe please mention these files in your documentation
 
Last edited:

lonleystar

Well-Known Member
Licensed User
Longtime User


Hi, really U dont need The three images (empty_photo.png, ic_error.png, icon.png) but U've to use your own images by ( SetImageForEmptyUri and SetImageOnFail )

Example:

PhotoPager.SetImageForEmptyUri(YourImage.png)

PhotoPager.SetImageOnFail(YourImage.png)

Let me know.
 

itgirl

Active Member
Licensed User
Longtime User
Hello guys ive tried this amazing lib nice work except i found a problem while you pinch the image 3 or 4 time [Hold fingers]

B4X:
LogCat connected to: 4d009d040c4430ef
--------- beginning of main
vp scrolled
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
    at android.support.v4.widget.ViewDragHelper.shouldInterceptTouchEvent(ViewDragHelper.java:1014)
    at android.support.v4.widget.DrawerLayout.onInterceptTouchEvent(DrawerLayout.java:1282)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2310)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2425)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2425)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2425)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2425)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2425)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2568)
    at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1776)
    at android.app.Activity.dispatchTouchEvent(Activity.java:2866)
    at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
    at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2529)
    at android.view.View.dispatchPointerEvent(View.java:9173)
    at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4706)
    at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4544)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4121)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4087)
    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4201)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4095)
    at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4258)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4121)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4087)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4095)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
    at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6564)
    at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6454)
    at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6425)
    at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6654)
    at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
    at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
    at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:176)
    at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:6625)
    at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:6677)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
    at android.view.Choreographer.doCallbacks(Choreographer.java:590)
    at android.view.Choreographer.doFrame(Choreographer.java:558)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:145)
    at android.app.ActivityThread.main(ActivityThread.java:5942)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$Me
Message longer than Log limit (4000). Message was truncated.
** Activity (main) Create, isFirst = true **
 

lonleystar

Well-Known Member
Licensed User
Longtime User


Hi, just now I tried the library I pinch the image 3,4 time and Hold also the fingers, I dont see any problem it work well.
 

itgirl

Active Member
Licensed User
Longtime User
Hi, just now I tried the library I pinch the image 3,4 time and Hold also the fingers, I dont see any problem it work well.
im not 100% sure how to reproduce the error but try to to pinch 3-4 time slowly it happen , i run android 5... by the way thank you for this amazing work and thank you for your quick response.
 
Last edited:

lonleystar

Well-Known Member
Licensed User
Longtime User
More info about this bug can be found https://github.com/chrisbanes/PhotoView/issues/72
theres is a simple solution or workaround for the meanwhile by simply try and catch
onInterceptTouchEvent
could you please update the library with this fix ?

Hi, as I said to Laurent and Susu, I had problems with the shop where I bought the computer. He sold me a computer with used motherboard and faulty.
When I went to talk to him about motherboard , he told me that I had no more warranty and I went to a lawyer to reclaim my motherboard and 2 new SSD were burnt about motherboard .

I'm already working to fix the libraries because I lost part of them was on the ssd.

Thank you for the tip I'll put it in to the library.
 

itgirl

Active Member
Licensed User
Longtime User
Ohh im sorry to hear that... i know what it feels :/ Sorry hope to get ur Motherboard back
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…