2014-05-19 2 views
-1

내 목표는 사용자가 화면의 아무 곳이나 터치하고 터치 좌표가 화면의 텍스트보기에 나타나게하는 것입니다.화면에 터치 좌표 표시

이것은 내가 지금까지 가지고있는 것입니다.

activity_main.xml

:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <TextView 
     android:id="@+id/touchView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="To be filled" /> 

</LinearLayout> 

Main Activity.java :

package com.example.myfirstapp; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    public final static String EXTRA_MESSAGE = "com.example.MyFirstApp.MESSAGE"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final TextView textView = (TextView)findViewById(R.id.textView1); 
     // this is the view on which you will listen for touch events 
     final View touchView = findViewById(R.id.touchView); 
     touchView.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       textView.setText("Touch coordinates : " + 
        String.valueOf(event.getX()) + "x" + String.valueOf(event.getY())); 
        return true; 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

내 첫 번째 문제 해결은 MainActivity.java에 코드 setContentView(R.layout.main);에서, 라인 (18)에 오류가 있다는 것입니다. 온라인 조사 중이 오류를 해결하는 방법은 import android.R;import your.application.packagename.R;으로 변경하는 것입니다. 그러나 내 .java 파일에 import android.R;이 없습니다. 누구든지이 오류를 수정하는 방법을 알고 있습니까?

EDIT 두 번째로 텍스트 뷰는 첫 번째 텍스트 뷰를 클릭 할 때 터치 좌표 만 표시하고 터치 포인트의 터치 좌표는 화면의 아무 곳에 나 표시하지 않습니다 (터치 포인트의 터치 좌표 만이 첫 번째 텍스트보기). 화면의 아무 곳이나 터치 좌표가 표시되도록하려면 어떻게 변경합니까?

내가 두 번째 문제는 내가 android:id="@+id/touchLayout"로 같은 id,했다 LinearLayout을주고 있었다 대해서 가지고 있던 또 다른 편집 하나의 아이디어. 나는 다음과 같은 .java 파일을 수정 계획 한 다음

public class MainActivity extends Activity { 

    public final static String EXTRA_MESSAGE = "com.example.MyFirstApp.MESSAGE"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final TextView textView = (TextView)findViewById(R.id.textView1); 
     // this is the view on which you will listen for touch events 
     final View touchLayout = findViewById(R.id.touchLayout); 
     touchLayout.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       textView.setText("Touch coordinates : " + 
        String.valueOf(event.getX()) + "x" + String.valueOf(event.getY())); 
        return true; 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 
+1

Java 코드에서 레이아웃 파일을 activity_main으로 변경하여 XML을 호출 한 다음 코드를 테스트한다. –

+0

그래, 작동 했어. ! 실행 여부를 확인하기 위해 코드를 테스트 할 것입니다. – user3616949

+1

온라인 18 where is : setContentView (R.layout.main); 그것도 변경하십시오. 레이아웃 파일이 무엇인지 알려면 setContentView (R.layout.activity_main) –

답변

1

변경 :

setContentView(R.layout.activity_main); 
+0

고맙습니다! 내가 가진 두 번째 문제를 해결하는 법을 알게 되겠습니까? – user3616949

+1

이 해결책은 http://stackoverflow.com/questions/17922650/android-recording-coordinates-of-the-point-in-screen에서 확인할 수 있습니다. – user3030212

0

그래, 내가 두 번째 편집에 한 대답은 정확했다. 나는 단순히 LinearLayout에게 id를주고, touchView id를 LinearLayout id로 바꿨다.