Android中类似于IBActions和IBOutlets的东西是什么?

4

我想开始学习Android开发。

在Android中,等同于IBActions和IBOutlets的是什么?

设置代码连接是否像Interface Builder一样容易?

如果已经了解Java,学习Android开发的基础知识是否很快?

3个回答

2
我认为在Android中连接代码和UI元素比在Xcode/IB中要容易得多(真的很容易)。然而,这完全取决于你习惯什么。我来自微软生态系统,在过去的15年里(从Visual Basic到最新版本的Visual Studio),代码和UI设计师之间的集成一直是无缝和轻松的。Android开发(至少在Eclipse中)更像是MS世界而不是Xcode/IB世界,尽管没有像Visual Studio那样的设计师。
要开始使用Android,最好放弃大部分你所熟悉的iPhone概念,而不是寻找一对一的类比。我目前正在学习iPhone开发,我发现最好接受那里的做法,而不是假设它只是C#/.Net,只是每个东西都有不同的名称。

我一段时间以前开始研究Android,但发现模拟器非常繁琐和恼人,并且会使CPU飙升等。因此,我转向iPhone进行开发。我只是在想,是否值得学习Android,将我的iPhone和Android技能水平提高到同等程度,或者更明智的做法是继续在iPhone上开发,比如使用OpenGL ES?这是个重大的决定。 :P - some_id
2
@alJaree:安卓模拟器是一个彻底的灾难 - 你绝对需要一个实际的设备来进行开发。我个人对iPhone的看法是,苹果只是在向自认为是精英的人推销高价设备,这意味着他们从根本上无法在市场份额方面占据主导地位。因此,安卓已经在超越他们并向上发展,而Windows Phone 7也将最终超越他们。如果你想为最大可能的市场开发技能,请选择安卓。 - MusiGenesis
所有平台的设备在处理器能力、内存、屏幕等方面大致相当(除了黑莓,它的技术水平大约停留在2005年左右)。而且所有操作系统的功能大致相当 - 除了市场存在时间(显然iPhone占据优势),没有任何一种操作系统具有主导优势。 - MusiGenesis
如果你还没有阅读过这篇文章,它可能会很有趣。http://www.appleinsider.com/articles/10/05/13/apple_exploring_interactive_glasses_free_3d_holographic_displays.html - some_id
这绝对是有趣的,尽管我怀疑它不会出现在iPhone 4.5中。 :-) - MusiGenesis
显示剩余2条评论

1
在AndroidDev生态系统和Visual Studio生态系统中,都没有IBOutlets和IBActions。
相反,你需要找到控件并将其转换为适当的类型,而不是使用IBOulet。
Button but1 = (Button) findViewById(R.layout.but1)

IBAction可以通过两种不同的方式实现

纯代码 >>

//find Button b1 = ...
b1.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              //do something
          }
       }); 

或者使用布局 >>
    <Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:onClick="button2Clicked"
    android:text="@string/text_but_1" />

xCode实际上做的事情完全相同。 ibOutlets和ibActions只是合成糖。 当从Storyboard XML中读取和初始化触摸类时,会发生同样的事情。

Visual Studio也像xCode一样使用合成糖。 当您双击按钮时,在Android Developer中手动编写的代码将自动写入名为className.config.cs的文件中。

我是一个AndroidStudio的新手。找不到像xCode和VisualStudio中那样的设计界面合成糖。也许有,但我找不到。

Android Developer和Visual Studio的代码自动补全与xCode完全不同。 在这些领域,xCode很烂。我都用过。 当您看到代码左侧的问号时,请单击它。 或者只需按Alt + Enter。

AndDev将为您编写大量代码。

C#和Java开发人员非常习惯调用尚未编写的方法,读取不存在的变量。

记得Alt + Enter!AndDev会为你做所有的事情。


1
对于你的最后一个问题,我会回答“是”。
你仍然需要将接口与代码连接起来,但目前你可以通过编程和即时操作来完成这一点:在 XML 布局文件中为视图设置 ID(例如 <Button android:id="@+id/myButton" />),然后在布局创建后,在代码中调用 View myButton = findViewById(R.layout.myButton)。后者相当于使用 IBOutlet 在 IB 中进行连接,只不过连接是在需要时进行的。(如果你愿意,你也可以在 iPhone 上通过编程方式完成此操作。)
相当于 IBAction 的是使用 onClickListener,声明 myButton.setOnClickListener(this); 并且 this 实现了 View.OnClickListener。然后你需要重写 public void onClick(View v) 并在 v.id 上使用 switch。
实际上,这并没有我说得那么糟糕。我在开发 Android 应用程序时遇到的主要问题是为不同的设备缩放视图。
如果你掌握了这些内容和意图,其他的基本上就是普通的 Java 了。

"在开发Android应用时,我遇到的主要问题是为不同设备调整视图大小。" - 听起来像是一个很大的问题。 - some_id
@alJaree:我正在逐渐接受的第二个主要问题是APK文件大小的限制。大于1MB未压缩的文件将无法读取,并且将这些文件放入某些文件夹(例如“assets”)实际上是一个错误。在iPhone上没有这样的担忧,因为大型SQLite数据库总是非常受欢迎的。 - Ken
从我的经验来看,模拟器足以让我朝着iPhone的方向前进,并且我在iOS上没有遇到任何重大问题。 - some_id
1
@alJaree:我可以理解,我的经验也是如此。我尝试过安卓,但总是碰到一些不适应的地方,又回到了iPhone。不过现在情况变得更容易了,我认为iPhone的开发者应该坚持学习安卓开发。我发现安卓文档并不像苹果的开发者文档那么好,但仍然有很多例子可以在安卓文档和其他地方找到,这对我很有帮助。如果你在iPhone上进行过开发,你已经知道在安卓上要问什么问题了。 - Ken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接