moravianlibrary / androidzoomifyviewer Goto Github PK
View Code? Open in Web Editor NEWLicense: Other
License: Other
Just like ImageProperties.xml, varius errors in downloading tiles should be tested in example app.
For details see moravianlibrary/kramerius-for-android#257
Within PageViewerFragment it should be available to transit between pages by swipe gesture (if appropriate zoom).
In FullscreenSingleImageActivity, when device is flipped from portrait to landscape or vice versa, app crashes.
With both zooming (pinch, double tap) images still shiver when zooming in. The higher zoom level, the higher shivering. It concerns images that are "landscpe", i. e. width is higher than height, and very slightly portrait-type images as well.
Could be caused by rounding to pixels (int) after scaling and zooming.
Basic access authentication should be available especially for downloading tiles.
It seems like single tap in TiledImageView is not detected properly. It looks like source of this problem are very short swipes. After any swipe finishes, there's obviously no single tap detected. There should be a treshold for swipes in order to avoid this behaviour.
Tasks that animates zooming sometimes starts with significant delay. Probably because to many tasks (fetching tiles) in task pool.
Once again the layer is being computed incorrectly for some specific images. It is obvious, that last tile in each row is horizontally compressed so it's probably not tile from correct layer.
It's supposed to look like this:
And it actually looks like that:
Only imagas it affects (that I found) appear in this monography:
http://kramerius.mzk.cz/search/handle/uuid:e256d5f7-4d86-4324-90f5-4f398b9427c4
When tiles are not available for Kramerius page, page image should be obtain from datastrem IMG_FULL.
Tile group doesn't seem to be computed correctly. It didn't yet matter though, because zoomify image server used so far accepted any tile group and not just the correct one.
Example:
http://imageserver.mzk.cz/mzk03/001/054/001/2619320978/TileGroup0/1-1-0.jpg
http://imageserver.mzk.cz/mzk03/001/054/001/2619320978/TileGroup666/1-1-0.jpg
Because number of tasks in task pool is over MAX_POOL_SIZE.
Zooming in, some shifting and zooming out can create situation when image itself is "moved" so that there's unneccessary free space to the right/left/lower/upper side of the image.
Just like shifting doesn't allow this to happen, neither shoudl zooming.
Similar to #34. If TiledImageView.loadImage(protocol, baseUrl) is called before mImageView.setMetadataInitializationListener(listener), npe is thrown. If not defined, there should be definitively warning log but no exception.
java.lang.NullPointerException
at cz.mzk.tiledimageview.TiledImageView.initImageManager(TiledImageView.java:368)
at cz.mzk.tiledimageview.TiledImageView.loadImage(TiledImageView.java:336)
at cz.mzk.tiledimageview.demonstration.intro.viewMode.IntroViewmodeActivityTabFragment.initImageView(IntroViewmodeActivityTabFragment.java:108)
at cz.mzk.tiledimageview.demonstration.intro.viewMode.IntroViewmodeActivityTabFragment.onActivityCreated(IntroViewmodeActivityTabFragment.java:55)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1983)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1092)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:164)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1177)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1025)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1545)
at android.view.View.measure(View.java:15172)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399)
at android.view.View.measure(View.java:15172)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
at android.view.View.measure(View.java:15172)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
at android.view.View.measure(View.java:15172)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:15172)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
at android.view.View.measure(View.java:15172)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2148)
at android.view.View.measure(View.java:15172)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1848)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1100)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1273)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
at android.view.Choreographer.doCallbacks(Choreographer.java:555)
at android.view.Choreographer.doFrame(Choreographer.java:525)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
Implement testing (backend, app for testing) for these possible situations:
After dragging image and lifting up finger, the image should keep moving for a while with some momentum and gradually slow down.
The gesture should be rather swipe than drag.
http://developer.android.com/design/patterns/gestures.html
Mock backend should have example with http redirection (302/303/30x response code) and this example should be used in AndroidZoomifyExample app.
This is no longer necessary:
Library project needs android-support-v4.jar so that LruCache works in API < 12.
When pinch zooming in/out the tiled image slightly shakes. The faster pinch gesture is, the more picture shakes.
Apart from pinch out gesture also double tap gesture should zoom in.
In TiledImageView, before TilesDownloader is initialized, OnDoubleTapListener.onSingleTap() should be called as well.
When TilesDownloader is initialized by downloading ImageProperties.xml there's a handler class containing callback for success or multiple error situations. Similar handler should be implemented for dowloading single tile.
Also examples of such data in backend and test app.
Cache manager should have method to clean cache. This would be useful in scenarios when tiled image is being tweaked (changed on server) and tiles in cache are no longer correct. Simplest solution so far is to uninstall app or manually delete cache directories. Perhaps by parameter "reset on startup" in constructors of cache classes.
Sometimes it seems, that all tiles are available, but not drawn. When gesture is introduced, tiles are drawn right away.
java.lang.NullPointerException
at cz.mzk.tiledimageview.gestures.MyGestureListener.onSingleTapConfirmed(MyGestureListener.java:61)
at android.view.GestureDetector$GestureHandler.handleMessage(GestureDetector.java:276)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
In this case the for example EventListener.onSingleTap() crashes app.
Now view's user must do that explicitly.
V jednom z posledních dokumentů http://kramerius.mzk.cz/search/handle/uuid:44e2293b-6409-43dc-92af-f661c0369533 se mi v prohlížečce při určitémzoomu zobrazí bílé okýnko.
viz screenshot
the hot library such as glide is playing the key role in loading the images off the url and caching. Are there any chances that you can have a start using them? @rzeh4n
double tapping, pinching - both still work in areas that are not part of image (empty space)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.