《第一行代码——Android》郭霖著php
更多内容,欢迎访问个人我的博客醒岛java
一个Activity是一个应用程序组件,提供一个用户界面,用户能够用来交互以完成某项任务,例如阅读文本、点击按钮、看照片等。每个Activity被给予一个窗口,在上面能够绘制用户接口。窗口一般充满屏幕,但也能够小于屏幕而浮于其它窗口之上。一个应用程序中能够包含零个或多个活动,但不包含任何活动的应用程序不多见,由于这样用户就没法看到你的应用程序了。android
咱们如今来看看如何手动建立一个活动。在HelloWorld项目中,MainActivity这个活动是自动建立的,那如何手动建立活动呢?下面咱们一步一步来进行活动的建立。app
新建一个项目ActivityTest。设置好包名等选项后,点击下一步。ide
选择相应设备和最小兼容SDK。布局
注意!在这一步的时候,咱们要选择“Add No Activity”选项。这样就不会自动建立活动了。点击Finish。ui
如今项目建立好了,咱们来看看Project目录。spa
在如图所示的位置(这就是咱们建立项目时默认的包名)右击,选择New。在接下来的菜单里能够选择Java Class或者直接选择Activity来建立新的Activity。这里我选择了Java Class。以后,在新的文件里写上以下内容:code
public class FirstActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } }
能够看到,onCreate()方法很是简单,就是调用了父类的onCreate()方法。xml
在AndroidManifest文件中注册。全部的活动都要在AndroidManifest.xml中进行注册才能生效。咱们打开AndroidManifest.xml,在<application>标签内添加以下代码。
<activity android:name=".FirstActivity" android:label="This is FirstActivity" >//如果主活动,这里还会成为应用程序的名称 <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
这些语句的意思在Hello World程序解析中已经讲过,在此就再也不赘述。
上面咱们已经建立了一个活动,但是这个活动是空的,下面咱们来为这个活动添加布局(Layout)文件。
打开res目录,你会发现并无layout目录。这是由于new→Java Class时AS是不会自动生成layout目录和文件的。(若是你在上一步执行的是new→Activity操做,并勾选了“Generate Layout File”,layout目录和对应的layout文件就会存在了。)在res上右击,选择new→Android resource directory→name:layout,type:layout,set:main→OK。
右击layout→new→Layout resource File→name:first_layout,root element:LinearLayout→OK。至此,layout文件就建立好了。
下面咱们来添加一个Button按钮。在< LinearLayout >标签内添加以下代码:
<Button android:id="@+id/button_1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button 1" />
这里咱们添加了一个button元素,android:id是给当前元素添加一个惟一标识符。咱们在helloworld程序解析中有提到xml中能够引用资源的格式为@xxx/xxxxx,这里的@+xxx/xxxxx则是在xml里定义一个资源id的格式。android:layout_width指定了当前元素的宽度,match_parent表示让当前元素和父元素同样宽。ndroid:layout_height指定了当前元素的高度,这里使用wrap_content,表示当前元素的高度只要能恰好包含里面的内容。android:text指定了元素中显示的文字内容。
从新回到FirstActivity,在onCreate()方法中加入以下代码:
setContentView(R.layout.first_layout);
setContentView()方法来给当前的活动加载一个布局,而在setContentView()方法中,咱们通常都会传入一个布局文件的id。注意这里咱们使用的R,是com.example.activitytest包下的R文件,Android SDK还会自动提供一个android包下的R文件。
这时程序运行的效果以下所示:
书中的方法是在onCreate()方法中添加以下代码:
requestWindowFeature(Window.FEATURE_NO_TITLE);
并且要添加到setContentView语句前。可是我发现,这时程序运行的效果与前次没有区别。这是怎么回事?原来,咱们的活动继承自Activity,这样的话是默认不显示标题栏的。那如何在这种状态下隐藏状态栏?在res目录下打开style.xml文件,在其中新添加一个style:
<style name="FullScreenTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="android:windowFullscreen">true</item> </style>
而后在AndroidManifest文件中修改
android:theme="@style/FullScreenTheme"
能够选则在Application元素中使用,也能够给一个activity元素使用。效果以下:
可是当你的活动继承的不是Activity而是AppCompatActivity时,默认的显示效果以下:
状态栏和标题栏是都显示出来的。
咱们把theme改成FullScreenTheme时,状态栏隐藏了,但是标题栏没有隐藏。咱们修改刚刚写的style以下:
<style name="FullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="android:windowFullscreen">true</item> </style>
此次标题栏状态栏就都隐藏了。若是仅仅想要隐藏标题栏,仅仅修改AndroidManifest文件中的android:theme值为@style/Theme.AppCompat.Light.NoActionBar便可。