文章所用示例代码大多来源于《疯狂Android讲义 第三版》。在这里,给那些想入门Android开发的新人推荐一下这本书。该书语言简单易懂,写的很详细,示例代码丰富,适合基础较差的新人入门。
环境搭建
详细过程就不啰嗦了,教程网上一搜一大把。我选择的是ubuntu + Android studio + genymotion.这里我推荐一下模拟器Genymotion,反应真的很快,和真机差不多。
Android studio 的项目文件结构
和eclipse不同,studio的project相当于是一个工作空间,app文件夹才是你的Android项目。如图:
其中,最主要的2个文件夹是java 和res文件夹。java文件夹包含java源代码文件,res文件夹包含layout,字符串,图片菜单等各种资源文件。
其中,有2个build.gradle文件,app根目录一个,project根目录一个。
app根目录下的build.gradle指定了sdk版本,编译工具的版本,兼容的最低sdk版本等信息,project根目录下的build.gradle则含有gradle插件的版本信息等。
从布局(layout)说起
常见的布局有线性布局(LinearLayout),相对布局(RelativeLayout),表格布局(TableLayout),网格布局(GridLayout),帧布局(FrameLayout0).
布局相当于是个容器,本身是看不见的。它规定了其内部的,。view组件(按钮,文本框等)的排列方式
下面的代码定义了一个简单的线性布局,只包含两个垂直排列的按钮。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity= "top|center_vertical">
<Button
android:id="@+id/bn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/bn1"/>
<Button
android:id="@+id/bn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/bn2"/>
</LinearLayout>
布局定义好之后需要在Activity中加载才能现显示,加载方法很简单,只需要调用setContentView()方法即可。
为按钮绑定一个事件监听器:先通过findViewByID找到该按钮组件,再调用setOnClickListener()即可。其它组件绑定事件监听方法也一样。
14
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button bn = (Button)findViewById(R.id.bn1);
bn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bn.setText("123");
}
});
}
}
在AndroidManifest.xml中注册Activity
下图中有2个Activity,第一个Activity是在app启动时加载的,所以需要配置
* 启动另外一个Activity的方法–显式Intent
public class MainActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 获取应用程序中的bn按钮
Button bn = (Button) findViewById(R.id.bn);
// 为bn按钮绑定事件监听器
bn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View source)
{
// 创建需要启动的Activity对应的Intent
Intent intent = new Intent(MainActivity.this,
SecondActivity.class);
// 启动intent对应的Activity
startActivity(intent);
}
});
}
}
最常用的UI组件–ListView
ListView是手机系统中使用非常广泛的一种组件,以垂直列表的形式显示所有列表项。ListView两种不同的生成方式:
直接使用ListView创建
让Activity继承ListActivity
基于数组的简单ListView,通过android:entries指定列表项数组。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 直接使用数组资源给出列表项 -->
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/books"
/>
</LinearLayout>
上面的ListView用到了数组资源,可在res/values/arrays.xml文件中定义。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="books">
<item>疯狂Java讲义</item>
<item>疯狂Ajax讲义</item>
<item>疯狂XML讲义</item>
<item>疯狂Android讲义</item>
</string-array>
</resources>