Canvas scroll


I am writing a solitaire app. I use a canvas to draw everything on the
screen. Sometimes a pile of cards will get big and extend below the
bottom of the screen. I would like to make the canvas scrollable so
the user can access those cards.

Main Activity.

package com.maulinpathare.solitaire;

public class Solitaire extends Activity{
/** Called when the activity is first created. */
private Context mContext;
private GameView mG;

public void onCreate(Bundle savedInstanceState) {
    mContext = this;

public boolean onCreateOptionsMenu(Menu menu) {
    boolean result = super.onCreateOptionsMenu(menu);
    menu.add(0, 1, 0, R.string.newGame);
    menu.add(0, 2, 0, R.string.exitGame);
    return result;

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case 1:
      mG = new GameView(this);
        return true;
    case 2:
        return true;
    return false;

}//end class

GameView Class
This is where everything happens
I have removed most of the game logic…

package com.maulinpathare.solitaire;

public class GameView extends ScrollView implements OnTouchListener{
private Deck mD;
private boolean mInit, mDone;
private Stack mPile1, mPile2, mPile3, mPile4, mPile5,
mPile6, mPile7,
mOpenPile, mEndPile1, mEndPile2,
mEndPile3, mEndPile4, mTemp;
private Canvas mCanvas;
private int mPile;
private boolean mPickUp, mVictory;
private Card mCard;
private final int mSpacing = 22;
private Paint rectPaint, wonPaint1, wonPaint2;

 public GameView(Context context) {
                //initialize everything needed for the game

protected void onDraw(Canvas canvas) {
 mCanvas = canvas;
      mInit = false;
    //draw stuff...

}//end onDraw

public boolean onTouch(View v, MotionEvent event){
 int eventAction = event.getAction();
 int x = Math.round(event.getX());
 int y = Math.round(event.getY());

 case MotionEvent.ACTION_DOWN:
                //check if touch has happened on one of the card

break; //end case action_touch

 case MotionEvent.ACTION_MOVE:
                //if card touched move it
      break; //end case action_move

 case MotionEvent.ACTION_UP:
                //check if legal move has been made
      break; //end case action_up

 }//end switch(event)

 return true;
}//end onTouch


Where and how should I implement screen scrolling? I would like the
user to be able to slide their finger across the screen in the
direction they want to scroll.