2016-10-12 3 views
2

SurfaceView를 만들었습니다. (다음에서 볼 수 있습니다) 내 주요 활동에서 시작되었습니다. SurfaceView에서 onTouchEvent 메서드를 덮어 쓰면 문제는 Log.d로 기록한 데이터가 기록되지 않고 어떤 메시지도받지 못한다는 것입니다 ... 아무도이 문제를 해결할 수있는 아이디어가 있습니까? ?터치 방식 SurfaceView Android가 작동하지 않음

내 서피스 뷰 SurfaceView :

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Rect; 
import android.util.Log; 
import android.view.MotionEvent; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 
import android.view.View; 





public class MainGamePanel extends SurfaceView implements SurfaceHolder.Callback { 

private float top; 
private float left; 
private float bottom; 
private float right; 

private MainThread thread; 

MainGamePanel(Context context) { 
    super(context); 
    getHolder().addCallback(this); 
    thread = new MainThread(getHolder(), this); 
    setFocusable(true); 
} 


@Override 
public void surfaceCreated(SurfaceHolder holder) { 
    setWillNotDraw(false); 
    thread.setRunningMode(MainThread.RUNNING); 
    thread.start(); 
} 

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

} 

@Override 
public void surfaceDestroyed(SurfaceHolder holder) { 
    boolean retry = true; 
    while (retry) { 
     try { 
      thread.join(); 
      retry = false; 
     } catch (Exception e) { 
     } 
    } 
} 


@Override 
public boolean onTouchEvent(MotionEvent event) { 

    float x = event.getX(); 
    float y = event.getY(); 

    right = x + 30; 
    left = x - 30; 
    top = y - 30; 
    bottom = y + 30; 

    Log.d("tag", x + " " + y); 

    return true; 
} 

@Override 
protected void onDraw(Canvas canvas) { 

} 

} 

내 주요 활동 :

import android.app.Activity; 
import android.os.Bundle; 
import android.os.PersistableBundle; 



public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { 
    super.onCreate(savedInstanceState, persistentState); 
    setContentView(new MainGamePanel(getApplicationContext())); 

} 
} 

답변

0

"getApplicationContext()"을 "이"코드의 다음 부분 변경해보십시오 :

setContentView(new MainGamePanel(getApplicationContext())); 

~

setContentView(new MainGamePanel(this));