首页 > 代码库 > android学习心得之Activity

android学习心得之Activity

安卓是什么

android是基于linux内核实现的操作系统,不同与其他系统的是,安卓系统在分配进程时,每个进程先安装了jvm,每个安卓app都运行在独立的jvm上,这样安卓app之间就不会发生冲突了。

安卓基本的内容

Activity

Activity是直接与用户进行接触的界面,一个app里面可以包含一个或多个Activity。
Acitivity里面有一些常见的方法:
首先是Toast()方法,这个方法可以弹出消息框。
  1. ackage com.example.newcardgame;
  2. import android.os.Bundle;
  3. import android.app.Activity;
  4. import android.view.Menu;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. import android.widget.Toast;
  9. public class MainActivity extends Activity {
  10. @Override
  11. protected void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.activity_main);
  14. Button button1 = (Button)findViewById(R.id.button1);
  15. button1.setOnClickListener(new OnClickListener(){
  16. public void onClick(View v) {
  17. Toast.makeText(MainActivity.this, "You clicked Button1",
  18. Toast.LENGTH_SHORT).show();
  19. }
  20. });
  21. }
  22. @Override
  23. public boolean onCreateOptionsMenu(Menu menu) {
  24. // Inflate the menu; this adds items to the action bar if it is present.
  25. getMenuInflater().inflate(R.menu.main, menu);
  26. return true;
  27. }
  28. }

Activity中的menu:
手机的屏幕是有限的,为了节约显示空间,安卓系统有menu这一个组件,可以让用户在需要的时候才点击munu来选择一些比较少用的选项,而不是让所有选项都布满整个屏幕。
使用menu很简单,首先是在res文件夹中的menu文件夹中的main.xml文件夹中添加选项:
  1. <menu xmlns:android="http://schemas.android.com/apk/res/android" >
  2. <item
  3. android:id="@+id/action_settings"
  4. android:orderInCategory="100"
  5. android:showAsAction="never"
  6. android:title="@string/action_settings"/>
  7. <item
  8. android:id ="@+id/add_item"
  9. android:title="Add"/>
  10. <item
  11. android:id="@+id/remove_item"
  12. android:title="Remove"/>
  13. </menu>
接着首先是要在Activity中显示menu,用onCreateOptionsMenu方法里面添加getMenuInflater().inflate(R.menu.main, menu);
这行代码,然后是添加点击选项的选择事件,用onOptionsItemSelected方法
  1. package com.example.newcardgame;
  2. import android.os.Bundle;
  3. import android.app.Activity;
  4. import android.view.Menu;
  5. import android.view.MenuItem;
  6. import android.view.View;
  7. import android.view.View.OnClickListener;
  8. import android.widget.Button;
  9. import android.widget.Toast;
  10. public class MainActivity extends Activity {
  11. @Override
  12. protected void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_main);
  15. Button button1 = (Button)findViewById(R.id.button1);
  16. button1.setOnClickListener(new OnClickListener(){
  17. public void onClick(View v) {
  18. Toast.makeText(MainActivity.this, "You clicked Button1",
  19. Toast.LENGTH_SHORT).show();
  20. }
  21. });
  22. }
  23. public boolean onCreateOptionsMenu(Menu menu) {
  24. getMenuInflater().inflate(R.menu.main, menu);
  25. return true;
  26. }
  27. public boolean onOptionsItemSelected(MenuItem item){
  28. switch(item.getItemId()){
  29. case R.id.add_item:
  30. Toast.makeText(MainActivity.this, "you clicked add",
  31. Toast.LENGTH_SHORT).show();
  32. break;
  33. case R.id.remove_item:
  34. Toast.makeText(MainActivity.this, "you clicked remove",
  35. Toast.LENGTH_SHORT).show();
  36. break;
  37. default:
  38. }
  39. return true;
  40. }
  41. }

既然一个Activity是一个界面,一个程序往往是需要在多个界面之间转换,因此需要一个中转的组件,Intent就是一个这样的组件,他实现Activity之间的切换,还帮助页面之间传递数据。
Intent有两种用法,显示Intent和隐式Intent
显示Intent,顾名思义就是用new方式创建的Intent里面指明需要切换的Activity
首先先创建一个新的Activity,并且在layout里面设置新的界面。在Activity通过创建Intent来创建新Activity
  1. package com.example.newcardgame;
  2. import android.os.Bundle;
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.view.Menu;
  6. import android.view.MenuItem;
  7. import android.view.View;
  8. import android.view.View.OnClickListener;
  9. import android.widget.Button;
  10. import android.widget.Toast;
  11. public class MainActivity extends Activity {
  12. @Override
  13. protected void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.activity_main);
  16. Button button1 = (Button)findViewById(R.id.button1);
  17. button1.setOnClickListener(new OnClickListener(){
  18. public void onClick(View v) {
  19. Intent intent = new Intent(MainActivity.this,SecondActivity.class);
  20. startActivity(intent);
  21. }
  22. });
  23. }
  24. }
隐式Intent
隐式Intent不用在new Intnt的时候指明需要转换的Acivity只需要指明action类型和种类,在AndroidMainfest.xml文件种配置每个Acitvity的种类,在程序运行的时候就会通过拦截器实现找到实际实现的Activity。
  1. <activity android:name=".SecondActivity">
  2. <intent-fileter>
  3. <action android:name="com.example.activityest.ACTION_START" />
  4. <category android:name="android.intent.category.DEFAULT" />
  5. </intent-filter>
  6. </activity>
  1. button1.setOnclickListener(new OnClickListener(){
  2. public void onClick(View v){
  3. Intent intent = new Intent("com.example.activitytest.ACTION_START");
  4. intent.addCategory("com.example.activitytest.MY_CATEGORY");
  5. startActivity(intent);
  6. }
  7. });
通过Intent可以向别的Activity以键值对的方式传递数据
intent.putExtra("extra_data",data);
数据接收Activity通过如下方式获得数据:
  1. Intent intent = getIntent();
  2. String data = inent.getStringExtra("extra_data");






来自为知笔记(Wiz)


android学习心得之Activity