Android UI를 구축하는 쉬운 방법? [닫은]


82

드래그 앤 드롭을 사용하여 Android 애플리케이션 용 UI를 만드는 데 도움이되는 도구 나 웹 사이트가 있습니까?

이 사이트를 찾았 지만 더 안정적인 도구 나 웹 사이트가 있는지 알고 싶습니까?


[업데이트] 안드로이드 스튜디오는 베타하지만 약속 보인다 .. developer.android.com/sdk/installing/studio.html
에드 Qarib

답변:


46

제가이 주제에 대해 약간의 현실을 다룰 수있게 해주세요. Android 작업에 적합한 GUI 도구는 없습니다. Delphi와 같은 네이티브 애플리케이션 GUI 환경에서 온 경우 ADK 편집기 및 DroidDraw의 사용자 경험에 슬프게도 실망 할 것입니다. 저는 생산적인 방식으로 DroidDraw로 작업하기 위해 여러 번 시도해 왔으며 항상 XML을 수동으로 롤링합니다.

ADK는 좋은 시작점이지만 사용하기 쉽지 않습니다. 레이아웃 내에 구성 요소를 배치하는 것은 악몽입니다. DroidDraw는 환상적 일 것 같지만 기존의 기능적인 XML 레이아웃을 열 수도 없습니다. 어떻게 든 레이아웃의 절반을 잃고 버튼, 배경 등에 대해 지정한 이미지를 가져올 수 없습니다.

극명한 현실은 Android 개발자 공간에 .NET 및 Delphi 개발에 사용되는 것과 유사한 유연하고 사용하기 쉬운 강력한 GUI 개발 도구가 절실히 필요하다는 것입니다.


9
나는 동의한다. Android에서 레이아웃 작업은 당연한 일입니다!
Kris B

4
스타일링과 관련하여 CSS를 선호하여 XML을 완전히 버리기를 바랍니다.
WKS

전체 Android GUI 프레임 워크가 빠르게 진행되어야합니다. 사용할 수 없습니다.
G_V

@G_V : IDE가 아닌 시각적 컨트롤을 언급하는 경우에는 다를 수 있습니다. 나는 몇 년 동안 그것을 사용해 왔고 꽤 편안합니다.
Todd Grigsby 2014

28

Eclipse 용 ADT (Android 개발 도구) 플러그인에는 Android 애플리케이션 레이아웃 파일 용 시각적 편집기가 포함되어 있습니다.

http://developer.android.com/tools/help/adt.html


4
특히 Android SDK 1.5와 함께 제공되는 것은 DroidDraw보다 훨씬 낫습니다.
Isaac Waller

8
누군가 이것을 찾는 데 어려움을 겪고 있다면 (내가 알고 있음) Eclipse에서 main.xml을여십시오. 실패하면 마우스 오른쪽 버튼으로 클릭하고 연결 프로그램> Android 레이아웃 편집기를 클릭합니다. 실패하면 ADT가 올바르게 설치되지 않을 수 있습니다.
MSpeed

12
이클립스의 비주얼 에디터는 형편 없다. 그것은 사용자가 사물을 적절하게 배치하는 것을 정말로 방해합니다.
IgorGanapolsky

@IgorGanapolsky Eclipse보다 나은 것은 무엇입니까?, 무엇을 제안합니까?
Mahmoud Farahat 2013

1
개인적으로 ADT의 GUI 빌더를 사용하기 쉽고 직관적이라고 생각하지 않습니다. 진지하게, 그 빌더는 Google을 나쁘게 만듭니다.
shiouming

8

가장 쉬운 방법은 REBOL 3을 사용하는 것입니다.

http://rebolforum.com/index.cgi?f=printtopic&permalink=Nick25-Aug-2013/10:08:38-7:00&archiveflag=new

다음은 GUI와 함께 완벽하게 작동하는 10 개의 데모 프로그램입니다. 이들은 정확히 동일한 코드를 사용하여 Android 데스크톱 OS에서 실행됩니다 .

REBOL []
load-gui
view [text "Hello World!"]


REBOL [title: "Tiny Note Editor"]
do %r3-gui.r3  ; download this file manually or just use load-gui as above
view [
    a1: area
    button "Save" on-action [write %notes.txt get-face a1]
    button "Load" on-action [set-face a1 to-string read %notes.txt]
]


