2016-10-12 8 views
2

私はSurfaceViewを作成しました(あなたはそれを見ることができます)。そして私の主な活動から始めました。私はSurfaceViewのonTouchEventメソッドを上書きしました。問題はログに記録したいデータがログに記録されていないということです。メッセージが表示されません... 誰かがこの問題をどのように修正できるか考えていますか?Touchメソッドで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)); 
関連する問題