Andriod学习笔记 Activity

    Activity是andriod系统下的展示View容器,每个Activity提供一个可视化的区域。它也是用户界面与系统交互的接口,类似于HTML中的Tag语言,也类似于net中的winform界面。作为一个容器其有两个方面:1)外界如何调用这个容器,也就是这个容器的对外接口和生命周期 2)对内的属性或者方法如何影响内部的组件或者控件。


   从设计的角度来讲。Activity是一个通用的容器。类似于Flex中的View,对于前段的界面容器,肯定少不了鼠标事件、布局、生命周期和其它界面的交互和数据的相互传递。从通用性的角度来讲,须要将内容和逻辑分开。类似于aspx、mxml等。

设计模式上肯定会实现组合模式、观察者模式等。


    Android能够包括多个Activity,可是同一时间内仅仅能有一个Activity激活。其它的Activity都处于非激活状态。应用程序仅仅能具有一个入口的MainActivity。

Actity的包括例如以下的状态:

1)执行状态
2)暂停状态
3)停止状态
4)  销毁状态

Activity的事件包括例如以下几个:
1)onCreate()
2) onStart()
3) onPause()
4) onResume()
5) onStop()
6) onRestart()
7) onDestroy()

    Activity继承自 ContextThemeWrapper,实现例如以下接口LayoutInflater.Factory2,Window.Callback,KeyEvent.Callback,View.OnCreateContextMenuListener,ComponentCallbacks2。

可以实现布局、监听事件。主题更换等功能。


Activity的创建:
1)创建Activity类,并实现OnCreate() 方法:

public class MainActivity extends Activity {
   
        private   TextView testMessage ;//声明文本框
        private Button testButton ;//声明button
//声明事件
        private Button.OnClickListener calcBMI = new Button.OnClickListener(){

               @Override
               public void onClick(View arg0) {
                      // TODO Auto-generated method stub
                      testMessage .setText("change" );
              }
              
       };
       //button加入监听事件
        private void SetListeners(){
               testButton .setOnClickListener(calcBMI );
       }
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
               super .onCreate(savedInstanceState);
              //设置启动Activity
              setContentView(R.layout. activity_main );
              //获取控件
               this .FindViews(); 
               //设置监听
               this .SetListeners();
              
       }
       
   private void FindViews(){
          this .testMessage =(TextView) this.findViewById(R.id. testMessage );
          this .testButton =(Button) this.findViewById(R.id. button1 );
          testMessage .setText("ss" );
   }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
               // Inflate the menu; this adds items to the action bar if it is present.
              getMenuInflater().inflate(R.menu. main , menu);
               return true ;
       }

}

以上的方法,创建了TextView、Button两个控件,同一时候也设置了Buttonbutton的事件,点击的时候更改TextBox的显示内容。

2)声明Activity对象,声明内容必需要设置在AndroidManifest.XML中。
  <application
        android:allowBackup="true"
        android:icon=" @drawable /ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.andriodresearch.MainActivity"
            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>

3)在layout中设置控件布局

<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

//设置TextView
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" android:id="@+id/testMessage"  />

//设置Button
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/testMessage"
        android:layout_marginTop="32dp"
        android:layout_toRightOf="@+id/testMessage"
        android:text="change" />


</RelativeLayout>


至此,一个完整的Activity实例完毕,下一节将探讨Activity的跳转内容,同一时候尽量的从设计的思路探讨这样做解决的问题和优点。

posted on 2017-08-02 12:26  ljbguanli  阅读(330)  评论(0编辑  收藏  举报