android学习笔记(6)Activity高级+android:theme学习

对应若水老师的第九课

一,保存activity的状态

当手机横屏的时候,系统调用了destroys和recreates,如果没有保存activity的状态,就会丢失用户的数据.

下面两片代码实现保存activity的状态:

private EditText txt = null;  //布局中有个输入框,引用给txt
private static final string CONTENT = "content";
txt=(EditText)findViewById(R.id.txt);

protected void onSaveInstanceState(Bundle outState)  //覆写onSaveInstanceState方法,这个方法在程序pause或destroy之前被自动调用.
{
super.onSaveInstanceState(outState);
String content = txt.getText().toString();
outState.putString(CONTENT,content);    //把用户在输入框中输入的字符保存进content,然后就存放在了bundle中了

然后回顾一下熟悉的不能更熟悉的onCreate方法:

public void onCreate(bundle savedInstanceState)//可以看到,这里的bundle参数与onSaveInstanceState中的参数是一个参数,因此在这里只要把bundle取出来,就达到了保存activity状态的目的!!
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if(null!=savedInstanceState&&savedInstanceState.conainsKey(CONTENT))//如果bundle不为空,并且bundle中CONTENTR的内容也不为空
{
txt.setText(savedInstanceState.getString(CONTENT));//把值取出放回输入框
}

二,android:theme

android:theme="@android:style/Theme.Dialog" : Activity显示为对话框模式

android:theme="@android:style/Theme.NoTitleBar" : 不显示应用程序标题栏

android:theme="@android:style/Theme.NoTitleBar.Fullscreen" : 不显示应用程序标题栏,并全屏

android:theme="@android:style/Theme.Light ": 背景为白色

android:theme="@android:style/Theme.Light.NoTitleBar" : 白色背景并无标题栏

android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" : 白色背景,无标题栏,全屏

android:theme="@android:style/Theme.Black" : 背景黑色

android:theme="@android:style/Theme.Black.NoTitleBar" : 黑色背景并无标题栏

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" : 黑色背景,无标题栏,全屏

android:theme="@android:style/Theme.Wallpaper" : 用系统桌面为应用程序背景

android:theme="@android:style/Theme.Wallpaper.NoTitleBar" : 用系统桌面为应用程序背景,且无标题栏

android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen" : 用系统桌面为应用程序背景,无标题栏,全屏

android:theme="@android:style/Theme.Translucent : 透明背景

android:theme="@android:style/Theme.Translucent.NoTitleBar" : 透明背景并无标题

android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" : 透明背景并无标题,全屏

android:theme="@android:style/Theme.Panel": 面板风格显示

android:theme="@android:style/Theme.Light.Panel" : 平板风格显示

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-28 11:55:18

android学习笔记(6)Activity高级+android:theme学习的相关文章

Android开发学习笔记之Activity属性设置

麦子学院android开发老师说Activity是Android组件中最基本也是最为常见用的四大组件之一,在android开发中运用极为广泛,作为android开发初学者需要熟练掌握,麦子学院android开发老师分享了Activity属性的常用设置. android:allowTaskReparenting 是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务. android:alwaysRetainTaskState 是否保留状态不变, 比如切换回home, 再从新打

PhoneGap学习笔记-----phone3.4之Android搭建--导出jar包(处处可用)--并导出插件或加入第三方插件

http://blog.csdn.net/klx502/article/details/40617497 该链接已经说明如何从命令行创建一个phonegap项目了 这次的主题是基于上一遍[PhoneGap学习笔记-----phone3.4之Android搭建]延伸出来的 1.创建项目: 2.为创建的目录添加平台支持: 3.build 这个项目,之后就可以在Eclipse里导入android项目了: 4.到Eclipse里,import导入项目: 5.找到第一步创建时想要的目录路径,可以看回第一张

Hadoop源码学习笔记(3) ——初览DataNode及学习线程

Hadoop源码学习笔记(3) ——初览DataNode及学习线程 进入了main函数,我们走出了第一步,接下来看看再怎么走: public class DataNode extends Configured implements InterDatanodeProtocol,       ClientDatanodeProtocol, FSConstants, Runnable {      public static DataNode createDataNode(String args[],

【Android开发学习笔记】【高级】【随笔】插件化——Activity生命周期

前言 如同第一章我们说的,宿主程序通过 dexclassloader 将插件的类加载进来,然后通过反射去调用它的方法,这样Activity就被当成了一个普通的类来执行了,因此系统不再接管它的生命周期,也就是说Activity的生命周期函数失效了.针对这样的问题,有网友想出使用Fragment来解决此问题,Fragment既有类似于Activity的生命周期,又有类似于View的界面,因此选它比较合适,具体的做法是将Fragment加入到宿主的代理Activity内部,其生命周期将完全由代理Act

android开发学习笔记(三)Activity跳转以及传值

一:步骤: 1创建Intent对象,参数中指定将要跳转到的class 2通过Intent对象的putExtra()方法指定要传到下一个页面的数据.方法参数用键值对. 3通过调用startActivity(Intent intent)方法或者startActivityForResult(Intent intent,int requestCode)方法启动跳转. startActivtyForResult():Activity A跳转到Activity B,Activity B可以返回数据给Acti

Android 学习笔记之五 activity lanuch mode

launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里.这里简单介绍一下task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个与之对应的task. Activity一共有以下四种launchMode: 1.standard    默认的启动模式,在同一个任务栈统启动一个新的activity

(1)-Android学习笔记之:初识Android系统架构和项目结构

Android系统架构 Android程序结构 创建一个Android项目,为初学便于理解,将程序项目结构切换为Project模式,项目结构如下 .gradle和.idea:这两个目录下放的都是Android Studio自动生成的文件,无需我们关心,也不需要手动编辑. app:项目中的代码.资源等内容几乎都放在这个目录下,开发工作基本在这个目录下进行. libs:如果项目引用了第三方jar包,就需要吧这些jar包放在libs目录下,此目录下的jar包都会自动添加到构建目录中. androidT

Android 第六课——Activity高级

?Activity 生命周期: 生命周期7个方法的调用时机: 1)onCreate:第一次创建这个Activity时,也就是系统中没有缓存当前的Activity时,这个方法首先被调用.调用之后这个Activity就会被压入所谓的Android Task栈中缓存起来,下次用时出栈就可以.所以,为了更加节约资源,我们一般把Activity所对应的layout中拥有的组件首先使用private作为这个Activity的私有成员,然后在onCreate方法中初始化,这样只要在Activity创建的时候,

android学习笔记(13)android幀布局

android中贞布局由FrameLayout所代表,FrameLayout直接继承了 ViewGroup 组件. 帧布局容器为每个加入其中的组件创建一个空白的区域 (称为一帧),所有每个子组件占据一帧,这些帧都会根据 gravity属性执行自动对齐.也就是说,巾贞布局的效果有点类似 于AWT编程的CardLayout,都是把组件一个一个地叠加在一 起.与CardLayout的区别在于,CardLayout可以将下面的Card 移上来,但FrameLayout则没有提供相应的方法. 表2.6显示