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

XML 파일 변경시 JAVA 코드

0 추천
XML 코드를 변경했을 시 안드로이드 내부에서 실제 Java 코드가 변경되는 부분이 있는지 알고싶습니다.

예를들어서 Button,의 XML 속성을 변경했을 때

안드로이드 내부에서(프레임워크라던지) 버튼의 속성에 따른 처리를 해주는 코드가 따로 있는지 알고 싶습니다.

그런 코드가 없다면 XML의 변경만으로 동작이 변경된다는게 상식적으로 이해가 가지 않아서 질문드립니다.
익명사용자 님이 2013년 9월 4일 질문

2개의 답변

0 추천

XML은 파싱 속도가 ㅈㄴ느리기 때문에 Android SDK에서는 XML을 코드로 만듭니다.

예를 들어, XML에서 View을 선언했다고 해 봅시다.

실제로는 View 클래스의 생성자 View(Context context, AttributeSet attrs)  또는 View(Context context, AttributeSet attrs, int defStyle) 를 호출합니다. (이 둘의 차이점은 잘 모르겠습니다.)

실제로 이 생성자를 오버로딩해서 로그를 찍어 보면 호출되는 것을 알 수 있습니다.

북이 (3,360 포인트) 님이 2013년 9월 5일 답변
오오...답변 감사드립니다..!!
그렇다면 XML에서 주는 속성이 실제 어느코드가 반영이 되는것이군요. 그럼 어떤 코드가 반영되는지 알 수 있는 방법이 따로 있을까요?
제가 XML의 버튼에서 바뀌는 속성이 실제로 어떤 코드가 적용되는지 찾아서 수정려 합니다.
XML에서 주는 속성이 '어느 코드'를 바꾸지는 않습니다. 다만 컴파일을 하면 실행가능한 바이트코드 형태로 들어가 있습니다. 따라서 XML에 대응되는 코드를 수정하는 것은 불가능합니다. 버튼에서 바뀌는 속성이 어떻게 바뀌는지 알아보려면, http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/Button.java
를 참고하세요. 안드로이드 버튼 소스 코드입니다. 그리고 수정을 하시려면, 버튼을 부모로 하는 커스텀 뷰를 만들어서 특정 메서드를 오버라이딩 하세요.
0 추천
declare-styleable 검색 해보시면 좋을듯 합니다.

만약 안드로이드 기본 styleable을 확인하시고 싶다면 android.R.styleable을 검색해보시면 됩니다.

android.R.syleable은 SDK에는 포함되어 있지 않습니다.
whitesnow (8,920 포인트) 님이 2013년 9월 5일 답변
...