熟悉Android首先要熟悉Android应用程序目录:
src目录:存放应用程序源代码 ;
gen目录:存放R文件,该文件是项目创建时自动生成,是只读文件,此文件存储了该项目中的所有资源的索引;
Android4.2.2目录:存放Android系统提供的库;assets目录:存放应用中用到的类似视频文件、MP3等一些媒体文件;
bin目录:存放apk文件(Android应用程序编译后的可执行程序);
res目录:资源文件夹,存放图片(drawable文件夹)、页面布局文件(layout文件夹)、文字信息(values文件夹);
AndroidManifest.xml:功能清单文件,该文件列出了应用中所使用的所有组件,如Activity、Service等,此文件非常重要 ;
default.properties:该文件存放了应用对应的一些环境配置,如应用要求运行的最低Android版本。一般不需要手动去更改;
proguard.cfg:混淆工具
然后我们来初步了解下Android四大组件中的Activity。Activity是Android组件中最基本也是最常用的组件,在一个Android应用中,一个Activity通常占据一个窗口界面,通常我们把它看成是撑门面的。因为Activity是用户与程序交互的界面,而用户在使用手机时用的最多的就是页面的跳转,而Android应用程序的生存期并不是由应用本身直接控制的,而是由 Android系统平台进行管理的,所以掌握Activity生命周期非常重要。
onCreate():创建Activity调用,用于Activity的初始化,在Activity生命周期中只执行一次,适用于实例化对象;
onStart():Activity:在屏幕上对用户可见时调用 ;
onResume():Activity开始和用户交互的时候调用,这时该Activity是在Activity栈的顶部 ;
onPause():Activity被暂停时调用,被其他的Activity挡在后面,这里可以做一些清理和保存工作 ;
onStop():Activity被停止或者Activity变成不可见时调用 ;
onDestroy():Activity被从内存中移除,一般发生在执行finish方法时或者Android回收内存的时候。
比如,创建一个有文本输入框和一个登陆按钮的界面
public class MainActivity extends Activity {
//属性
private EditText username;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置显示的布局文件
setContentView(R.layout.activity_main);
//获取界面的组件
Button login = (Button)findViewById(R.id.button_login);
username = (EditText)findViewById(R.id.user_name);
//添加监听器
login.setOnClickListener(click_listener);
System.out.println("执行了第一个Activity的onCreate方法");
}
@Override
protected void onStart() {
super.onStart();
System.out.println("执行了第一个Activity的onStart方法");
}
@Override
protected void onResume() {
super.onResume();
System.out.println("执行了第一个Activity的onResume方法");
}
@Override
protected void onPause() {
super.onPause();
System.out.println("执行了第一个Activity的onPause方法");
}
@Override
protected void onStop() {
super.onStop();
System.out.println("执行了第一个Activity的onStop方法");
}
@Override
protected void onDestroy() {
super.onDestroy();
System.out.println("执行了第一个Activity的onDestroy方法");
}
当启动程序时,会执行onCreate,onStart,onResume 方法
然后当跳转到第二个界面因为Activity被停止调用不可获焦所以执onPause方法,又因为Activity被第二个界面挡住完全不可见所以执行onStop方法,
最后是Intent。Intent,信使,协助组件之间的通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。
//创建动作事件监听器对象(匿名内部类)
OnClickListener click_listener = new OnClickListener(){
//监听点击的方法
public void onClick (View v){
Toast.makeText(MainActivity.this,username.getText().toString(),3).show();
//验证
if(username.getText().toString().equals("tiaozhuan")){
//跳转到第二个界面
Intent intent = new Intent(MainActivity.this,SecondActivity.class);//信使
intent.putExtra("name",username.getText().toString());
MainActivity.this.startActivity(intent);
}else{
//提示信息
Toast.makeText(MainActivity.this,"登陆失败",3).show();
}
}
};
在第二个界面添加了背景图片,添加背景图片只用把图片导入drawable中,然后在第二个布局文件中加上一句android:background="@drawable/xiamu"就行了,效果如上面第二张图片所示,然后是背景音乐的问题,首先点击windows-->show view-->other-->
Android-->File Explorer-->ok,接着在File Explorer中的mnt/sdcard中导入歌曲,然后在第二个Activity中添加代码,当然在创建第二个Activity后要在AndroidManifest.xml中注册
public class SecondActivity extends Activity{
MediaPlayer mp = new MediaPlayer();
/**
* Activity的入口
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置显示的布局文件
setContentView(R.layout.activity_second);
//获取Intent
Intent intent = getIntent();
//取出保存在intent中的信息
String username = intent.getStringExtra("name");
//获取到布局文件中的文本组件
TextView show_username = (TextView)findViewById(R.id.show_username);
//设置文本组件上的文本为第一个界面传过来的用户名
show_username.setText(username);
try {
mp.setDataSource("sdcard/Emilia - Big Big World.mp3");
mp.prepare();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onStart() {
super.onStart();
//播放音乐
try {
mp.start();
}catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onPause() {
super.onPause();
//暂停音乐
mp.pause();
}
}