今天简单介绍一下android中的控件资源,我们从一个登陆界面开始讲起,先贴代码:
准备工作:先在eclipse中创建一个android项目,我的项目名称是demo_login。
(1)在项目文件夹的 res/layout/ 文件目录下打开 activity_main.xml :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="用户名:" />
<EditText
android:id="@+id/et_username"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="密 码:" />
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/btn_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="登陆" />
<Button
android:id="@+id/btn_quit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="取消"/>
</LinearLayout>
</LinearLayout>
(2)然后打开项目 src/ 目录下的 MainActivity.java 文件:
package com.example.demo_login;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private Context mCtx;
private EditText mUsername;
private EditText mPassword;
private Button mLogin;
private Button mQuit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCtx = MainActivity.this;
mUsername = (EditText) findViewById(R.id.et_username);
mPassword = (EditText) findViewById(R.id.et_password);
mLogin = (Button) findViewById(R.id.btn_login);
mQuit = (Button) findViewById(R.id.btn_quit);
mLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = mUsername.getText().toString();
String password = mPassword.getText().toString();
if(username.equals("admin") && password.equals("admin")){
Toast.makeText(mCtx, "登陆成功", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(mCtx, "登陆失败", Toast.LENGTH_SHORT).show();
}
}
});
mQuit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
@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;
}
}
好了,代码就这么多,现在开始讲解:
activity_main.xml 文件是 MainActivity 的布局文件,android采用xml的方式配置控件,讲界面和逻辑分开,让开发更有效率,同时也简化了代码。我们先来看activitt_main.xml
定义TextView:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="用户名:" />
定义EditText:
<EditText
android:id="@+id/et_username"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
定义Button:
<Button
android:id="@+id/btn_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="登陆" />
LinearLayout:流式布局,主要用来控制控件的排列方式,如果不明白,请看后面章节
TextView: 显示固定文本
EditText:文本输入框
Button:按钮
其中EditText 和 Button 设置了 id 属性,是为了我们在MainActivity中可以找到资源文件,并调用它们。现在看一下怎么调用:
我们看到MainActivity的 onCreate()方法, 程序启动后首先会进入这里:
这里就说明我们的布局文件activity_main.xml 是用来填充MainActivity的,setContentView()方法用来设置Activity的加载的布局文件。
setContentView(R.layout.activity_main);
我们把两个输入框和两个按钮都设置成了成员变量,并采用findViewById(R.id.___)方法从布局文件中找到它们:
private EditText mUsername;
private EditText mPassword;
private Button mLogin;
private Button mQuit;
mUsername = (EditText) findViewById(R.id.et_username);
mPassword = (EditText) findViewById(R.id.et_password);
mLogin = (Button) findViewById(R.id.btn_login);
mQuit = (Button) findViewById(R.id.btn_quit);
然后我们给mLogin 登陆按钮设置了鼠标点击事件,如果点击登陆按钮,就会触发里面的 onClick() 方法,里面的功能很简单,就是从EditText中获取到输入的字符串,然后判断是否等于”admin“,如果是则在屏幕弹出Toast登陆成功。说道这里,Toast是什么东西,其实就是提示性的一个气泡,只要知道怎么使用就好了。
mLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = mUsername.getText().toString();
String password = mPassword.getText().toString();
if(username.equals("admin") && password.equals("admin")){
Toast.makeText(mCtx, "登陆成功", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(mCtx, "登陆失败", Toast.LENGTH_SHORT).show();
}
}
});
然后mQuit按钮的点击事件调用了 finish() 方法,就是关闭Activity,就不用讲解了吧。
介绍一下Toast:
Toast是一种比较亲切的提示,作用就是给用户提示信息,只是它显示最快,最小,所以称之为亲切。使用很常见,使用方法:
Toast.makeText(mCtx, "登陆成功", Toast.LENGTH_SHORT).show();
可能有人会问 mCtx 这个参数是什么意思,简单的说这是Context上下文对象,专门用来关联与Activity或Application相关的上下文(资源),我们看 mCtx的初始化:
mCtx = MainActivity.this;
我比较喜欢在每个Activity中都创建一个 mCtx 对象,这样使用起来就会很方便,比如说创建Toast或者Adapter时很省事。个人使用Toast 我其实喜欢在Activity中封装一个方法专门用来显示Toast:
private void showToast(String words){
Toast.makeText(mCtx, words, Toast.LENGTH_SHORT).show();
}
这样每次要使用Toast的时候,我只需要调用 showToast("要显示的语句")。 这样显得更加简洁,当然是个人爱好了。
好了,第一次就讲到这里吧,我觉得也没有什么好写的,控件的话主要是知道,会用就可以了,当然也可以自定义控件,在后面的章节再来讨论。
下面附上 Android文档 的 chm文件,如果要查文档,就可以用这个。当然推荐是到google官网上去查咯,被封了,没钱翻墙,就将就用吧!