建立一个简单的用户接口
使用android studio建立一个布局xml文件,在这个布局文件中我们将一些简单的组件添加到用户界面中,特别值得注意的是android中一个Activity代表的就是一个用户界面,也就是手机屏幕上显示的内容。建立一个空白的linear layout就相当于建立了手机上一个空白的界面。默认的android的程序中就有一个layout,activity_main,修改其Relative layout为linear layout,并且删除TextView组件的声明。并且设置linear layout属性。
在activity_main布局文件中添加EditText组件和Button组件,并且设置属性。特别注意组件的属性android:layout_width和andriod:layout_height属性一定要设置,否则无法运行app。具体代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<EditText
android:id="@+id/edit1"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="Enter a Message"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send"
android:id="@+id/button1"/>
</LinearLayout>
创建一个Intent对象,Intent是意图的意思,其作用是用于在各个activity之间传递消息。Intent使用比较复杂,现在只是简单的使用一下。
创建一个Intent对象,用于在设计的两个activity之间传递消息。
mainactivity类中的具体方法:
1 protected void onCreate(Bundle savedInstanceState) {
2 super.onCreate(savedInstanceState);
3 setContentView(R.layout.activity_main);
4 Button button=(Button)findViewById(R.id.button1);
5 button.setOnClickListener(new OnClickListener() {
6
7 @Override
8 public void onClick(View arg0) {
9 // TODO Auto-generated method stub
10 Intent intent=new Intent();
11 intent.setClass(MainActivity.this, DisplayMessageActivity.class);
12 EditText edit=(EditText)findViewById(R.id.edit1);
13 String message=edit.getText().toString();
14 intent.putExtra("message", message);
15 startActivity(intent);
16 }
17 });
18 }
View Code
在上述的代码中intent。setClass(),有两个参数,第一个参数是,要启动另一个activity的activity的上下文,第二个参数是要被调用的activity,intent.putExtra()是用来传递两个activity之间的数据,当然这是最简单的传递方法,只能用来传递简单的数据类型,要想传递复杂的数据类型,还有其他的方法,不在这里叙述。
activity_main是已经编写好了,接下来可以编写要跳转的activity了,也就是intent.setClass()的第二个参数,DisplayMessageActivity,并且在DisplayMessageActivity完成对传递数据的显示动作,用TextView显示,其中TextView是DisplayMessageActivity对应的布局文件,由第一个activity传递的数据。
1 public class DisplayMessageActivity extends Activity{
2 @Override
3 protected void onCreate(Bundle savedInstanceState) {
4 super.onCreate(savedInstanceState);
5 setContentView(R.layout.display_message);
6 Intent intent=this.getIntent();
7 String message = intent.getStringExtra("message");
8 TextView view=(TextView)findViewById(R.id.text);
9 view.setText(message);
10 }
11 }
View Code
DisplayMessageActivity类创建好以后,需要需要为DisplayMessageActivity设计一个布局文件,因为既然我要从第一个activity跳转到第二个activity,那么第二个activity就要有相应的布局,这也是创建activity必须要有的参数。
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 android:layout_width="match_parent"
3 android:layout_height="match_parent"
4 android:orientation="horizontal"
5 >
6 <TextView
7 android:id="@+id/text"
8 android:layout_width="match_parent"
9 android:layout_height="wrap_content"/>
10 </LinearLayout>
View Code
最后我们只要修改一下AndroidManifest.xml即可,app中的每个activity只要想被使用,都都要AndroidManifest中进行注册,如:
<activity
android:name="com.example.dya1118.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>
这个是android程序自动生成的,其为activity设置相应的属性,android:name是设置app的名字
android:label设置的程序打开时显示的名字
<intent-filtert>名为意图过滤器,则是用来过滤activity,主要作用是辨别不同activity,以便调用activity
其中Main 和LAUNCHER都是用来保证MainActivity是app的入口,并且是要加载的。
在其下面新添加一个新的activity标签,用来注册activity的。代码:
<activity
android:name="com.example.dya1118.DisplayMessageActivity"
android:label="@string/DisplayMessage">
</activity>
View Code
这样一个简单的android项目就完成了。