2013-07-09 4 views
1

Android에서 만든 뷰에 OnTouchListener를 설정하려고했습니다. Activity를 확장하는 MainActivity 클래스와 View를 확장하는 drawView 클래스가 필요합니다.OnTouchListener를 자신이 만든 뷰로 설정하십시오.

내 주 활동은 OnTouchListener를 구현하고 drawView를 인스턴스화했습니다. 그것은 잘 동작하지만 drawView.setOnTouchListener(MainActivity.this) 효과가 없습니다. 내 drawViewOnTouchListener을 구현하고 DrawView.this.setOnTouchListener(this)을 설정하면 정상적으로 작동하지만 내 MainActivity에 있어야합니다. 내 MainActivity에서

일부 코드 :

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
WindowManager.LayoutParams.FLAG_FULLSCREEN); 
requestWindowFeature(Window.FEATURE_NO_TITLE); 
Display display = getWindowManager().getDefaultDisplay(); 
drawView = new DrawView(this); 
setContentView(R.layout.canvas); 
drawView.setOnTouchListener(this); 

일부 코드 내 canvas.xml에서 :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 
<package.DrawView android:id="@+id/drawView" android:layout_width="fill_parent"  android:layout_height="fill_parent" /> 
</LinearLayout> 

아이디어가 사람을 했습니까?

최고의 소원 파비안

답변

0

그것은 보이는 것처럼 DrawView는 뷰 계층에 삽입되지 않는 만들 수 있습니다. 아마도 당신이 원하는 것은 DrawView을 (새로운 것을 만드는 대신) 레이아웃에서 부풀려서 거기에 OnTouchListener을 설정하는 것입니다.

예를 들어,로 지난 3 개 라인을 교체 : 데 도움이

setContentView(R.layout.canvas); 
DrawView drawView = findViewById(R.id.drawView); // Look up the inflated DrawView 
drawView.setOnTouchListener(this); 

희망을!

0

나는 개발중인 게임에서 같은 문제가있었습니다.

왜 이것이 나와 함께하는지 잘 모르겠다. 하지만 동일한보기에 touchListener를 할당합니다. 나는 당신이 그렇게 DrawView 클래스에 OnTouchlistener 구현 (그리고보기를 확장) 가정

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
WindowManager.LayoutParams.FLAG_FULLSCREEN); 
requestWindowFeature(Window.FEATURE_NO_TITLE); 
Display display = getWindowManager().getDefaultDisplay(); 
drawView = new DrawView(this); 
drawView.setOnTouchListener(drawView); 
setContentView(R.layout.canvas); 

그렇게 된 setContentView 전에, 왜 다시 모르겠어요하지만 실제로 저와 함께 일의 drawView에 setOnTouchListener를 할당합니다. 도움이되기를 바랍니다.

관련 문제