2011-12-20 30 views

答えて

2
public class GetmouseActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(new Panel(this)); 
} 

public class Panel extends SurfaceView implements SurfaceHolder.Callback { 

    private Bitmap mBitmap; 
    private ViewThread mThread; 

    private int mX; 
    private int mY; 

    public Panel(Context context) { 
     super(context); 
     mBitmap = BitmapFactory.decodeResource(getResources(), 
       R.drawable.icon); 
     getHolder().addCallback(this); 
     mThread = new ViewThread(this); 
    } 

    public void doDraw(Canvas canvas) { 
     canvas.drawColor(Color.BLACK); 
     Paint paint = new Paint(); 
     paint.setStrokeWidth(25); 
     for (int y = 30, alpha = 255; alpha > 2; alpha >>= 1, y += 10) { 
      paint.setAlpha(alpha); 

      canvas.drawLine(0, y, 100, y, paint); 
     } 

     canvas.drawBitmap(mBitmap, mX, mY, null); 
    } 

    public void surfaceChanged(SurfaceHolder holder, int format, int width, 
      int height) { 
     // TODO Auto-generated method stub 
    } 

    public void surfaceCreated(SurfaceHolder holder) { 
     if (!mThread.isAlive()) { 
      mThread = new ViewThread(this); 
      mThread.setRunning(true); 
      mThread.start(); 
     } 
    } 

    public void surfaceDestroyed(SurfaceHolder holder) { 
     if (mThread.isAlive()) { 
      mThread.setRunning(false); 
     } 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     mX = (int) event.getX() - mBitmap.getWidth()/2; 
     mY = (int) event.getY() - mBitmap.getHeight()/2; 
     return super.onTouchEvent(event); 
    } 
} 

public class ViewThread extends Thread { 
    private Panel mPanel; 
    private SurfaceHolder mHolder; 
    private boolean mRun = false; 

    public ViewThread(Panel panel) { 
     mPanel = panel; 
     mHolder = mPanel.getHolder(); 
    } 

    public void setRunning(boolean run) { 
     mRun = run; 
    } 

    @Override 
    public void run() { 
     Canvas canvas = null; 
     while (mRun) { 
      canvas = mHolder.lockCanvas(); 
      if (canvas != null) { 
       mPanel.doDraw(canvas); 
       mHolder.unlockCanvasAndPost(canvas); 
      } 
     } 
    } 
} 
    } 

この

を試してみてください
関連する問題