`
Beyon_javaeye
  • 浏览: 68476 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

更快的屏幕方向更改

 
阅读更多
更快的屏幕方向更改
  Android操作系统已经被非常多的手机硬件所采用。就目前推出的第一款安装有Android操作系统的T-Mobile G1,在G1上可以体验到旋转手机从而实时的改变屏幕显示模式,比如我们打开硬件键盘,屏幕将会实时的从纵向显示转变为横向显示。
  为了达到简化开发的目的,可以在屏幕变化时自动保存现有的资源或者一些必要的信息从而在变化后可以很快的根据新的标准重新恢复Activity所包含的内容。Android基于这方面的考虑预置了一种可以调用特定资源从而匹配屏幕变化的行为,比如说标记横向屏幕所对应的layout或者一些drawables资源。关于这方面的资料可以查看官方给出的详细说明(read the official documentation on resources).
  对于开发者来讲需要非常重视对这个预置的功能应用,因为它可以使应用程序实时根据屏幕的调整做出最合理的匹配方案。桌面从纵向调整为横向显示需要明确Activity是如何做出反应的,这对于一些刚刚接触Android平台的人来讲在理解上会有一些困难,Activity响应显示模式变化要经过 destroyed和recreated两个过程,通过recreated可以出发程序对最新的显示模式做出反应。
  当应用程序在运行时需要表现大量的数据或者需要通过网络加载某些资源时,如果我们在显示模式的变化中不做任何干预,那么同样的应用程序将需要重新加载必要的预置数据,这样每次改变显示模式都将花费同样的时间来重复加载相同的资源。
  通过一个更典型的例子来理解这个过程,Photostream通过网络下载6幅图片并显示在屏幕中,并且针对两种显示模式提供相对的layout和drawables匹配方案:


  在这个例子中可以清楚的理解,我们不希望用户在改变现实模式时重新加载大量的数据。那么针对这样的问题我们可以借鉴一些主流浏览器所采取的方法,建立一个暂存区来保留临时文件(例如检测到设备提供SD Card,从而把临时文件存放在里边),这样我们可以再重新改变现实模式后可以通过临时文件快速的重新加载数据内容。那么通过什么方式才能优化是否为程序提供暂存文件的功能呢?(可能有些程序并不需要这样必须的行为,所以没有必要额外的利用外界的存储设备)值得庆幸的是Android为我们提供了onRetainNonConfigurationInstance()方法,Activity的基类中声明了这个虚函数,可以让开发者在自己的应用程序中决定是否实现这个函数的函数体,借用上边的例子我们可以用如下代码来保存临时图片:
@Override
public Object onRetainNonConfigurationInstance() {
    final LoadedPhoto[] list = new LoadedPhoto[numberOfPhotos];
    keepPhotos(list);
    return list;
}

  之后便可以在activity的onCreate()函数中实现重新调用临时文件,在代码中需要判断系统是否需要重新加载临时文件。以下是放在OnCreate()函数中加载临时文件的代码:
private void loadPhotos() {
    final Object data = getLastNonConfigurationInstance();
    
    // The activity is starting for the first time, load the photos from Flickr
    if (data == null) {
        mTask = new GetPhotoListTask().execute(mCurrentPage);
    } else {
        // The activity was destroyed/created automatically, populate the grid
        // of photos with the images loaded by the previous activity
        final LoadedPhoto[] photos = (LoadedPhoto[]) data;
        for (LoadedPhoto photo : photos) {
            addPhoto(photo);
        }
    }
}

  对于大多数的情况并不需要做如上的操作,所以需要谨慎使用这个行文,毕竟最好的行为也并不适用于所有情况,如果应用的不好反而会给程序带来不必要的麻烦。
  • 大小: 102.4 KB
  • 大小: 122.1 KB
分享到:
评论

相关推荐

    屏幕不反转设置

    4. **配置屏幕方向**:在“Orientation”(方向)下拉菜单中,选择你希望应用程序支持的屏幕方向。通常有“Auto”(自动)、“Portrait”(竖屏)、“Landscape”(横屏)和“Upside Down”(倒置横屏)等选项。选择...

    滑动屏幕调整屏幕亮度.zip

    屏幕亮度的调节实际上是通过修改显示器的背光亮度来实现的。系统有一个全局的亮度设置,这个设置可以通过设置API访问并更改。当用户通过滑动操作调整亮度时,系统会捕捉到这一手势,并将新的亮度值设置为全局亮度。 ...

    ILI9486 STM32F407 HAL库 竖屏横屏切换

    总的来说,"ILI9486 STM32F407 HAL库 竖屏横屏切换"项目涉及了STM32微控制器的FSMC接口、HAL库的使用、液晶显示控制器的配置以及屏幕方向控制等多个技术点。通过精心的硬件配置和软件优化,我们可以实现高效且灵活的...

    傻瓜屏幕调节软件

    5. **屏幕方向切换**:对于可以旋转的显示器,该软件提供一键切换屏幕横竖向的功能,方便用户在阅读文档和浏览网页之间自由切换。 6. **节能模式**:软件具有节能模式,可以在不影响使用体验的前提下降低显示器的...

    jQuery屏幕右下角留言弹幕代码.zip

    还可以设定弹幕滚动的速度,使之更快或更慢,以符合网页的整体风格。 "说明.htm" 文件可能包含有关如何使用和配置这个弹幕代码的详细指南。通常,这类文件会解释各个参数的意义,提供示例代码,并给出如何将代码...

    修改分辨率软件

    "修改分辨率软件"应运而生,它为用户提供了更为灵活的屏幕显示选择。 分辨率这一概念,是指电脑显示器屏幕上像素的密度。它由水平和垂直方向上的像素点数来定义,以显示图像的清晰度和细节表现。分辨率的调整,可以...

    1602 整个屏幕移动

    二是修改内部寄存器,直接更新显示地址,模拟屏幕滚动。通常,第二种方法更节省系统资源。 4. **循环滚动**:如果要实现屏幕内容的无限循环滚动,你需要维护一个循环缓冲区,当数据移到屏幕边缘时,将数据再次插入...

    屏幕测量Eruller

    通过这些文件,开发者可以了解"屏幕测量Eruller"的基本架构,并可能根据自己的需求进行修改或扩展。例如,可以添加更多的测量单位选项,优化用户界面,或者增加自定义快捷键以提高工作效率。同时,对于学习VB6.0的...

    易语言-易语言实现电脑屏幕桌面倒转效果

    在本案例中,我们关注的是如何使用易语言来实现电脑屏幕桌面的倒转效果。这种效果通常通过改变图像的垂直翻转或水平翻转实现,给人一种视觉上的颠倒感。 实现屏幕倒转的核心在于调用操作系统提供的API(应用程序...

    EverTranslator,翻译屏幕上的任何文本,即使是在游戏中!.zip

    EverTranslator 是一个开源项目,它的主要功能是实现在屏幕上实时翻译任何文本,包括在游戏运行时。这个工具的独特之处在于其强大的屏幕捕获和翻译能力,使得用户无需离开当前应用程序或游戏界面,就能轻松理解非...

    正点原子战舰贪吃蛇OLED屏幕显示

    这里可能采用了简单的方向更新策略,即蛇根据其头部和尾部的位置关系,以及食物的位置,确定下一步的移动方向。此外,为了防止蛇吃到自己的身体,还需要实现碰撞检测算法。 5. HAL库移植 HAL库(Hardware ...

    笔记本屏幕亮度调节方法.docx

    不同品牌笔记本的亮度调节键位置可能不同,一般在`F1~F12`键、方向键或`Home`、`End`、`Page Up`、`Page Down`等键中,如果没有找到明显的图标,可以通过逐个尝试来找到正确组合键。 总之,调节笔记本屏幕亮度的...

    屏幕分辩率转换v2.0.zip易语言项目例子源码下载

    高分辨率意味着屏幕上显示的图像更清晰,但同时对硬件性能要求也更高。在编程时,处理不同分辨率的屏幕至关重要,因为这关系到程序在不同设备上的显示效果和用户体验。 易语言提供了丰富的图形界面(GUI)组件和...

    win7系统如何可以更快的还原BIOS出厂设置.docx

    - 进入BIOS设置界面后,使用键盘上的方向键将光标移动到“Load Optimized Defaults”或类似的选项上,这通常意味着加载优化后的默认设置,即恢复出厂设置。 - 按下回车键选择此选项。 4. **确认恢复操作**: - ...

    修改分辨率的工具SETRES

    - **宽度**:屏幕水平方向上的像素数量,例如1920。 - **高度**:屏幕垂直方向上的像素数量,例如1080。 - **刷新率**:屏幕图像每秒刷新的次数,通常以赫兹(Hz)为单位,如60Hz。 例如,如果你想要设置分辨率为...

    屏幕适配_宽高限定符适配.zip

    确保每个文件都根据屏幕大小进行了适当的调整,比如更改控件的大小、位置或布局方向。 3. **测试与调试**:使用Android模拟器或实际设备测试不同尺寸和密度的屏幕,以确保所有布局都能正常工作并提供良好的用户体验...

    android二维码横屏竖屏

    本主题主要探讨如何在Android应用中处理这两种屏幕方向,确保二维码扫描功能的正常运行。 首先,Android系统允许应用根据不同的屏幕方向来提供不同的布局资源。在`res/layout`目录下,可以创建`layout-land`(横屏...

    电脑显示屏倒过来了怎么办-电脑显示屏倒立修复还原方法.docx

    当电脑显示屏突然倒置,无论是台式机还是...如果你经常需要在不同方向间切换,可以创建快捷方式,以便快速调整屏幕方向,提高工作效率。记住,电脑显示设置是一个很常见的问题,只要理解了基本原理,就可以轻松应对。

    未来计算机发展方向(精).doc

    综上所述,未来的计算机发展方向将朝着更自然、更人性化的交互方式发展,包括多点触控、手势感应、语音识别和视觉跟踪等技术。这些技术的融合将打破二维的人机交互局限,提高工作效率,同时也将带来更为丰富和个性化...

    77个快捷键 帮你更好更快的使用电脑

    - **应用场景**:文本编辑、文档修改等。 #### 25. 重新打开已关闭的标签页:Ctrl + Shift + T - **功能介绍**:`Ctrl + Shift + T`可以重新打开刚刚关闭的标签页,避免误操作带来的不便。 - **应用场景**:网页...

Global site tag (gtag.js) - Google Analytics