Android四大组件之actiivity
1.Acitivity
Activity是Android一个非常重要的用户接口(四大组件之一),是可见的,主要是用户和应用程序之间进行交互的接口。在每个Activity中都可以放很多控件,所以也可以把Activity看作控件的容器,简单来说就是Android的UI部分。
2.Activity生命周期
- onCreate:主要执行初始化工作,比如用setContentView加载布局界面
- onStart:Activity由不可见变为可见,但是不在前台,不可以与用户进行交互
- onResume:使Activity位于返回栈的顶端,并出现在前台,可与用户进行交互
- onRestart:Activity的重启,由不可见变为可见
- onPause:表明Activity正在停止,正常情况下onStop会紧接着调用。但是也有特殊情况,若这个时候需要快速的挥刀当前Activity,那么onResume也会被调用。这个方法的执行一定要快,不然会影响栈顶的Activity的使用。
- onStop:Activity由部分不可见变为完全不可见,可做一些重量级的回收工作,同样不能很耗时。
- onDestory:销毁Activity并释放资源。
其中onCreate和onDestory为完整的生命周期,onStart和onStop为可见生命周期,onResume和onPause为前台生命周期。
3.给按钮添加事件的简单案例
package com.example.helloworld; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) this.findViewById(R.id.button1); button.setOnClickListener(new OnClickListener(){ public void onClick(View v){ //Toast t = Toast.makeText(context, text, duration); /* Context字面意思上下文,Activity中我们直接用this代替, 而到了一个button的onClick(View view)等方法时, 我们用this时就会报错,改用ActivityName.this, 主要原因是因为实现Context的类主要有Android特有的几个模型, Activity、Service以及BroadcastReceiver。*/ Toast t = Toast.makeText(MainActivity.this, "哈哈哈", Toast.LENGTH_LONG); t.show(); } }); } }
4. 我们可以去activity_main.xml中看xml如何配置的
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1"
android:layout_marginLeft="23dp"
android:text="你好" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_centerHorizontal="true"
android:text="Button2" />
</RelativeLayout>
RelativeLayout
首先RelativeLayout的意思是指明了这个布局管理器是相对布局,是不是很像DIV的CSS属性。
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
这两句主要是schemas声明,不多解释了啊。
android:layout_width是设置布局占屏幕的宽度,android:layout_height是设置布局占屏幕的高度,等于号后面的match_parent其实从Android 2.2开始FILL_PARENT改名为MATCH_PARENT 也就是占满屏幕的意思。
TextView
下面是TextView里的属性介绍,有两个和上面一样的属性:
android:layout_width:布局宽度,值是"wrap_content",代表根据内容自动拉伸;
android:layout_height:布局高度,值是"wrap_content",代表根据内容自动拉伸;
android:text:这个属性是上面没有的,表示这个Text 的文本,有点类似HTML里input的values属性啊:)值是"@string/hello_world" 这个@string代表的是从res/values/strings.xml里后 面的hello_world在哪里呢?我们来看下代码:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">NI Hao</string> <string name="hello_world">Hello world!</string> </resources>
app_name:这个Android应用的名字
action_settings:这个暂时还不知道是干嘛的,有知道的告诉我哈
hello_world:这是我们自定义的一个Text
到此,我们明白了,原来MainActivity可以调用这些资源的。
5.这个歌程序的效果是(左图) 点击你好后(右图)
明天继续!