Hello,

I'm working on a document viewer which would display all the pages of the 
document laid out vertically - allowing the user to scroll within the 
document. If the user zooms in using pinch, the pages would zoom - now the 
user would be able to scroll in all directions.

I am considering a couple of options for the implementation:

1. Implement a custom View
  - Handle scrolling in all directions by a) setting the scroll bounds 
(override the computeHorizontal/VerticalScrollRange) and b) calling the 
View's scrollBy(x, y) API to scroll in all directions.
  - Handle drawing by overriding onDraw and drawing the page content in 
this callback.

The drawback is this approach doesn't take advantage of View Layout to 
handle the pages - laid out vertically with some gaps between them. That 
would be need to be handled manually by actually drawing gaps too along 
with page content in the onDraw callback.


2. Add Views to a multi-direction scrollable View
  - Implement a custom View which allows multi-direction scrolling (similar 
to ScrollView, but allows horizontal and diagonal scrolling too)
  - Add children (representing pages) to this scrollable View.
     - How should I manage the memory taken up by these Views? Since the 
number of pages could potentially be very large and the size of each View 
could be large (after zoom), the backing Bitmap memory could be extremely 
large.


3. Similar to 2, but doesn't use a drawable View for pages
  - Use the multi-directional scrolling View as above.
  - Instead of adding Views capable of drawing to this scrollable view, use 
a non-drawing View like a RelativeLayout for each page instead. To each 
Layout, add smaller Views (could be ImageViews). Handle these manually by 
removing Views that are not visible. Since the backing Bitmaps would be 
created for the smaller ImageViews, the memory requirements should be 
manageable.


If folks have any suggestions/feedback regarding the approaches mentioned 
above, or any other solutions, that would be very helpful.

Thanks in advance.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to