Я пишу пасьянс. Я использую холст, чтобы нарисовать все на экране. Иногда колода карт становится больше и расширяется ниже нижней части экрана. Я хотел бы сделать холст прокручиваемым, чтобы пользователь мог получить доступ к этим картам.
основная деятельность
package com.maulinpathare.solitaire;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class Solitaire extends Activity{
/** Called when the activity is first created. */
private Context mContext;
private GameView mG;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
setContentView(R.layout.main);
}
@Override
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;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
mG = new GameView(this);
setContentView(mG);
return true;
case 2:
finish();
return true;
}
return false;
}
}//end class
GameView Class
Здесь все и происходит
Я удалил большую часть игровой логики ...
package com.maulinpathare.solitaire;
import java.util.Stack;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ScrollView;
public class GameView extends ScrollView implements OnTouchListener{
private Deck mD;
private boolean mInit, mDone;
private Stack<Card> 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) {
super(context);
//initialize everything needed for the game
}
@Override
protected void onDraw(Canvas canvas) {
mCanvas = canvas;
if(mInit){
initialize();
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());
switch(eventAction){
case MotionEvent.ACTION_DOWN:
//check if touch has happened on one of the card piles
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)
invalidate();
return true;
}//end onTouch
}
Где и как мне реализовать прокрутку экрана? Я бы хотел, чтобы пользователь мог двигать пальцем по экрану в направлении прокрутки.