前两款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;
}
}
分享到:
相关推荐
在Android开发中,创建独特的用户界面是提升应用体验的...以上就是实现“android横屏半圆侧边栏”所需的关键技术点。通过理解和实践这些概念,你可以创建出一个独特且高效的横屏应用界面,提供给用户全新的操作体验。
1. **滑动返回的概念**:滑动返回是触摸屏设备上的一种手势导航方式,它允许用户通过手指在屏幕上进行横向滑动来返回上一级界面或退出当前任务。这种设计大大减少了对传统返回按钮的依赖,使用户能够更直观、自然地...
本示例着重讲解如何实现"android屏幕自适应",确保应用在不同分辨率如360x480, 480x800, 480x854以及640x360等设备上都能正常显示,避免因屏幕尺寸差异导致的显示问题。 1. **理解Android屏幕尺寸和密度** Android...
在Android开发中,"横屏侧滑的girdview"是一种常见的用户界面设计,它结合了ViewPager和GridView组件,提供了一种优雅的方式展示大量数据,同时允许用户通过侧滑来切换不同的视图或页面。这种设计通常用于图片浏览、...
总之,Fragment是Android开发中的重要工具,它使得应用界面更加灵活多变,尤其是在处理大屏幕设备时。熟练掌握Fragment的使用和管理,以及应对横竖屏切换,将有助于你创建更优质的Android应用。
这种机制可以确保 Activity 能够适应不同的屏幕方向,但是也会带来一些问题,如数据丢失、界面刷新等。 那么,如何让 Android 横竖屏切换时不销毁当前的 Activity 呢?答案就在于使用 `android:configChanges` 属性...
java源码屏幕刷新安卓 突围 v1.0.2 (这以前托管在 上。) 这是经典破砖游戏的 Android 实现。 这主要用作示例代码,提供一个简单但完整游戏的示例。 它将在 Froyo (API 8) 及更高版本上运行。 您会在来源中找到一些...
SwipeRefreshLayout是Android开发中一个非常重要的组件,由Google官方提供,用于实现下拉刷新的效果。这个组件主要用于那些可以滚动的视图,如ListView、GridView、ScrollView等,为这些视图添加了一个直观且易于...
在Android开发中,实现“左右滑动切换屏幕,上下滑动滚屏”的功能是一项常见的需求,这涉及到Android的触摸事件处理、布局管理以及视图滚动技术。以下将详细阐述这一主题。 1. 触摸事件处理 Android系统通过...
在设计时,开发者需要确保布局在横屏和竖屏模式下都能正常工作,同时保持良好的可读性和触摸反馈。 五、集成与使用 在实际项目中,将"Android-PullLayout"集成到应用中,需要将库项目导入到Android Studio,然后在...
9. **布局适配**:对于横屏和竖屏模式,开发者需要编写不同的布局文件以保持界面的美观和功能的完整性。 10. **国际化与多语言支持**:metro风格界面通常需要考虑多语言环境,因此需要熟悉Android的国际化机制,如...
在Android应用开发中,Fragment是UI组件的重要组成部分,它允许我们构建模块化的界面,尤其在大屏幕设备上,如平板电脑。本实例将探讨如何在Fragment中使用ListFragment,实现ListView的下拉刷新、上拉加载以及横向...
在Android应用开发中,创建一个类似UC浏览器或墨迹天气那样可以左右拖动展示多个屏幕的效果是一项常见的需求。这种效果通常涉及到视图切换、手势识别和界面动态加载等多个技术点。下面将根据提供的标题和描述,详细...
考虑到数据更新,可以采用Android的`WorkManager`或`AlarmManager`来定期刷新天气信息。 此外,"beta1"这个标签暗示了项目还处于测试阶段,可能包含未解决的bug或待优化的功能。因此,开发者需要进行详尽的测试,...
当用户触发全屏操作时,通常会将当前Activity切换到横屏模式,或者创建一个新的全屏Activity来承载视频播放,并调整VideoView的尺寸以适应新的屏幕尺寸。 为了实现这一功能,开发者首先需要在XML布局文件中定义...
在实现上下拉刷新时,要考虑到不同设备和屏幕尺寸的适配,确保在横屏、竖屏以及不同分辨率的设备上都能正常工作。 7. **测试与调试** 完成开发后,需进行详尽的测试,包括不同网络环境下的加载速度、不同设备的...
开发者需要考虑横屏和竖屏下的布局差异,以及如何保存和恢复侧滑状态。 8. **可访问性和适配性**:对于无障碍功能的支持,如TalkBack,需要确保即使在触控操作不可用的情况下,也能通过其他方式(如键盘导航)来...
例如,如果你的应用需要在横屏模式下显示不同的UI元素或布局,可以在`onConfigurationChanged()`中进行动态调整。同时,如果你的应用依赖于实体键盘,可以通过检测`newConfig.hardKeyboardHidden`来判断键盘是否已...
在实际应用中,对双向表格的测试是必不可少的,包括在各种设备和Android版本上进行兼容性测试,以及性能测试以确保在大数据量下的流畅性。 10. **开源项目与Demo** 该项目源自一个网上的Demo,说明了Android...
5. **适配多尺寸和方向**:确保控件在不同屏幕尺寸和横竖屏模式下都能正常工作。 6. **优化性能**:避免在主线程中进行大量计算,使用`canvas.save()`和`canvas.restore()`来提高绘制效率,以及合理使用`View....