REBOL [title: "Data Entry to CSV File"]
do %r3-gui.r3
view [
    text "First Name:"
    f1: field
    text "Last Name:"
    f2: field
    button "Submit" on-action [
        write/append %cntcts.txt rejoin [
            mold get-face f1 " " mold get-face f2 newline
        ]
        request "" "Saved"
    ]
    a1: area
    button "Load" on-action [set-face a1 to-string read %cntcts.txt]
]


REBOL [title: "Text File Reader (How to use a text list file selector)"]
do %r3-gui.r3
view [
    a1: area
    button "Load" on-action [
        files: read %./
        view/modal [
            text "File Name:"
            t2: text-list files on-action [
                set-face a1 to-string read(to-file pick files get-face t2)
                unview
            ]
        ]
    ]
]


REBOL [title: "List-View (Grid) Example"]
do %r3-gui.r3
view [
    text-table ["1" 200 "2" 100 "3"][
        ["asdf" "a" "4"]
        ["sdfg" "b" "3"]
        ["dfgh" "c" "2"]
        ["fghj" "d" "1"]
    ] 
]


REBOL [title: "Calculator"]
do %r3-gui.r3
stylize [
    btn: button [
        facets: [init-size: 50x50]
        actors: [on-action:[set-face f join get-face f get-face face]]
    ]
]
view [
    hgroup [
        f: field return
        btn "1"  btn "2"  btn "3"  btn " + "  return
        btn "4"  btn "5"  btn "6"  btn " - "  return
        btn "7"  btn "8"  btn "9"  btn " * "  return
        btn "0"  btn "."  btn " / "   btn "=" on-action [
            attempt [set-face f form do get-face f]
        ]
    ]
]


REBOL [title: "Sliding Tile Puzzle"]
do %r3-gui.r3
stylize [
    p: button [
        facets: [init-size: 60x60  max-size: 60x60]
        actors: [
            on-action: [
                t: face/gob/offset
                face/gob/offset: x/gob/offset
                x/gob/offset: t
            ]
        ]
    ]
]
view/options [
    hgroup [ 
        p "8"   p "7"   p "6"   return
        p "5"   p "4"   p "3"   return
        p "2"   p "1"   x: box 60x60 white
    ]
] [bg-color: white]


REBOL [title: "Math Test"]
do %r3-gui.r3
random/seed now
x: does [rejoin [random 10 " + " random 20]]
view [
    f1: field (x)
    text "Answer:"
    f2: field on-action [
        either (get-face f2) = (form do get-face f1) [
            request "Yes!" "Yes!"][request "No!" "No!"
        ]
        set-face f1 x
        set-face f2 ""
        focus f2
    ]
]


REBOL [title: "Minimal Cash Register"]
do %r3-gui.r3
stylize [fld: field [init-size: 80]]   
view [
    hgroup [
        text "Cashier:"   cashier: fld 
        text "Item:"      item: fld 
        text "Price:"     price: fld on-action [
            if error? try [to-money get-face price] [
                request "Error" "Price error" 
                return none
            ]
            set-face a rejoin [
                get-face a mold get-face item tab get-face price newline
            ]
            set-face item copy "" set-face price copy ""
            sum: 0
            foreach [item price] load get-face a [
                sum: sum + to-money price
            ]
            set-face subtotal form sum
            set-face tax form sum * .06
            set-face total form sum * 1.06 
            focus item
        ]
        return
        a: area 600x300
        return
        text "Subtotal:"   subtotal: fld 
        text "Tax:"        tax: fld 
        text "Total:"      total: fld
        button "Save" on-action [
            items: replace/all (mold load get-face a) newline " "
            write/append %sales.txt rejoin [
                items newline get-face cashier newline now/date newline
            ]
            set-face item copy "" set-face price copy "" 
            set-face a copy ""    set-face subtotal copy ""
            set-face tax copy "" set-face total copy ""
        ]
    ]
]


REBOL [title: "Requestors"]
do %r3-gui.r3
x: request/ask "Question" "Do you like this?."
either x = false [print "No!"] [print "Yes!"]
x: request/custom "" "Do you like this?" ["Yay" "Boo"]
either x = false [print "Boo!"] [print "Yay!"]
view [button "Click me" on-action[request "Ok" "You clicked the button."]]

1
+1 좋아요, 비꼬는 말은 아니지만이 코드를 이해하려면 다른 석사 학위가 필요한 것 같습니다. 단순 해 보이지만 내가이 모든 것을 어셈블리로 쓰고 있다는 느낌을 주었습니까?
Neon Warge

7

