Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<pre><code>public class TouchBall extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); int w=getWindowManager().getDefaultDisplay().getWidth()-25; int h=getWindowManager().getDefaultDisplay().getHeight()-25; BallView ballView=new BallView(this,w,h); setContentView(ballView); } } public class BallView extends SurfaceView implements SurfaceHolder.Callback { private Bitmap bitmap ; private MyThread thread; private int x=20,y=20;int width,height; public BallView(Context context,int w,int h) { super(context); width=w; height=h; thread=new MyThread(getHolder(),this); getHolder().addCallback(this); setFocusable(true); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); bitmap =BitmapFactory.decodeResource(getResources(), R.drawable.ball_green); canvas.drawColor(Color.BLUE);//To make background canvas.drawBitmap(bitmap,x-(bitmap.getWidth()/2),y-(bitmap.getHeight()/2),null); } @Override public boolean onTouchEvent(MotionEvent event) { x=(int)event.getX(); y=(int)event.getY(); if(x&lt;25) x=25; if(x&gt; width) x=width; if(y &lt;25) y=25; if(y &gt; 405) y=405; return true; } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { thread.startrun(true); thread.start(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { thread.startrun(false); thread.stop(); } } </code></pre> <p>thread:</p> <pre><code>public class MyThread extends Thread { private SurfaceHolder msurfaceHolder; private BallView mballView; private boolean mrun =false; public MyThread(SurfaceHolder holder, BallView ballView) { msurfaceHolder = holder; mballView=ballView; } public void startrun(boolean run) { mrun=run; } @Override public void run() { super.run(); Canvas canvas; while (mrun) { canvas=null; try { canvas = msurfaceHolder.lockCanvas(null); synchronized (msurfaceHolder) { mballView.onDraw(canvas); } } finally { if (canvas != null) { msurfaceHolder.unlockCanvasAndPost(canvas); } } } } } </code></pre>
 

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