安卓入门
最近开始安卓上手,也还没几天,没写什么大的东西,就先总结一下入门知识。
其实要上手还是不算太难,因为安卓应用的开发语言用的是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; } }