Note that there are some explanatory texts on larger screens.

plurals
  1. POandroid canvas scroll
    primarykey
    data
    text
    <p>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. </p> <p>main activity</p> <pre><code>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 </code></pre> <p>GameView Class This is where everything happens I have removed most of the game logic... </p> <pre><code>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&lt;Card&gt; 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 } </code></pre> <p>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.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload