博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 第五课——Activity基础
阅读量:6443 次
发布时间:2019-06-23

本文共 2665 字,大约阅读时间需要 8 分钟。

hot3.png

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文件

       
            
                
                
            
                
        

    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文件实现

    
        
            
            
        
          
 菜单分组控制        
        
    

    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)

    
........

如果我们在配置文件如下指定,那么横竖屏替换时,就不会调用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

转载于:https://my.oschina.net/heweipo/blog/362998

你可能感兴趣的文章
小tip:纯CSS让overflow:auto页面滚动条出现时不跳动
查看>>
Linq Like
查看>>
Linux知识积累(4) Linux下chkconfig命令详解
查看>>
centos关机与重启命令
查看>>
[Eth]Mac/Phy/mdio/Rgmii
查看>>
C++中的函数指针和函数对象总结
查看>>
ELK学习总结(3-2)elk的过滤查询
查看>>
快速定位oracle故障-恩墨
查看>>
Redis可视化工具 Redis Desktop Manager
查看>>
Go基础系列:为select设置超时时间
查看>>
Android网络请求之OkHttp框架
查看>>
《Apache Kafka实战》读书笔记-调优Kafka集群
查看>>
小程序开发事项
查看>>
福利 | 2018各大技术大会资料汇总(可下载)
查看>>
寻找下一代CTO - 激发潜能把握成功!!
查看>>
用DELPHI 开发压缩、解压、自解压、加密
查看>>
Linux命令行得到系统IP
查看>>
SQL Server索引的维护 - 索引碎片、填充因子 <第三篇>
查看>>
python类型转换、数值操作(收藏)
查看>>
mysql delimiter
查看>>