No,it is not scrolling.

Can anybody provide me an example of drawing bitmaps to a scroll custom
view.

It is very urgent.

Please help.

Thanks
Kavitha

On Wed, Nov 10, 2010 at 6:15 AM, Paul Turchenko <[email protected]>wrote:

> View scrolls the bitmap for you.
>
> On Nov 10, 12:29 am, kavitha b <[email protected]> wrote:
> > Hi All,
> >
> > I am creating a CustomView with bigger image based on tutorial on and
> > developers forum.
> >
> > It is scolling fine.I need exact pixel coordinates of my image.I am
> getting
> > that also.
> >
> > now I want to draw some images upon scrolling image.I am able to draw
> images
> > using onDraw().But images are not getting scrolled.Any idea how to
> resolve
> > this?
> >
> > My code is
> >
> > public class LargeImageScroller extends Activity {
> >
> >     // Physical display width and height.
> >     private static int displayWidth = 0;
> >     private static int displayHeight = 0;
> >     private static Vector<Square> squares;
> >     private static Vector<Tile> tiles;
> >
> >     /** Called when the activity is first created. */
> >     @Override
> >     public void onCreate(Bundle savedInstanceState) {
> >         super.onCreate(savedInstanceState);
> >
> >         // displayWidth and displayHeight will change depending on screen
> >         // orientation. To get these dynamically, we should hook
> > onSizeChanged().
> >         // This simple example uses only landscape mode, so it's ok to
> get
> > them
> >         // once on startup and use those values throughout.
> >         Display display = ((WindowManager)
> >
> getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
> >         displayWidth = display.getWidth();
> >         displayHeight = display.getHeight();
> >
> >         squares=Util.generateBoardSquares();
> >         tiles=Util.generateTiles(this);
> >
> >         // SampleView constructor must be constructed last as it needs
> the
> >         // displayWidth and displayHeight we just got.
> >         setContentView(new SampleView(this));
> >     }
> >
> >     private static class SampleView extends View {
> >         private static Bitmap bmLargeImage; //bitmap large enough to be
> > scrolled
> >         private static Rect displayRect = null; //rect we display to
> >         private Rect scrollRect = null; //rect we scroll over our bitmap
> > with
> >         private int scrollRectX = 0; //current left location of scroll
> rect
> >         private int scrollRectY = 0; //current top location of scroll
> rect
> >         private float scrollByX = 0; //x amount to scroll by
> >         private float scrollByY = 0; //y amount to scroll by
> >         private float startX = 0; //track x from one ACTION_MOVE to the
> next
> >         private float startY = 0; //track y from one ACTION_MOVE to the
> next
> >
> >         private final int boardHeight=480-150;
> >         private static Tile movingTile=null;
> >
> >         public SampleView(Context context) {
> >             super(context);
> >
> >             // Destination rect for our main canvas draw. It never
> changes.
> >             displayRect = new Rect(0, 0, displayWidth, boardHeight);
> >             // Scroll rect: this will be used to 'scroll around' over the
> >             // bitmap in memory. Initialize as above.
> >             scrollRect = new Rect(0, 0, displayWidth, boardHeight);
> >
> >             // Load a large bitmap into an offscreen area of memory.
> >             bmLargeImage = BitmapFactory.decodeResource(getResources(),
> >                 R.drawable.woodstandardboard);
> >         }
> >
> >         @Override
> >         public boolean onTouchEvent(MotionEvent event) {
> >
> >             switch (event.getAction()) {
> >                 case MotionEvent.ACTION_DOWN:
> >                     // Remember our initial down event location.
> >                     ///validating for tile touch
> >                     int touchx=(int)event.getX();
> >                     int touchy=(int)event.getY();
> >                     for(int i=0;i<tiles.size();i++){
> >                         Tile tile=tiles.get(i);
> >                         if(tile.isTouched(touchx, touchy)){
> >                             tile.setX(touchx);
> >                             tile.setY(touchy);
> >                             movingTile=tile;
> >                             invalidate();
> >                         }
> >                     }
> >
> >                     if(movingTile != null){
> >
> >                         break;
> >                     }
> >
> >                     if((int)event.getY() > boardHeight){
> >                         break;
> >                     }
> >                     startX = event.getRawX();
> >                     startY = event.getRawY();
> >                     break;
> >
> >                 case MotionEvent.ACTION_MOVE:
> >
> >                     if(movingTile != null){
> >                         int touchedx=(int)event.getX();
> >                         int touchedy=(int)event.getY();
> >
> movingTile.setX(touchedx-Util.SQUARE_DIMENSIONS/2);
> >
> movingTile.setY(touchedy-Util.SQUARE_DIMENSIONS/2);
> >                         invalidate();
> >
> >                         break;
> >                     }
> >
> >                     if((int)event.getY() > boardHeight){
> >                         break;
> >                     }
> >
> >                     float x = event.getRawX();
> >                     float y = event.getRawY();
> >                     // Calculate move update. This will happen many times
> >                     // during the course of a single movement gesture.
> >                     scrollByX = x - startX; //move update x increment
> >                     scrollByY = y - startY; //move update y increment
> >                     startX = x; //reset initial values to latest
> >                     startY = y;
> >
> >                     invalidate(); //force a redraw
> >                     break;
> >
> >                 case MotionEvent.ACTION_UP:
> >
> >                     ///check if touch is on board
> >                     int boardx=(int)event.getX()+(int)scrollRectX;
> >                     int boardy=(int)event.getY()+(int)scrollRectY;
> >                     System.out.println(boardx);
> >
> >                     if(movingTile != null){
> >
> >                         int id=Util.checkSquareTouched(squares, boardx,
> > boardy);
> >                         System.out.println("ID OF SQUARE="+id);
> >                         if(id > 0){//valid square is touched
> >                             Square square=Util.getSquareWithID(squares,
> id);
> >                             movingTile.setX(square.getX());
> >                             movingTile.setY(square.getY());
> >                             System.out.println("ID OF
> > TILe="+movingTile.getId());
> >
> >                         }
> >
> >                         movingTile=null;
> >                         invalidate();
> >                         break;
> >                     }
> >
> >                     break;
> >             }
> >             return true; //done with this event so consume it
> >         }
> >
> >         @Override
> >         protected void onDraw(Canvas canvas) {
> >
> >             // Our move updates are calculated in ACTION_MOVE in the
> > opposite direction
> >             // from how we want to move the scroll rect. Think of this as
> > dragging to
> >             // the left being the same as sliding the scroll rect to the
> > right.
> >
> >                 int newScrollRectX = scrollRectX - (int)scrollByX;
> >                 int newScrollRectY = scrollRectY - (int)scrollByY;
> >
> >                 // Don't scroll off the left or right edges of the
> bitmap.
> >                 if (newScrollRectX < 0)
> >                     newScrollRectX = 0;
> >                 else if (newScrollRectX > (bmLargeImage.getWidth() -
> > displayWidth))
> >                     newScrollRectX = (bmLargeImage.getWidth() -
> > displayWidth);
> >
> >                 // Don't scroll off the top or bottom edges of the
> bitmap.
> >                 if (newScrollRectY < 0)
> >                     newScrollRectY = 0;
> >                 else if (newScrollRectY > (bmLargeImage.getHeight() -
> > boardHeight))
> >                     newScrollRectY = (bmLargeImage.getHeight() -
> > boardHeight);
> >
> >                 // We have our updated scroll rect coordinates, set them
> and
> > draw.
> >                 if(movingTile == null){
> >                     scrollRect.set(newScrollRectX, newScrollRectY,
> >                             newScrollRectX + displayWidth, newScrollRectY
> +
> > boardHeight);
> >                 }
> >                 Paint paint = new Paint();
> >                 canvas.drawBitmap(bmLargeImage, scrollRect, displayRect,
> > paint);
> >
> >                 // Reset current scroll coordinates to reflect the latest
> > updates,
> >                 // so we can repeat this update process.
> >                 scrollRectX = newScrollRectX;
> >                 scrollRectY = newScrollRectY;
> >
> >             //drawing tiles here
> >             for(int i=0;i<tiles.size();i++){
> >                 Tile tile=tiles.get(i);
> >             //    if( movingTile == null &&  tile.getX() > scrollRectX &&
> > tile.getY() > scrollRectY)
> >                     tile.onDraw(canvas,paint);
> >
> >             }
> >
> >         }
> >     }
> >
> > }
>
> --
> 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]<android-developers%[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 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

Reply via email to