DroidDraw 는 매우 유용한 것 같습니다. 깨끗하고 쉬운 인터페이스를 가지고 있으며 프리웨어입니다. Windows, Linux 및 Mac OS X에서 사용할 수 있습니다. 기부를 조언합니다.

마음에 들지 않으면 이 사이트를 참조하십시오 . 다른 옵션과 기타 유용한 도구가 있습니다.


오프라인 비 정적 GUI를 사용하는 네이티브 Android 개발에는 아무것도하지 않습니다.
G_V

DroidDraw가 죽은 것 같습니다. 링크가 활성화되어 있지만 도메인의 호스트 웹 페이지를 표시합니다. 그 빈 ~
네온 Warge

6

당신은 또한 이것을 시도 할 수 있습니다 . 모델 뷰 컨트롤러 개념과 빠른 프로토 타이핑이 마음에 든다면 그 뒤에있는 아이디어가 마음에 드실 것입니다.)

SimpleUi (https://github.com/bitstars/SimpleUi)

생성 된 UI (아래 코드) :

여기에 이미지 설명 입력

이 Android UI를 만드는 전체 코드 :

여기에 이미지 설명 입력

빠른 프로토 타이핑이나 대화 상자뿐만 아니라 수년 동안 잘 테스트 된 실제 응용 프로그램에서 사용합니다. 이 개념은 모델보기 제어 원리를 기반으로하며 대부분의 일반적인 시나리오에서 모든 장치에서 자동으로 올바르게 보이는 구성 요소를 사용할 준비가되어 있습니다. 어떤 UI에도 사용되어야한다고 말하지는 않지만 (예 : 목록보기는 손으로해야 함) 대부분의 사용 사례에서 이것은 매우 편리 할 것입니다;) 아 그리고 원하는 경우 자유롭게 포크하고 더 개선 할 수 있습니다.


4

Droiddraw가 좋습니다. 나는 오랫동안 그것을 사용해 왔고 아직 문제에 직면하지 않았습니다 (가끔 충돌하지만 괜찮습니다)


3
"때때로 충돌하지만 괜찮습니다"-그게 내 만트라입니다.)
demoncodemonkey

"가끔 충돌하지만 괜찮습니다"-ㅋㅋ. 그 날 정말 웃게 만든 : D
MR5을



1

http://www.appinventor.mit.edu/

App Inventor 앱 만들기는 앱의 모양을 디자인하는 브라우저에서 시작됩니다. 그런 다음 퍼즐 조각을 맞추는 것처럼 앱의 동작을 설정합니다. 그 동안 컴퓨터와 휴대폰 간의 실시간 연결을 통해 앱이 휴대폰에 나타납니다.


1

이것은 불행히도 몇 년 후에도 좋은 해결책이 없다는 오래된 질문입니다. 방금 iOS (Obj C)에서 Android로 앱을 이식했습니다. 가장 큰 문제는 백엔드 코드가 아니라 (대부분의 사람들에게 Obj C로 코딩 할 수 있다면 Java로 코딩 할 수 있음) 네이티브 인터페이스를 포팅하는 것이 었습니다. 위에서 Todd가 말한 것처럼 UI 레이아웃은 여전히 ​​완전한 고통입니다. 내 경험상 여러 형식 등을 지원하는 안정적인 UI를 개발하는 가장 빠른 방법은 좋은 'ol HTML'입니다.


0

http://code.google.com/p/android-ui-utils/ 프로젝트 의 연필 스텐실과 함께 http://pencil.evolus.vn/ 을 사용하면 매우 잘 작동 한다는 것을 알았 습니다. 사용하기 매우 간단하고 정교한 디자인을 모의하기가 매우 쉽습니다.


아마도 내가 뭔가를보고 싶어하지만, 내가 넥서스 하나, 당신이 할 수있는 유일한 장소의 물건을 볼 수 있습니다까지로하고 나는 확실히 main.xml에 대한 XML 코드를 얻는 방법을 모르겠어요
the_new_mr

0

이것이 최선의 방법이라고 말하는 것이 아니라 옵션을 갖는 것이 좋습니다. Necessitas 는 Qt를 안드로이드로 포팅하는 프로젝트입니다. 아직 초기 단계에 있으며 완전한 기능이 부족하지만 Qt를 알고 있고 Android UI에 대한 좋은 도구가 끔찍하게 부족한 것에 대해 고민하고 싶지 않은 사람들에게는 적어도 이것을 사용하는 것이 현명 할 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.