文档章节

Android 第五课——Activity基础

learn_more
 learn_more
发布于 2015/01/01 21:15
字数 964
阅读 175
收藏 7

1 Activity 概念 

    呈现在手机上的视图界面,类似于web程序的Servlet,它的父类是Context(上下文)。

2 Activity 创建

    1)新建一个继承Activity的类

    2)重写onCreate方法,这个方法会在Activity启动时第一个被调用,在这个方法中我们一般会有这两个步骤:

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    3)在AndroidManifest中注册Activity,AndroidManifest文件犹如web程序中的web.xml文件

       <activity
            android:name="com.hnust.moon.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".OtherActivity"
            android:label="other_activity">
        </activity>

    4)一个Activity只是一个视图,我们需要在视图中设置UI布局,那么还要放置组件在Activity中。

3 多个Activity之间相互切换

    假设我们按照以上步骤已经创建了两个Activity,这时我们可以通过intent进行数据动作调用:

    MainActivity中:

    Intent intent = new Intent();
    intent.setClass(MainActivity.this, OtherActivity.class);
    intent.putExtra("name", "heweipo_test");
    MainActivity.this.startActivity(intent);
    OtherActivity中
    Intent intent = this.getIntent();
    String value = intent.getStringExtra("name");
    .....

4 Activity中添加菜单

    1)首先继承ActionBarActivity

    2)重写onCreateOptionsMenu和onOptionsItemSelected;前者是按下菜单按钮时触发的事件,我们一般在这里初始化菜单的组件;后者是当菜单的具体某一项被点击时触发,这里主要是编写每一个菜单项的具体业务功能。

    3)java代码初始化菜单组件如下:onCreateOptionsMenu 具体实现

    menu.add(0, 8080, 1, R.string.exit);//menu.add(group,itemID,order,title);
    menu.add("file");
    SubMenu sub = menu.addSubMenu("sub"); 
    sub.add(group,itemID,order,title);//添加子菜单使用 
    getMenuInflater().inflate(R.menu.main, menu); //从资源文件中找到name为main.xml的文件然后强制转为当前activity下的菜单。

    XML文件实现

    <item
        android:id="@+id/mainActivity_operation"
        android:title="@string/mainActivity_operations"
        >
        <menu>
            <item
                android:id="@+id/menu_addition"
          android:title="@string/addition"
          />
            <item
                android:id="@+id/menu_subtraction"
          android:title="@string/subtraction"
          />
        </menu>
      </item>
    <group android:id="group"> 菜单分组控制
        <item android:id="@+id/file2" android:title="file2"></item>
        <item android:id="@+id/file3" android:title="file3"></item>
    </group>

    4)关于菜单项点击时具体处理:onOptionsItemSelected

        int id = item.getItemId();
        switch (id) {
  case R.id.action_settings:
   break;
  case 8080:
   finish();
   break;
 }
        return super.onOptionsItemSelected(item);

5 横屏与竖屏

1)activity初始化时或者横竖屏切换时 onCreate方法都会被调用。关于这个问题,如果我们的在activity中刚刚输入了部分内容,结果

因为屏幕横竖发生变化,会不会导致以前内容丢失呢?Google是这样解决的问题的,如果横屏和竖屏中layout的组件有相同的ID,那么Google会缓存这部分内容,根据ID在对应的组件上添加以前的内容,但是要是没有ID,或者找不到ID,那么这些内容肯定会丢失!另外,赋值这些内容并不是在onCreate方法调用之前而是之后,所以在onCreate方法是不可能获取到缓存的值的,同时我们也不能在onCreate方法中为组件赋值,因为会被覆盖。横屏或竖屏分开布局只要新建两个与layout同目录下的文件夹layout_land与layout_port.

2)onConfigurationChanged(configure)

<activity android:name="..." android:configChanges="orientation|keyboardHidden|screen...">
    <intent-filter>........</intent-filter>
</activity>

如果我们在配置文件如下指定,那么横竖屏替换时,就不会调用onCreate方法,而是调用onConfigurationChanged

this.getResources().getConfiguration().orientation ,configure.orientation  同样可以判断方向。

3)控制横屏与竖屏是在AndroidManifest文件中Activity中设置android:screenOrientation值,有如下几个值:

  1. unspecified 默认值,由系统判断状态自动切换  

  2. landscape 横屏  

  3. portrait 竖屏  

  4. user 用户当前设置的orientation值 

  5. behind 下一个要显示的Activity的orientation值 

  6. sensor 使用传感器 传感器的方向  

  7. nosensor 不使用传感器 基本等同于unspecified


© 著作权归作者所有

learn_more
粉丝 93
博文 240
码字总数 210196
作品 0
深圳
程序员
私信 提问
使用Kotlin构建MVVM应用程序—第五部分:LiveData

目录 使用Kotlin构建MVVM应用程序—总览篇 使用Kotlin构建MVVM应用程序—第一部分:入门篇 使用Kotlin构建MVVM应用程序—第二部分:Retrofit及RxJava 使用Kotlin构建MVVM应用程序—第三部分:...

ditclear
2018/08/03
0
0
转载:最强最全干货分享:Android开发书籍、教程、工具等

最全干货分享,本文收集整理了Android开发所需的书籍、教程、工具、资讯和周刊各种资源,它们能让你在Android开发之旅的各个阶段都受益。 入门 《Learning Android(中文版)》 本书为Andro...

拉偶有所依
2015/01/09
195
3
最强最全干货分享:Android开发书籍、教程、工具等

最全干货分享,本文收集整理了Android开发所需的书籍、教程、工具、资讯和周刊各种资源,它们能让你在Android开发之旅的各个阶段都受益。 入门 《Learning Android(中文版)》 本书为Andro...

拉偶有所依
2015/01/09
497
2
QT实战-计算器-刘桂林-专题视频课程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26787115/article/details/83580590 QT实战-计算器—152人已学习 课程介绍 使用Qt Creator开发一个具有运算...

刘某人程序员
2018/04/27
0
0
在项目中值得学习和利用的Android开源项目分类汇总

http://blog.csdn.net/dianyueneo/article/details/40683285 Android开源项目第一篇——个性化控件(View)篇 包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、Pro......

_FQ_
2014/12/24
19
1

没有更多内容

加载失败,请刷新页面

加载更多

查看线上日志常用命令

cat 命令(文本输出命令) 通常查找出错误日志 cat error.log | grep 'nick' , 这时候我们要输出当前这个日志的前后几行: 显示file文件里匹配nick那行以及上下5行 cat error.log | grep -C ...

xiaolyuh
25分钟前
3
0
六、Java设计模式之工厂方法

工厂方法定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 类型:创建型 工厂方法-使用场景: 创建对象需要大量重复的代码 ...

东风破2019
31分钟前
3
0
win服务器管理遇到的一系列问题记录

有些小伙伴在使用iis7远程桌面管理工具的时候总是会遇到一系列的问题,下面就是为大家介绍一下服务器日常管理过程中出现的问题及我的解决办法和心得。希望能帮到大家。   拒绝服务器重新启...

1717197346
38分钟前
4
0
flutter 剪切板 复制粘贴

复制粘贴功能 import 'package:flutter/services.dart'; Clipboard.setData(ClipboardData(text:_text));Clipboard.getData;...

zdglf
41分钟前
3
0
如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?

面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费...

米兜
41分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部