SurfaceView클래스 

public class SurView extends SurfaceView implements SurfaceHolder.Callback{

// cache bitmap

  Context            mContext;

     SurfaceHolder   mHolder;

     GameThread     mThread;

     //-------------------------------------

     //      생성자

     //-------------------------------------

     public SurView(Context context, AttributeSet attrs) {

          super(context, attrs);


          SurfaceHolder holder = getHolder();

          holder.addCallback(this);


          mHolder = holder;                             // 생성한 holder를 전역변수에 저장

          mContext = context;                        // 인수로 넘어 온 context를 전역변수에 저장 

          mThread = new GameThread();         // GameThread 생성

     }

     //-------------------------------------

     //   SurfaceView가 만들어질 때 호출됨

     //-------------------------------------

     public void surfaceCreated(SurfaceHolder holder) {

          mThread.start();                             // Thread 시작

     }

     //-------------------------------------

     //    SurfaceView의 크기가 바뀔 때 호출됨

     //-------------------------------------

     public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

     }

     //-------------------------------------

     //   SurfaceView가 종료될 때 호출됨

     //-------------------------------------

     public void surfaceDestroyed(SurfaceHolder holder) {

     }

 

//-------------------- 여기서 부터는 스레드 영역 ----------------------------

 

      class GameThread extends Thread {

           Bitmap imgBack=null;

   

           //-------------------------------------

           //    Thread Constructor

           //-------------------------------------

           public GameThread()  {

                Display display = ((WindowManager) mContext.getSystemService(mContext.WINDOW_SERVICE))

                                         .getDefaultDisplay();

                int width  = display.getWidth();                          // 화면의 폭

                int height = display.getHeight();                        // 화면의 높이

               URL imUrl;

try {

imUrl = new URL("http://img.gnj.kr/newsen/news_photo/2012/08/22/201208221328552210_1.jpg);

 HttpURLConnection  conn = (HttpURLConnection) imUrl.openConnection();

     conn.connect();


     InputStream is = conn.getInputStream();

     BufferedInputStream bis = new BufferedInputStream(is);

               imgBack = BitmapFactory.decodeStream(bis);

 imgBack = Bitmap.createScaledBitmap(imgBack, 100, 100, true);  

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// imgBack = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.ic_launcher);

// imgBack = Bitmap.createScaledBitmap(imgBack, 100, 100, true);  

                  // 이미지 확대

           }

 

           //-------------------------------------

           //    Thread run

           //-------------------------------------

           public void run() {

                 Canvas mCanvas = null;                                                 // canvas를 만든다

                while (true) {

                 mCanvas = mHolder.lockCanvas();                       // canvas를 잠그고 버퍼 할당

                     /* try {

                       

                         synchronized (mHolder) {                               // 동기화 유지

                                     mCanvas.drawBitmap(imgBack, 0, 0, null);    // 버퍼에 그리기

                             }

                       } finally {

                             mHolder.unlockCanvasAndPost(canvas);  */

                       if(imgBack !=null && mCanvas!=null){// canvas의 내용을 View에 전송  

                        mCanvas.drawBitmap(imgBack, 0, 0,null);

                       // mHolder.unlockCanvasAndPost(mCanvas);

                       }

                       mHolder.unlockCanvasAndPost(mCanvas);

                } // while

           } // run

         

      } // End of Thread

      

}

메인 클래스

public class MainActivity extends Activity {


    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

       

    }

}

메인xml

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent" >

  

  <com.example.sad.SurView

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"/>

    </FrameLayout>


오류 없음

안되는이유를 정말 모르겠네요.

화면은 뜨는데.. 이미지가 안떠요...

어디가 잘못됬는지 알려주세요...