마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

뷰를 클래스로 만든다는 개념이 어떤건가요?

0 추천
책 예제를 따라가다가 보면

뷰를 클래스 파일로 지정해서 사용하는 법이 있더군요.

예를들어

JAVA

1. 메인.class 2. 뷰(ScreenViewFlipper).class

XML

a. 메인.xml  b. 뷰.xml

이러형태로 있어요

a에서

 <com.example.ScreenViewFlipper
        android:id="@+id/screen"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

이런 형태로 뷰클래스를 부르고

뷰클래스에서는

LayoutInflater inflater = (LayoutInflater) context
    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  inflater.inflate(R.layout.screenview, this, true);

이렇게 인플레이트 시켜서 화면을

두가지 xml로 나눠서 구성하는거 같아요

 

궁금한 것이요~ 이렇게 하는것이 더 편리한 방법인가요?

제 생각으로는 그냥 하나의 뷰에서 구성하는게 더 나은거 아닌가요?

흔히들 이렇게 쓰는것인지 궁금합니다.

 

또 하나! 만약에 뷰클래스에서 터치이벤트를 발생했을때

두개의 뷰 모두 영향을 주는 방법이 있나요?

지금은 b.xml의 뷰에만 영향이 갑니다...

예를들어)  a라는 뷰를 터치하면 b뷰에서 +1 이라는 텍스트가 나오고

b뷰를 터치하면 a뷰에서 +1이라는 텍스트가 나올수 있도록 하고 싶어요..
뇽석 (530 포인트) 님이 2013년 8월 5일 질문

1개의 답변

+1 추천
 
채택된 답변
1. 소량의 뷰라면은 하나로 하겠지만 프로젝트가 커지면 나누게 됩니다. 그래야 다수의 사람이 분리해서 구현하게 되니깐요

2. a라는 뷰에서  b 라는 뷰가 자식이면 또는 자식이 아니여도 onTouchEvent 를 이용해서 전달은 가능은 합니다. 구현하기 나름이지요
aucd29 (218,390 포인트) 님이 2013년 8월 6일 답변
뇽석님이 2013년 8월 8일 채택됨
a가 메인뷰고
b가 인플레이트 해서 일부만 쓰는 뷰이고
현재까지 구현한 프로그래밍에서는
b에서 터치이벤트가 발생했을 때
b의 화면이 넘어간다.
이런식으로 구현을 했는데요..

b의 화면이 넘어갈때 a의 화면의 텍스트부분에서
변화하는 페이지를 표시하고 싶은데 어떻게 하는게 좋을까요?

지금 생각으론 b의 터치이벤트에서
어떻게든 findViewById 같은걸로 a의 텍스트 위치?를 가져오고
싶은데 다른 뷰여서 그런지 바로 연결이 안되더군요..
어떻게 연결할 수 있을지 고민됩니다..
아니면 다른 방법은 어떤게 있을지 질문드립니다~
callback 개념을 아신다면 쉽게 하실 수 있을 것 같은데요
...