`
quanminchaoren
  • 浏览: 926389 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android横屏状态下返回到壁纸界面屏幕刷新问题

阅读更多

前两款android智能机开发过程中曾经遇到过在launcher主屏界面上建一个应用快捷图标,在横屏的状态下点击打开此应用,然后按返回键,很大概率上屏幕会刷新失败,显示半屏黑屏,是由于关闭当前activity时是横屏状态,关闭后返回到壁纸界面是竖屏,windowManagerService刷新处理问题。现将解决方案贴出来,望以后遇到此问题的同学借鉴:

 

            boolean gone = win.mViewVisibility == View.GONE
                    || !win.mRelayoutCalled
                    || win.mRootToken.hidden
                    || (atoken != null && atoken.hiddenRequested)
                    || win.mAttachedHidden
                    || win.mExiting || win.mDestroying;

            if (!win.mLayoutAttached) {
                if (DEBUG_LAYOUT) Slog.v(TAG, "First pass " + win
                        + ": gone=" + gone + " mHaveFrame=" + win.mHaveFrame
                        + " mLayoutAttached=" + win.mLayoutAttached);
                if (DEBUG_LAYOUT && gone) Slog.v(TAG, "  (mViewVisibility="
                        + win.mViewVisibility + " mRelayoutCalled="
                        + win.mRelayoutCalled + " hidden="
                        + win.mRootToken.hidden + " hiddenRequested="
                        + (atoken != null && atoken.hiddenRequested)
                        + " mAttachedHidden=" + win.mAttachedHidden);
            }

            if (win.mIsWallpaper)
            {
                gone = win.mViewVisibility == View.GONE
                        || !win.mRelayoutCalled
                        || (atoken != null && atoken.hiddenRequested)
                        || win.mAttachedHidden
                        || win.mExiting || win.mDestroying;
            }
           
            // If this view is GONE, then skip it -- keep the current
            // frame, and let the caller know so they can ignore it
            // if they want.  (We do the normal layout for INVISIBLE
            // windows, since that means "perform layout as normal,
            // just don't display").
            if (!gone || !win.mHaveFrame) {
                if (!win.mLayoutAttached) {
                    mPolicy.layoutWindowLw(win, win.mAttrs, null);
                    win.mLayoutSeq = seq;
                    if (DEBUG_LAYOUT) Slog.v(TAG, "-> mFrame="
                            + win.mFrame + " mContainingFrame="
                            + win.mContainingFrame + " mDisplayFrame="
                            + win.mDisplayFrame);
                } else {
                    if (topAttached < 0) topAttached = i;
                }
            }

分享到:
评论
5 楼 flyar520 2013-07-04  
你好...我也遇到屏幕半屏刷成黑屏的问题...但是我的时在开机后进入launcher(没有锁屏的情况下)竖屏时会在屏幕的上半部分会黑屏过一会就又会好了(手机一直是竖屏),所以我在想机子启动的时候壁纸先刷一次横屏然后刷一次竖屏才回出现半部分黑屏状况。请问你这种方案可以解决我这个问题吗?
4 楼 flyar520 2013-07-04  
你好...我也遇到屏幕半屏刷成黑屏的问题...但是我的时在开机后进入launcher(没有锁屏的情况下)竖屏时会在屏幕的上半部分会黑屏过一会就又会好了(手机一直是竖屏),所以我在想机子启动的时候壁纸先刷一次横屏然后刷一次竖屏才回出现半部分黑屏状况。请问你这种方案可以解决我这个问题吗?
3 楼 leif2006 2012-05-09  
我把上边这个合进去看一下,谢谢啊。不知道是什么原理啊。
2 楼 杰迪-android 2012-03-03  
牛人,能注释解析下吗,我遇到同样的问题,进入横屏应用,返回launcher,壁纸失真,断层现象,求教
1 楼 loovle 2012-01-09  
你太牛了,我一直读这个,都没读懂

相关推荐

    android横屏半圆侧边栏

    在Android开发中,创建独特的用户界面是提升应用体验的...以上就是实现“android横屏半圆侧边栏”所需的关键技术点。通过理解和实践这些概念,你可以创建出一个独特且高效的横屏应用界面,提供给用户全新的操作体验。

    史上在简单滑动屏幕左侧返回

    1. **滑动返回的概念**:滑动返回是触摸屏设备上的一种手势导航方式,它允许用户通过手指在屏幕上进行横向滑动来返回上一级界面或退出当前任务。这种设计大大减少了对传统返回按钮的依赖,使用户能够更直观、自然地...

    android屏幕自适应

    本示例着重讲解如何实现"android屏幕自适应",确保应用在不同分辨率如360x480, 480x800, 480x854以及640x360等设备上都能正常显示,避免因屏幕尺寸差异导致的显示问题。 1. **理解Android屏幕尺寸和密度** Android...

    横屏侧滑的girdview

    在Android开发中,"横屏侧滑的girdview"是一种常见的用户界面设计,它结合了ViewPager和GridView组件,提供了一种优雅的方式展示大量数据,同时允许用户通过侧滑来切换不同的视图或页面。这种设计通常用于图片浏览、...

    Fragment的使用,隐藏显示以及androidPad横竖屏切换

    总之,Fragment是Android开发中的重要工具,它使得应用界面更加灵活多变,尤其是在处理大屏幕设备时。熟练掌握Fragment的使用和管理,以及应对横竖屏切换,将有助于你创建更优质的Android应用。

    Android 销毁当前的Activity

    这种机制可以确保 Activity 能够适应不同的屏幕方向,但是也会带来一些问题,如数据丢失、界面刷新等。 那么,如何让 Android 横竖屏切换时不销毁当前的 Activity 呢?答案就在于使用 `android:configChanges` 属性...

    java源码屏幕刷新-android-breakout:适用于Android设备的突围游戏

    java源码屏幕刷新安卓 突围 v1.0.2 (这以前托管在 上。) 这是经典破砖游戏的 Android 实现。 这主要用作示例代码,提供一个简单但完整游戏的示例。 它将在 Froyo (API 8) 及更高版本上运行。 您会在来源中找到一些...

    SwipeRefreshLayout横向下拉刷新进度条

    SwipeRefreshLayout是Android开发中一个非常重要的组件,由Google官方提供,用于实现下拉刷新的效果。这个组件主要用于那些可以滚动的视图,如ListView、GridView、ScrollView等,为这些视图添加了一个直观且易于...

    左右滑动切换屏幕,上下滑动滚屏

    在Android开发中,实现“左右滑动切换屏幕,上下滑动滚屏”的功能是一项常见的需求,这涉及到Android的触摸事件处理、布局管理以及视图滚动技术。以下将详细阐述这一主题。 1. 触摸事件处理 Android系统通过...

    Android-PullLayout.zip_Android-PullLayout_android

    在设计时,开发者需要确保布局在横屏和竖屏模式下都能正常工作,同时保持良好的可读性和触摸反馈。 五、集成与使用 在实际项目中,将"Android-PullLayout"集成到应用中,需要将库项目导入到Android Studio,然后在...

    Android仿Win8的metro的UI界面源码.zip

    9. **布局适配**:对于横屏和竖屏模式,开发者需要编写不同的布局文件以保持界面的美观和功能的完整性。 10. **国际化与多语言支持**:metro风格界面通常需要考虑多语言环境,因此需要熟悉Android的国际化机制,如...

    android Fragment 实例 ListFragment listiew 下拉刷新 上拉加载 横向滑动事件监听

    在Android应用开发中,Fragment是UI组件的重要组成部分,它允许我们构建模块化的界面,尤其在大屏幕设备上,如平板电脑。本实例将探讨如何在Fragment中使用ListFragment,实现ListView的下拉刷新、上拉加载以及横向...

    Android 仿UC,墨迹天气左右拖动多屏幕显示效果源码.zip

    在Android应用开发中,创建一个类似UC浏览器或墨迹天气那样可以左右拖动展示多个屏幕的效果是一项常见的需求。这种效果通常涉及到视图切换、手势识别和界面动态加载等多个技术点。下面将根据提供的标题和描述,详细...

    Android Digital Clock Demo beta1

    考虑到数据更新,可以采用Android的`WorkManager`或`AlarmManager`来定期刷新天气信息。 此外,"beta1"这个标签暗示了项目还处于测试阶段,可能包含未解决的bug或待优化的功能。因此,开发者需要进行详尽的测试,...

    VideoView视频播放

    当用户触发全屏操作时,通常会将当前Activity切换到横屏模式,或者创建一个新的全屏Activity来承载视频播放,并调整VideoView的尺寸以适应新的屏幕尺寸。 为了实现这一功能,开发者首先需要在XML布局文件中定义...

    各种控件的上下拉刷新效果

    在实现上下拉刷新时,要考虑到不同设备和屏幕尺寸的适配,确保在横屏、竖屏以及不同分辨率的设备上都能正常工作。 7. **测试与调试** 完成开发后,需进行详尽的测试,包括不同网络环境下的加载速度、不同设备的...

    android页面推拉效果

    开发者需要考虑横屏和竖屏下的布局差异,以及如何保存和恢复侧滑状态。 8. **可访问性和适配性**:对于无障碍功能的支持,如TalkBack,需要确保即使在触控操作不可用的情况下,也能通过其他方式(如键盘导航)来...

    android实现在横竖屏切换时页面信息不被重置的示例分享

    例如,如果你的应用需要在横屏模式下显示不同的UI元素或布局,可以在`onConfigurationChanged()`中进行动态调整。同时,如果你的应用依赖于实体键盘,可以通过检测`newConfig.hardKeyboardHidden`来判断键盘是否已...

    Android双向表格可滑动可双向适配

    在实际应用中,对双向表格的测试是必不可少的,包括在各种设备和Android版本上进行兼容性测试,以及性能测试以确保在大数据量下的流畅性。 10. **开源项目与Demo** 该项目源自一个网上的Demo,说明了Android...

    android仿京东商城-demo

    - 针对横屏和竖屏模式编写不同的布局文件。 通过这个"Android仿京东商城-Demo",开发者可以深入学习Android开发中的各种实用技术和最佳实践,同时也能了解到一个完整电商应用的架构设计和功能实现。这是一个理想的...

Global site tag (gtag.js) - Google Analytics