构建Android UI的简便方法?[关闭]


82

是否有工具或网站可以帮助我使用拖放功能为Android应用程序创建UI?

我找到了这个网站,但想知道是否有更稳定的工具或网站吗?


[更新] Android Studio处于测试版,但看起来很有希望.. developer.android.com/sdk/installing/studio.html
Syed Qarib 2014年

Answers:


46

请允许我成为对这个话题有点现实的人。没有适用于Android的良好GUI工具。如果您来自本地应用程序GUI环境(例如Delphi),那么使用ADK编辑器和DroidDraw的用户体验将令人失望。我已经尝试过几次以有效的方式使用DroidDraw的方法,而且我总是回过头来手动滚动XML。

ADK是一个很好的起点,但是使用起来并不容易。在布局中定位组件是一场噩梦。DroidDraw看起来很棒,但是我什至不能用它打开现有的功能性XML布局。它以某种方式丢失了一半的布局,并且无法提取我为按钮,背景等指定的图像。

鲜明的现实是,Android开发人员迫切需要一个灵活,易于使用,健壮的GUI开发工具,该工具类似于.NET和Delphi开发所使用的工具。


9
我同意。在Android中使用布局是绝对的麻烦!
Kris B

4
我希望他们在样式方面完全放弃XML而转而支持CSS。
WKS 2013年

整个Android GUI框架需要快速运行。只是不可用。
G_V 2014年

@G_V:如果您指的是视觉控件而不是IDE,我希望有所不同。我已经使用了几年了,我对此非常满意。
Todd Grigsby 2014年

28

用于Eclipse的Android开发工具(ADT)插件包括用于android应用程序布局文件的可视编辑器:

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


4
尤其是Android SDK 1.5随附的版本,它比DroidDraw更好。
艾萨克·沃勒

8
如果有人在查找此文件时遇到麻烦(我知道我做到了),只需在Eclipse中打开main.xml。如果失败,请右键单击它,打开方式> Android布局编辑器。如果失败,则可能未正确安装您的ADT。
MSpeed 2010年

12
Eclipse中的可视编辑器很烂。确实禁止用户正确布局。
IgorGanapolsky

@IgorGanapolsky有什么比Eclipse好?您有什么建议?
Mahmoud Farahat

1
我个人认为ADT的GUI构建器不容易使用也不直观。严重的是,那个建设者让Google看起来很糟糕。
shiouming 2014年

8

最简单的方法是使用REBOL 3:

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

这里是10个具有GUI的功能齐全的演示程序。它们使用完全相同的代码在Android台式机操作系统上运行:

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不错,我并不是故意要讽刺,但看来我需要另一个硕士学位才能弄清楚该代码。看起来很简单,但给我的感觉是我正在用汇编语言编写所有这些内容?
霓虹灯Warge

7

DroidDraw似乎非常有用。它具有简洁易用的界面,并且是免费软件。适用于Windows,Linux和Mac OSX。我建议捐赠。

如果您不喜欢它,则应访问此站点。还有其他一些选项和其他有用的工具。


对于具有离线非静态GUI的本机android开发不执行任何操作。
G_V 2014年

似乎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的最快方法就是使用出色的HTML。



0

并不是说这是最好的方法,而是拥有选择的好处。Necessitas是一个将Qt移植到android的项目。它仍处于早期阶段,缺乏完整的功能,但是对于那些了解Qt并且不想为可怕的Android UI缺少好的工具而烦恼的人,至少考虑使用它是明智的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.