Android开发学习(3)Hello Android!
在这里,我们简单介绍如何快速搭建我们的第一个安卓程序,熟悉安卓的常规开发模式。
创建项目
得力于idea的集成,我们可以快速搭建一套规范的安卓程序:
步骤:File -> New -> Project -> Android New Application
图像说明:
确定App名字
选择安卓版本
创建空活动
最终确定–漫长等待
文件结构:
序号 | 文件夹、文件和说明 |
---|---|
1 | src:包含项目中所有的.java源文件,默认情况下,它包括一个 MainActivity.java源文件对应的活动类,当应用程序通过应用图标启动时,将运行它。 |
2 | gen:这包含由编译器生成的.R文件,引用了所有项目中的资源。该文件不能被修改。 |
3 | bin:这个文件夹包含Android由APT构建的.apk包文件,以及运行Android应用程序所需要的其他所有东西。 |
4 | res/drawable-hdpi:这个目录下包括所有的为高密度屏幕设计所需的drawable对象。 |
5 | res/layout:这个目录存放由于定义用户界面的文件。 |
6 | res/values:这个目录存放各种各样的包含一系列资源的XML文件,比如字符串和颜色的定义。 |
7 | AndroidManifest.xml:这个是应用程序的清单文件,描述了应用程序的基础特性,定义它的各种组件。 |
创建活动
主要活动文件
主要活动代码在HelloActivity.java的Java文件中。这是实际的应用程序文件,将被转化为Dalvik可执行文件并运行。
package com.markmoney.xvshu.markmoney;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.markmoney.xvshu.markmoney.service.HelloService;
/**
* Created by xvshu on 2017/7/26.
*/
public class HelloActivity extends Activity {
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//得到按钮实例
Button hellobtn = (Button)findViewById(R.id.hellobutton);
//设置监听按钮点击事件
hellobtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//得到textview实例
TextView hellotv = (TextView)findViewById(R.id.hellotextView);
//弹出Toast提示按钮被点击了
Toast.makeText(HelloActivity.this,"Clicked",Toast.LENGTH_SHORT).show();
//读取strings.xml定义的interact_message信息并写到textview上
hellotv.setText(R.string.interact_message);
}
});
}
}
这里,R.layout.activity_main引用自res/layout目录下的activity_main.xml文件。onCreate()是活动被加载之后众多被调用的方法之一。
Manifest文件
无论你开发什么组件用作应用程序中的一部分,都需要在应用程序项目根目录下的manifest.xml文件中声明所有的组件。这个文件是Android操作系统与你的应用程序之间的接口,因此,如果没有在这个文件中声明你的组件,将无法被操作系统所识别。举个例子,一个默认的清单文件看起来如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.markmoney.xvshu.markmoney">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".HelloActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
这里,…标签之间是应用程序相关的组件。andnroid:icon属性指出位于res/drawable-hdpi下面的应用程序图标。这个应用使用drawable文件夹下名为ic_launcher.png的图片。
标签用于指定一个活动,android:name属性指定一个Activity类子类的全名。android:label属性指定用于活动名称的字符串。可以使用标签来指定多个活动。
意图过滤器的action被命名为android.intent.action.MAIN,表明这个活动被用做应用程序的入口。意图过滤器的category被命名为android.intent.category.LAUNCHER,表明应用程序可以通过设备启动器的图标来启动。
@tring指的是strings.xml(将在后面介绍)。因此,@string/app_name指的是定义在strings.xml中的app_name,实际为”Hello World”。类似的,应用中的其他字符串也很流行。
下面是你的清单文件中将用到的标签,用于指定不同的Android应用程序组件:
- 活动元素
- 服务元素
- 广播接收器元素
- 内容提供者元素
Strings 文件
strings.xml文件在res/value文件夹下,它包含应用程序使用到的所有文本。例如,按钮、标签的名称,默认文本,以及其他相似的strings。
<resources>
<string name="app_name">MarkMoney</string>
<!-- Strings related to login -->
<string name="prompt_email">Email</string>
<string name="prompt_password">Password (optional)</string>
<string name="action_sign_in">Sign in or register</string>
<string name="action_sign_in_short">Sign in</string>
<string name="error_invalid_email">This email address is invalid</string>
<string name="error_invalid_password">This password is too short</string>
<string name="error_incorrect_password">This password is incorrect</string>
<string name="error_field_required">This field is required</string>
<string name="permission_rationale">"Contacts permissions are needed for providing email completions."</string>
<string name="default_message">"Hello Android!"</string>
<string name="button_send">"say hello"</string>
<string name="interact_message">You just clicked on the Button!</string>
</resources>
R 文件
gen/com.example.helloworld/R.java文件是活动的Java文件,如MainActivity.java的和资源如strings.xml之间的胶水。这是一个自动生成的文件,不要修改R.java文件的内容。
Layout 文件
main.xml是一个在res/layout目录下的layout文件。当应用程序构建它的界面时被引用。你将非常频繁的修改这个文件来改变应用程序的布局。在”Hello Android”应用程序中,这个文件具有的布局,内容如下:
<?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">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello Android 实例"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp" />
<TextView
android:layout_width="fill_parent"
android:layout_height="180dp"
android:text="@string/default_message"
android:id="@+id/hellotextView" android:textColor="#00ff00" android:gravity="center"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:id="@+id/hellobutton" android:layout_gravity="center"/>
</LinearLayout>
这是一个简单的RelativeLayout的示例,TextView是一个Android的控件用于构建用户图形界面。它包含有许多不同的属性,诸如android:layout_width, android:layout_height等用来设置它的宽度和高度等。@string指的是res/values文件夹下的strings.xml文件。因此,@string/hello_world指的是定义在strings.xml中的名为hello的字符串:”Hello Android!”。
打包
调出打包窗口
配置签名
如果是第一次,先选择【create new】新建一个签名
选择路径
拿着apk包,可以安装到自己的手机,试试吧,第一个安卓程序就这么简单的安卓程序就这么诞生了。
总结:
一个简单的安卓程序,帮助我们了解了安卓基本的开发模型,也帮助我们熟悉了移动端的工作方式,这个简单的程序帮我们打开了一个移动开发的大门,也希望越来越多的小伙伴加入进来。