2011-09-22 6 views
0

온라인 필기 인식 도구를 사용하고 있습니다. 선형 레이아웃에 추가 할 사용자 지정보기가 있습니다. 사용자 정의보기에서 좌표를 가져와 링크 된 목록 또는 배열 목록에 저장하기 위해 주 활동 파일로 전송할 수 있습니까?주요 활동 및 사용자 지정보기에 관한 질문

답변

0

보기에서 OnTouchEvent 메서드를 재정의 할 수 있습니다.

public boolean onTouchEvent(MotionEvent event) { 
    float x=event.getX(); 
    float y=event.getY(); 
} 

원하는 경우 배열 또는 목록을 구성 할 수 있습니다.

ArrayList<Point> myList; 
... 
//Constructor 
... 
... 
public boolean onTouchEvent(MotionEvent event) { 
    float x=event.getX(); 
    float y=event.getY(); 
    Point p =new Point(); 
    p.set(x, y); 
    //And then add to the list 
    myList.add(p); 
} 
public ArrayList<Point> getMyArray(){ 
    return myList; 
} 

그리고 사용자 정의보기의 getMyArray 메소드를 호출하십시오. 주 활동에이 코드를 사용할 수 있습니다.

myView mv = (myView)this.findViewById(R.id.myView1); 
ArrayList<Point> points = mv.getMyArray(); 

그게 가능한 해결책이지만 문제 해결에 도움이되는지는 모르겠습니다.

편집 :이 솔루션은 모든 세관보기에서 작동하지만, 내가 당신 인 경우 SurfaceView를 확장하는보기를 사용합니다. 그것은 필자가 필기 도구로 그래픽을 만드는 가장 좋은 방법이기 때문에 논리적이다.

+0

onTouchEvent 메소드가 부착되어 청취자 오히려보기의 구성원이 아닌 : MyOnTouchListener이 같이 보입니다

MyView view = (MyView) findViewById(R.id.myView); view.setOnTouchListener(new MyOnTouchListener()); 

보기 – slayton

+0

그것은 SurfaceView의 멤버입니다. 필자는 필기 인식 도구이기 때문에 SurfaceView의 커스텀 뷰가 확장되어 있다고 가정했습니다. 나는 그것을 포스트에 씁니다. 감사합니다 –

+0

사실 난 그냥 안드로이드 워드 프로세서를 확인하고 onTouchEvent()는 View 클래스의 멤버 함수입니다. 틀렸어 – slayton

0

OnTouchListener 인터페이스를 구현하는 사용자 정의 클래스를 만들고 사용자 정의보기에서 터치 이벤트를 수신하도록 설정해야합니다. 버튼에 OnClickListener를 추가하기 위해 매우 유사한

class MyOnTouchListener implement OnTouchListener{ 
public int x=-1,y=-1,prevX=-1, prevY=-1; 

public boolean onTouch(View v, MotionEvent event) 
{ 
    prevX = x; 
    prevY = y;  
    int x = (int)event.getX(); 
    int y = (int)event.getY(); 

    switch(event.getAction()){ 
    case MotionEvent.ACTION_DOWN: 

     // there is no prev touch 
     prevX = -1; 
     prevY = -1; 

     // touch down code 

     break; 

    case MotionEvent.ACTION_MOVE: 
     // touch move code 
     // add points to array here! 
     break; 

    case MotionEvent.ACTION_UP: 
     // touch up code 
     break; 
    } 
    return true; 
} 
}