Android的界面是由一个个Activity组成的。
刚创建一个新的android界面的时候,就会自动创建一个Activity。Activity可以理解成为一个窗体,在上面放一些控件,就可以组成一般的程序了。
若想在Activity界面内放控件(界面布局),必先在项目目录下的 res->layout->内的XML文件里面,一个XML文件可以对应一个Activity,也可以对应多个Activity,可以理解为,layout内的XML文件就是专门管理Activity控件的。(Activity要用到某个布局时,必须在其onCreat代码中进行绑定,否则将会无效(不显示))
XML文件内要注意使用的布局方式,需要添加设定布局的排列方式,例如, 因为漏掉了一句 android:orientation="vertical" 而导致界面一直不能像自己想象中的那样,故特此标记一下。还有XML文件还可以切换到可视化界面(注:第一次打开时是一个可视化的界面)这个在左下角可以进行切换, 刚开始学,还是先用XML的方式来进行布局,可以帮助自己对程序的理解。
具体为:
关于新创建的Activity,新建的方式是 右键包名-->新建类。
选择其所在的位置,名字,确定即可。(如图,都放到一个包)
然后让这个类继承Activity(注:最好使用IDE智能提示,这样会自动import进Activity,然后重写On Create(Bundle) 函数)
新创建好Activity之后,最好也在layout下新建一个与其对应的XML文件,此时新建的XML文件是空白的,可以将第一个XML文件的内容复制过去在修改成自己所需要添加的控件。
新建好Activity之后,需要在项目的 AndroidManifest.xml 文件内进行注册,具体方式是在 AndroidManifest.xml下<activity></activity>结点后面添加一对新的<activity></activity>
然后把android:name修改成这个类的路径(注:可以把第一个activity结点的内容复制下来,直接根据路径修改成新的activity的路径)
第一对activity结点内会包含一对 <intent-filter></intent-filter>标记(进行一些功能的使用确认,详细请看后面一节),只是带有这对结点的<activity></activity>(Activity)会被第一个启动。(如果不进行注册,则在AVD中生成APP中将会出现)
注册如下:
关于Activity之间的通信 ------ Intent
可以在Activity之间进行通信。稍后的一个加法程序内代码里面具体体现。
关于按钮事件,在android称为监听器, 要使用内部类来实现OnClickListener接口
以下代码是一个简单的加法程序的代码(有布局、按钮监听器、Activity之间的通信)
主Activity的相关代码:
- import android.os.Bundle;
- import android.app.Activity;
- import android.content.Intent;
- import android.view.Menu;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.TextView;
-
- public class MainActivity extends Activity {
-
- private EditText firstEditText;
-
- private TextView myTextView;
-
- private EditText secondEditText;
-
- private Button myButton;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main); //绑定布局文件
- firstEditText = (EditText)findViewById(R.id.firstEditText);
- myTextView = (TextView)findViewById(R.id.myTextView); //将控件变量实例化
- myTextView.setText("加上");
- secondEditText = (EditText)findViewById(R.id.secondEditText);
- myButton = (Button)findViewById(R.id.myButton);
- myButton.setText("点击");
-
- myButton.setOnClickListener(new MyButtonListener());
-
- }
-
-
- class MyButtonListener implements OnClickListener{
-
- @Override
- public void onClick(View v) {
-
- String first = firstEditText.getText().toString(); //获得控件中的字符串
- String second = secondEditText.getText().toString();
-
- Intent intent = new Intent();
-
- intent.putExtra("first", first);
- intent.putExtra("second", second);
-
- intent.setClass(MainActivity.this, Result.class);
-
- MainActivity.this.startActivity(intent);
- }
-
-
- }
-
- }
主Activity的控件配置XML文件的代码:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity" >
-
- <EditText
- android:id="@+id/firstEditText"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- <TextView
- android:id="@+id/myTextView"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- <EditText
- android:id="@+id/secondEditText"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- <Button
- android:id="@+id/myButton"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
-
- </LinearLayout>
显示结果的Activity的相关代码:
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.widget.TextView;
-
- public class Result extends Activity{
-
- private TextView myTextView = null;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
-
- super.onCreate(savedInstanceState);
- setContentView(R.layout.result_main);
- myTextView = (TextView)findViewById(R.id.myTextView2);
-
- Intent intent = getIntent();
-
- String first = intent.getStringExtra("first");
- String second = intent.getStringExtra("second");
-
- int myFirst = Integer.parseInt(first);
- int mySecond = Integer.parseInt(second);
-
- myTextView.setText((myFirst+mySecond) + " ");
- }
-
- }
显示结果控件配置XML的相关代码:
- <LinearLayout 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=".Result" >
-
- <TextView
- android:id="@+id/myTextView2"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
-
- </LinearLayout>
结果如下:
主activity界面:
结果activity界面:
总的来说,需要注意 布局的关联,以及各个activity之间的关系还有其自己的注册。