2011-04-25 3 views
7

Android 플랫폼에서 기존 Java AWT 그래픽 코드를 사용하고 싶습니다. 지금까지 내가 말할 수있는, 안드로이드는 AWT 클래스 중 하나를 포함하지 않습니다 - 더 Graphics2D, Path2D, FontMetricsAWT 그래픽 코드를 Android에 이식하는 경우

우리의 그리기 코드는 안드로이드 포트에 가장 좋은 방법은 무엇입니까? 이상적으로는 코드베이스를 으로 수정하고 Android 및 일반 Java를 수정하고 싶습니다.

+1

awt-android-compat 프로젝트를 확인하십시오. http://code.google.com/p/awt-android-compat/. 요즘 불행히도 많은 활동이 없었으므로 아직 초기 단계입니다. Android의 내부 코드에서 AWT에 대한 참조가있는 것처럼 보이지만 직접 사용하는 것은 불가능합니다. 아마도 awt-android-compat 프로젝트에 기여할 때 유용할까요? 나는 잘 모르겠다. http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2.2_r1/com/android/internal/awt/AndroidGraphics2D.java#AndroidGraphics2D – Josh1billion

+0

awt android compatibility : 죽은, 너무 많은 문제. –

+1

다음은 Graphics API에 대해 작성한 래퍼입니다. 완벽하지는 않지만 많은 기능이 있습니다. http://pastebin.com/b5TFWSqQ – schwiz

답변

6

안드로이드 플랫폼은 awt의 작은 하위 집합을 지원합니다. 작게는 awt 글꼴을 지원한다는 의미입니다. 자바 스윙에서 (정말로 독립형 UI로 awt를 사용하고 있습니까?) Android로가는 것은 시스템에 충격이 될 것입니다. 하나는 안드로이드의 UI를 XML 리소스 파일로 정의하고, 그 리소스는 애플리케이션의 논리적 단위를 나타내는 Activity 클래스에로드된다. Canvas '는 Graphics2D 객체를 대체하며 기능이 다소 다릅니다. Android UI 시스템은 절대 위치 지정을 피하려고합니다. 이는 Java UI에서 일반적입니다. 다양한 화면 크기 및 해상도 차이와 같이 Android에 대한 고려가 훨씬 더 많습니다. 어느 쪽도 Java SE의 많은 문제는 아닙니다. 귀하의 질문에 대답하려면 : 당신은 당신을 위해 일을 줄이고 당신은 처음부터 코딩의 많은 부분을 시작해야 할 것입니다.

'드로잉 코드'의 의미는 모르지만 제 경우에는 awt 셰이프를 통해 표시되는 많은 양의 애니메이션 코드가 있습니다. 이것은 graphics.drawable.shapes 객체가 있기 때문에 android에서 재현 가능하며, canvas.drawCircle (x, y, z, h) (뭔가 생각 나게 하시겠습니까?)와 같은 작업을 수행하여 원시 모양을 표시 할 수 있습니다. 그러나 포팅 할 때 어려움을 겪었고 안드로이드가 정말 원하지 않는 일을하도록 꾸미는 것처럼 느껴졌습니다. 그것의 모호함을 정확하게 귀하의 질문에 대답하기가 어렵습니다.

+0

당신은 "안드로이드 UI 시스템은 절대 위치 지정을 피하려고 노력합니다. 이것은 자바 UI에서 일반적입니다." 두 시스템 모두에서 위치가 동일하다고 생각합니다. 내가 틀린 곳을 설명해 줄 수 있니? 배경 정보 : 비슷한 문제가 있습니다. 구조화 및 그리기를 위해서만 사용되는 java.awt 코드를 구현해야합니까? 예 : awt.Rectangle2D처럼? 아니면 안드로이드 응용 프로그램을 리팩토링해야합니까? 리팩터링을해야한다면 많은 노력이 필요하다고 생각합니다. 반면에 java.awt를 시뮬레이트하려고하면 결과가 무엇인지 실제로 알지 못합니다. – dritan

2

AWT를 Android로 포트 할 수 있다고 생각하지 않습니다. 내 말은 Java SE와 서브 세트 (또는 원하는 스테로이드가있는 업데이트 된 Java ME)입니다.

Android ME에서 완벽하게 작동하는 Java ME 용 UI 클래스가 있습니다. 개인적으로 나는 LWUIT을 좋아하지만 유일한 것은 아닙니다.

관련 문제