最近开始安卓上手,也还没几天,没写什么大的东西,就先总结一下入门知识。
其实要上手还是不算太难,因为安卓应用的开发语言用的是Java,有点基础了好歹。
一、项目新建
首先要把安卓的开发环境搭建好,具体内容不多说,然后就可以开始新建一个项目了。在菜单中选择【File】|【New】|【Android Application Project】,起好项目名以后点击【Next】|【Next】,可以选择改一下图标或者别的参数,接着一个项目就新建成功了。
二、模拟器
Android的项目都是在手机上运行的,所以会需要一个Android模拟器来运行程序,当然,手机更好。鉴于模拟器的反应速度实在是不敢恭维,所以最好打开Eclipse之后的第一步就是启动模拟器。
点击图标栏的Android Virtual Device Manager,也就是一个绿色的小手机一样的图标。在Device Definitions中选择一个device来创建,也可以New一个Device 然后自己设置参数。创建完了以后再点击Android Virtual Device Manager图标,选中刚刚创建的模拟器然后start就OK了。
三、(嗯,这个标题不知道起什么才好。。)
跟一般的Java项目一样,src文件夹下面包含的就是项目的包和源文件,可以看到MainActivity.java文件在文件夹下的包里,暂时理解为这就是我们写代码的地方,一个activity通常就是一个屏幕。在res文件夹下的layout文件夹里面可以看到一个activity_main.xml文件,是设计和编写UI的地方。我们可以选择直接拖动组件放到界面上,也可以选择在文件中直接写代码,对代码不熟悉的话可以先选择第一种方式。
UI界面的代码如下,这是只添加了一个TextView组件的。
<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
android:id="@+id/textId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="27dp"
android:layout_marginTop="92dp"
android:text="账号" />
</RelativeLayout>
在MainActivity中要获取到界面上的组件就要反复用到一个FindViewById的方法以及强制转换,要对组件实现监听用的是setOnClickListener或者setOnTouchListener等方法,而不是Java中的add。要实现监听效果要新定义一个内部类或者直接匿名内部类,也可以直接让activity实现监听接口,好像更简单点。
如果仅仅在一个界面中操作那么后面的实现步骤跟以前Java区别不大,如果要实现几个界面的切换就要用到一个Intent对象了。
Intent,简单的说就是一个意图,有点抽象...用setClass(MainActivity.this,LoginActivity.class)方法,第一个参数是当前的activity,第二个参数是要转换到的aactivity,然后调用startActivity(intent),记得传入intent参数进去。Intent对象也可以传递数据给要跳转的界面,调用putExtra("Id", Id),然后在转换到的界面里调用getStringExtra("Id")来得到该数据。
下面是一个简单的例子。
package com.example.hello;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private static final OnClickListener MyListener = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取界面上的登陆按钮
Button LoginBt = (Button)this.findViewById(R.id.LoginBt);
//给按钮设置监听器
LoginBt.setOnClickListener(new MyListener());
}
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;
}
//定义一个内部类实现监听器接口
public class MyListener implements OnClickListener{
//点击按钮的方法
public void onClick(View arg0) {
//获取账号输入框和密码输入框
EditText textId = (EditText)MainActivity.this.findViewById(R.id.editId);
EditText textPassword = (EditText)MainActivity.this.findViewById(R.id.editPassword);
//获取框中的文本内容
String Id = textId.getText().toString();
String Password = textPassword.getText().toString();
//实例化一个Intent类的对象
Intent intent = new Intent();
//把账号输入框和密码输入框中的文本存入Intent对象
intent.putExtra("Id", Id);
intent.putExtra("Password", Password);
//如果账号密码相同的话
if(Id.equals(Password)){
//Toast对象输出提示内容
Toast.makeText(MainActivity.this, "right!", 5).show();
//跳转到第二个界面
intent.setClass(MainActivity.this, LoginActivity.class);
startActivity(intent);
}else{
Toast.makeText(MainActivity.this, "error!", 5).show();
}
}
}
}
然后是转换到的第二个界面。
package com.example.hello;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.widget.EditText;
public class LoginActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//实例化一个Intent类的对象
Intent intent= this.getIntent();
//获取账号输入框和密码输入框
EditText textId = (EditText)this.findViewById(R.id.editId);
EditText textPassword = (EditText)this.findViewById(R.id.editPassword);
//获取Intent对象中存储的内容
String Id = intent.getStringExtra("Id");
String Password = intent.getStringExtra("Password");
//设置账号输入框和密码输入框中的内容
textId.setText(Id);
textPassword.setText(Password);
}
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.login, menu);
return true;
}
}