Hi,众猿们,今天给大家讲讲在安卓开发中如何使用Activity吧,主要有以下几个问题:

先谈谈Activity的创建和使用,首先,我们在项目的res/layout文件夹下创建一个xml布局文件(暂且命名为main.xml吧,众猿们要记住布局文件这个词),并在其中添加一个按钮控件,其内容如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <Button        android:id="@+id/btnButton"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Hello World!"/>LinearLayout>

接下来,我们新建一个Activity(命名为MainActivity,其继承自android.content包下的Activity类),其代码为:

public class MainActivity extends Activity {    Button btnButton;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        btnButton = (Button) findViewById(R.id.btnButton);        btnButton.setOnClickListener(new OnClickListener() {            public void onClick(View v) {                Toast.makeText(MainActivity.this, "按钮被点击", Toast.LENGTH_LONG).show();            }        });    }}

最后,就是在Android清单文件中注册我们自定义的Activity了,我们直接在application标签下添加如下标签即可:

<activity    android:name="lmz.activityexample.atys.MainActivity"/>

好了,一个Activity就创建完毕了(众猿们是不是觉得本猿猿说得很繁琐,其实本猿猿也是这样觉得的)。

接下来,就是怎么取消activity上面的标题栏了(titlebar),
我们可以在自定义activity中添加代码:

 requestWindowFeature(Window.FEATURE_NO_TITLE);

也可以在清单文件中为activity添加属性:

android:theme="@android:style/Theme.Black.NoTitleBar"

如果我们在清单文件的application标签中添加属性:

android:theme="@android:style/Theme.Black.NoTitleBar"

则应用中所有的activity都不会有标题栏。

接下来是activity全屏的方法:
在activity中添加代码:

   requestWindowFeature(Window.FEATURE_NO_TITLE);   getWindow().setFlags(   WindowManager.LayoutParams.FLAG_FULLSCREEN,    WindowManager.LayoutParams.FLAG_FULLSCREEN);  

在清单文件中为activity添加属性:

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

接下来介绍清单文件中activity的其它属性:

  • android:launchMode:配置activity的启动模式(四种)
  • android:screenOrientation:设置activity的方向,这个界面就不会随着屏幕旋转了,其主要有两个值:landscape(横屏)和portrait(竖屏)
  • android:configChanges:设置手机状态改变时(如横竖屏切换)时activity是否接受该变化,当这些变化发生时,如果activity不接受的话,那么系统就会接受到这些变化而去重启activity,我们一般将该值设为(API 18以上):orientation|screenSize,这样当屏幕旋转时activity会接受该变化,从而不会被系统重启,这是activity的onConfigurationChanged方法会被调用。

接下来是退出应用的方法:在退出应用时,我们要销毁掉所有的activity,我们先来定义一个基类activity:

public class ActivityList {    private static List mAtyList = new ArrayList();    public static void add(Activity activity){        mAtyList.add(activity);    }    public static void remove(Activity activity){        mAtyList.remove(activity);    }    public static void quitApp(){        for(Activity activity : mAtyList){            if (!activity.isFinishing()) {                activity.finish();            }        }    }}   

在定义一个基类的activity:

public class BaseActivity extends Activity{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        ActivityList.add(this);    }    @Override    protected void onDestroy() {        super.onDestroy();        ActivityList.remove(this);    }}

这样当我们通过ActivityList类名调用quitApp方法时,就可以完全退出应用了。
接下来,我们聊聊Intent(意图)对象,当我们需要从一个activity跳转到另一个activity(即从一个界面跳转到另一个界面)时,就需要使用意图对象,意图分为两种,一种是显式的,没什么可讲,一种是隐式的,可以用来启动其它应用的activity。在接触隐式意图前,我们先了解一下意图过滤器,意图过滤器由action、category和data三个属性组成,意图过滤器至少要有一个action值,可以有多个category值,一般要配置在清单文件的activity标签下。当我们需要使用隐式意图启动activity时,一般需要也需要为意图配置action和category值,这样系统会自动分析该意图并启动具有相同意图过滤器的activity(优先匹配action值)。
当应用被启动时,系统也是根据activity的意图过滤器来决定首先启动那个应用时,该意图过滤器的值为:

<intent-filter>    <action android:name="android.intent.action.MAIN" />    <category android:name="android.intent.category.LAUNCHER" />intent-filter>

在用意图启动activity时,我们还可以利用意图来传递数据,像传递整数、字符串等数值时,可以直接放在intent对象类,也可以利用Bunlde对象,当需要传递一个类时,需要该类实现了Serializable序列化接口。
在意图过滤器中,还有一个属性:data,该属性指定了启动该activity时需要的数据,只有当意图中携带的数据与启动启动activity时需要的数据一致时,该activity才会被启动,其由五部分组成:

  • android:schmem
  • android:host
  • android:port
  • android:path
  • android:mimeType

如:用隐式意图来启动系统浏览器访问指定网址:

 Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("www.baidu.com")); startActivity(intent);

此外,启动activity并接受返回结果主要涉及到三个方法:

  • startActivityForResult
  • setResult
  • onActivityResult

    最后还是每日一乐吧:

从前有个全国管理系统,是孙中山做的设计,老蒋做的实现,结果老毛写了个病毒,趁着日本黑客对系统做攻击的当口,拿到了管理员权限,把原来那批程序员给隔离了。老邓接手以后,重构代码,出了个2.0版,为了开发速度,遗留了一堆BUG没处理。人们纷纷质疑:是不是核心构架太单一,双核会不会好点?

更多相关文章

  1. 分享两种最简单的Android打渠道包的方法
  2. 4.0、Android(安卓)Studio配置你的构建
  3. Android中各种Adapter的使用方法
  4. 采用busybox 代替android 自带的shell
  5. Android(安卓)NDK开发技巧二
  6. Android(安卓)APK加固后如何签名
  7. Android启动过程以及各个镜像的关系
  8. OpenCV4Android(安卓)环境配置(最新详细教程)
  9. Android(安卓)Q之提前适配攻略(五)(存储权限变更)

随机推荐

  1. Android动画之translate(位移动画)
  2. Android中真正的Player
  3. Android(安卓)Studio编译使用了Maven的工
  4. 【学习Android遇到的错误】Unable to res
  5. Android中如何使用自定义对话框
  6. 【android】对canvas的translate(),save()
  7. android OOM的那些事
  8. Android设置上下边框或者左右边框
  9. AS中一个报错解决:LoggedErrorException:
  10. Android: How to download the latest zi