转自:http://gaebolg.blog.163.com/blog/static/19826906820134312050504/
余好读书,乐思善疑,有过目不忘之能,亦有掩卷即忘之病,故常撰文以记之……
一、禁止屏幕旋转:
打开工程中的 AndroidManifest.xml 文件,在 <activity> </activity> 中,添加一条属性信息:
android:screenOrientation="portrait" (强制竖屏)
android:screenOrientation="landscape" (强制横屏)
二、屏幕旋转不刷新 Activity:
当屏幕旋转时,会重新执行 Activity 中的 onCreate() 方法,即刷新了 Activity 的显示。若是不想刷新,可以用第一种方法锁屏,也可以用以下方法:
1、打开工程中的 AndroidManifest.xml 文件,在 <activity> </activity> 中,添加一条属性信息:
android:configChanges=”orientation|keyboardHidden”
注:这个属性指的是,当后边属性值代表的事件发生时,Activity 会执行某个函数,orientation 指的是当屏幕旋转时,keyboardHidden 指的是键盘辅助功能改变。“|”为或符号,指这两个中任意一个发生,就执行 Activity 某个函数。
注2:如果你的开发 API 等级等于或高于 13,你还需要设置 screenSize,因为 screenSize 会在屏幕旋转时改变。
2、在对应 Activity 中重写 onConfigurationChanged() 方法:
@Override
public voidonConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
if(newConfig.orientation== Configuration.ORIENTATION_LANDSCAPE) {
// 什么都不用写
}
else{
// 什么都不用写
}
}
注:如果在 if、else 中,使用了 setContentView(R.layout.xxxx) 函数,那么就可以实现:每次屏幕旋转时,调用不同的布局。
三、动态更改屏幕方向:
有些时候,我们不需要把程序写死,需要在程序中有需要的时候旋转屏幕,例如:在“设置”里添加一个 ListView 项,可通过点击选择横屏或竖屏。(比如:电子书软件)
假设有一个按钮,我们仅重写 OnClick() 函数:
@Override
public voidonClick(View v) {
// 如果是竖排,则改为横排
if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
// 如果是横排,则改为竖排
else if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
重点就是:getRequestedOrientation() 函数、setRequestedOrientation() 函数的使用。
注意:使用这种方法,必须事先在 AndroidManifest.xml 的 <activity> </activity> 中,添加android:screenOrientation属性值,不然 getRequestedOrientation() 可能会出问题。
参考文档 1:http://weizhulin.blog.51cto.com/1556324/311469
参考文档 2:http://www.cnblogs.com/reaver21/archive/2012/03/20/2407711.html
相关推荐
4. **刷新回调**:在用户触发刷新后,需要有一个接口或者回调方法供Activity或Fragment处理实际的刷新逻辑,例如更新数据源,然后通知Adapter数据已改变并刷新列表。 5. **状态管理**:刷新状态的管理也很重要,...
5. **自定义样式**:默认的刷新动画可以更改,你可以通过修改`SwipeRefreshLayout`的颜色资源来定制刷新指示器的样式。 以上就是Android中实现下拉刷新的基本流程。在实际项目中,你可能需要考虑更多细节,比如错误...
当用户在屏幕顶部下拉时,SwipeRefreshLayout会显示一个刷新指示器,通常是旋转的菊花动画,表示正在加载新数据。一旦数据加载完成,动画会消失,视图恢复原状。 实现这个功能的步骤包括以下几个关键点: 1. **...
- **设置了配置更改**:通过在AndroidManifest.xml文件中为Activity设置`android:configChanges="orientation|keyboardHidden"`属性,可以让Activity在屏幕旋转时不重新创建,只执行`onConfigurationChanged()`方法...
首先,`onConfigurationChanged` 方法是 `Activity` 类的一个回调方法,当设备的配置发生改变时,如屏幕方向的切换(横屏到竖屏或反之)、系统语言的更改、键盘的展开或收起等,系统会调用这个方法,而不是重新创建 ...
通过设置`setColorSchemeResources()`方法,可以更改旋转刷新指示器的颜色。 - 更高级的定制可以通过覆写SwipeRefreshLayout的子类并重写相关方法来实现,例如`setRefreshing()`和`onMeasure()`。 4. **注意事项与...
在实际项目中,可能还需要处理其他细节,例如处理屏幕旋转时的状态保存与恢复,确保视频播放不会因屏幕旋转而中断。同时,为了提高用户体验,还可以添加动画效果,使得布局切换更加平滑。在自定义MediaController时...
- **刷新动画**:虽然不能直接修改刷新动画,但可以通过自定义`SwipeRefreshLayout`的子类并覆盖`onRefresh()`方法来实现自定义的刷新逻辑。 - **触发距离**:可以通过设置`setProgressViewOffset()`方法调整触发...
2. **ViewModel**: 用于保存UI状态的类,它不受配置变化影响,例如屏幕旋转。ViewModel可以在Activity或Fragment重建后继续存在,确保用户界面的状态得以保留。 3. **Repository**: 作为数据源的抽象层,Repository...
3. **ViewModel**:ViewModel是另一种Architecture Component,它的生命周期比Activity和Fragment更长,可以在配置更改(如屏幕旋转)时保持数据。两个Activity可以共享同一个ViewModel,这样就可以在其中存储需要跨...
10. **状态保存与恢复**:在Activity或Fragment的onSaveInstanceState和onRestoreInstanceState方法中,保存和恢复RecyclerView的状态,以确保在配置更改(如屏幕旋转)时,列表联动的状态能够正确恢复。 总之,...
AsyncTask是Android早期为解决短时间、小范围的后台任务而设计的,但它并不适合长时间运行或者需要在配置更改(如屏幕旋转)后恢复任务的场景。相比之下,Loader接口及其实现类,如CursorLoader和AsyncTaskLoader,...
当屏幕旋转时,系统默认会重启Activity,这会影响到Activity的生命周期,需要注意保存和恢复状态。 #### 29. 发布SQLite数据库 若想将SQLite数据库随应用一起发布,可以将数据库文件放在`assets`目录下,并在应用...
5. **自定义行为**:虽然SwipeRefreshLayout提供了默认的刷新动画,但你也可以根据需要自定义刷新指示器,或者更改刷新触发的阈值。 谷歌刷新功能的引入,极大地提升了用户在移动设备上浏览和互动的体验。通过合理...
动态获取屏幕尺寸可以在主Activity中完成,SurfaceView由于拥有二级缓存,适合处理快速运动的游戏场景,能保证流畅性。若需要清除SurfaceView上的内容,可以使用canvas.drawColor()填充背景色。另外,Thread.yield()...
- **5.22 动态更改屏幕方向** 说明如何在程序运行过程中动态更改屏幕的方向,适应不同的应用场景。 - **5.23 系统设置更改事件** 介绍如何监听系统的设置变化,例如语言、主题等,并做出相应的响应。 - **5.24 ...
ViewModel的生命周期比Activity和Fragment更长,即使屏幕旋转等导致重建,ViewModel中的数据也不会丢失。 3. **View层**:View主要包括Activity、Fragment和UI组件,如TextView、EditText等。在MVVM中,View仅负责...
Loader的优势在于它可以自动处理配置更改(如屏幕旋转),无需重新加载数据。LoaderManager是负责管理和控制Loader的组件,它会保存Loader的状态,并在必要时重启Loader。 创建自定义Loader的步骤如下: 1. **创建...
8. **测试和优化**:在实际应用中,需要注意Fragment之间的内存管理和状态保存,确保在配置变更(如屏幕旋转)时能正确恢复用户界面。 综上所述,使用Fragment替代TabHost可以提供更强大、灵活的分页效果,并且有助...
以上内容详细介绍了Android面试中常见的Activity相关知识点,包括其定义、生命周期、跳转逻辑、屏幕旋转处理以及状态保存。理解并熟练掌握这些知识对于成为一名合格的Android开发者至关重要。在面试中,能够清晰地...