이미지 이동시키는 프로그램을 만드는 중인데요~
쓰레드를 이용해요.
아래는 제가 구현한 코드입니다.
에러도 없고 애뮬레이터도 돌아가는데 이동안하고 이미지가 그대로 있네요 ㅠㅠ


package com.swu.android;


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.SurfaceHolder.Callback;
import android.widget.FrameLayout;
import android.widget.Toast;

public class AnimateView1 extends SurfaceView implements Callback {
 //**********************************tnwjd
 private int x=10;
 private int y=10;
 ImageThread thread;

 public AnimateView1(Context context, AttributeSet attrs) {
  super(context, attrs);
  // TODO Auto-generated constructor stub
  SurfaceHolder holder=getHolder();
  holder.addCallback(this);
  thread=new ImageThread(holder, context);
  
 }
 
 class ImageThread extends Thread{
  
  private int mWidth;
  private int mHeight;
  private int mImgWidth;
  private int mImgHeight;
  
  private Boolean mDirectionX=true;
  private Boolean mDirectionY=true;
  private SurfaceHolder mSurfaceHolder;
  private Drawable mSwu[]=new Drawable[1];

  
  public ImageThread(SurfaceHolder surfaceHolder, Context context){
   mSurfaceHolder = surfaceHolder;
   mSwu[0]=context.getResources().getDrawable(R.drawable.swu4);
   mImgWidth=mSwu[0].getIntrinsicWidth();
   mImgHeight=mSwu[0].getIntrinsicHeight();
   
   
  
   
  }
  
  @Override
  public void run() {
   // TODO Auto-generated method stub
   mWidth=getWidth();
   mHeight=getHeight();
   
   super.run();
   
   while(true){
    Canvas c=null;
    try{
     c=mSurfaceHolder.lockCanvas(null);
     synchronized (mSurfaceHolder) {
      
      doDraw(c);
      sleep(10);
     }
    }catch(Exception e){
     e.printStackTrace();
    }finally{
     if(c!=null){
      mSurfaceHolder.unlockCanvasAndPost(c);
     }
    }
   }
  }
  private void doDraw(Canvas canvas){
   canvas.drawColor(Color.BLACK);
   
   if(x>=0 && x+mImgWidth<=mWidth && y>=0 && y+mImgHeight<=mHeight){
    if(x+mImgWidth==mWidth)
     mDirectionX=false;
    if(x==0)
     mDirectionX=false;
    if(y==0)
     mDirectionY=false;
    if(y+mImgHeight==mHeight)
     mDirectionY=false;
    
    if(mDirectionX=true||mDirectionY==true)
     {mSwu[0].setBounds(x,y,x+mImgWidth,y+mImgHeight);
    
    mSwu[0].draw(canvas);}
    
   }
  }

 }
 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  // TODO Auto-generated method stub
  if((event.getAction()==KeyEvent.ACTION_DOWN)&&
    (keyCode==KeyEvent.KEYCODE_DPAD_RIGHT)){
     x+=5;
     //return true;
  }else if((event.getAction()==KeyEvent.ACTION_DOWN)&&
    (keyCode==KeyEvent.KEYCODE_DPAD_LEFT)){
     x-=5;
    // return true;
  }else if((event.getAction()==KeyEvent.ACTION_DOWN)&&
    (keyCode==KeyEvent.KEYCODE_DPAD_UP)){
     y-=5;
     //return true;
  }else if((event.getAction()==KeyEvent.ACTION_DOWN)&&
    (keyCode==KeyEvent.KEYCODE_DPAD_DOWN)){
     y+=5;
     //return true;
  }
  
  return super.onKeyDown(keyCode, event);
 }
 @Override
 public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
  // TODO Auto-generated method stub

 }

 @Override
 public void surfaceCreated(SurfaceHolder holder) {
  // TODO Auto-generated method stub
  thread.start();
 }

 @Override
 public void surfaceDestroyed(SurfaceHolder holder) {
  // TODO Auto-generated method stub

 }
 

}

무엇이 잘못되었을까여