2013-04-10 3 views
2

저는 일종의 Android 애플리케이션 (APK 파일) 분석기 인 자바 애플리케이션을 빌드하고 있습니다.Java에서 Android XML 레이아웃 렌더링

응용 프로그램에서 제공 할 주요 기능 중 하나는 Android 레이아웃의 "미리보기"이므로 안드로이드 레이아웃 XML과 화면 해상도 및 테마와 같은 몇 가지 구성 인수를받는 API가 필요합니다. (실제로 안드로이드 플랫폼과의 그래픽 일관성이 중요 함) View 객체의 위치 데이터와 함께 (사용자가보기를 클릭하여보기를 선택할 수 있도록) 응용 프로그램을 실행하는 장치에 표시되는 것과 같은 렌더링 된 레이아웃. 첫 번째 단계에서는이 기능이 프로그래밍 방식으로 변경된 레이아웃을 반영하지는 않지만 XML에 정의 된 View 개체와 리소스 그래픽 만 반영한다고 생각합니다.

내가 생각한 아이디어는 ADT의 에디터 또는 DroidDraw와 같은 레이아웃 편집기의 소스 코드를 사용하여 프레임 워크에 통합하는 것이지만, 궁금한 점은 아마도 더 나은 방법은 안드로이드 API 자체는 나를 위해 레이아웃을 렌더링하기 위해 (이것은 주로 운영 체제의 이후 버전에 대한 내 코드를 다시 작성할 필요가 없기 때문에 더 낫다).

제 질문은 API가 그러한 작업을 허용합니까? 아니면 더 좋은 방법이 있습니까?

어떤 제안과 통찰력을 환영합니다 :)

답변

1

이 API는 이러한 작업이 가능합니까?

"java 응용 프로그램"은 사용자의 PC에서 실행되는 응용 프로그램을 의미하는 경우 아니오입니다. Android API에서 무엇이라도 호출하는 직접적인 방법은 없습니다. 기존 소스 코드를 통합하는 첫 번째 방법을 추천합니다.

그렇다고해도 이것은 간단한 작업이 아닙니다. 또한 APK를 분석하는 경우 개발할 때 보게되는 읽기 쉬운 일반 텍스트가 아닌 이진 XML 파일로 작업하게됩니다 (ADT/DroidDraw가 사용하는 것으로 가정 함). 소스 코드가 out there 일 수도 있습니다.

안드로이드 자체의 소스를 살펴 보는 것도 좋지만, 렌더링 코드를 다시 구현해야 할 것이라고 생각합니다. 그렇게 쉬운 방법이 아닙니다.

첫 번째 단계에서는 기능이 프로그래밍 방식으로 변경된 레이아웃을 반영하지는 않지만 XML에 정의 된보기 개체와 리소스 그래픽 만 반영한다고 생각합니다.

프로그래밍 방식으로 변경 한 레이아웃을 반영하는 것은 합리적 인 방식으로하는 것은 사실상 불가능합니다.

+0

자세한 답변을 보내 주셔서 감사합니다. 예, PC에서 실행중인 응용 프로그램을 의미합니다. 바이너리 XML을 디 컴파일하는 것에 관해서는 - 이미이 문제를 해결했고, 나는 모든 레이아웃과 소스를 포함한 다른 리소스를 포함하는 디렉토리를 가지고있다. – Elist

0

오픈 소스 Itsnat는로드 된 XML Android 레이아웃 파일을 직접 렌더링하는 방법을 제공합니다. 표준 (이진 컴파일 된) 버전과 동적 버전을 비교하는 샘플 앱이 있습니다. 내 작품은 LinearLayout/Relativelayout 등의 모든 단점을 재현하는 훌륭한 작업을 보여줍니다. https://github.com/jmarranz/itsnat

관련 문제