1. ConfigChanges
这是在AndroidManifest中设置的,效果是监听各种导致Activity重绘的参数的变化。例如,当设置了android:configChanges="orientation|screenSize"
的时候,当横屏竖屏切换的时候,如果没有设置这个属性,Activity会重绘,若设置了,Activity不会重绘,而是会调用onConfigurationChanged
方法。
<activity
android:name=".Activity.LoadingActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@style/FullscreenTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
复制代码
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
复制代码
- orientation : 横屏竖屏的切换
- keyboardHidden :键盘的隐藏
- screenSize :屏幕大小的变化
2. ScreenOrientation
指定Activity的屏幕方向
<activity
android:name=".Activity.LoadingActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@style/FullscreenTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
复制代码
- landscape:限制界面为横屏,旋转屏幕也不会改变当前状态。
- portrait:限制界面为竖屏,旋转屏幕也不会改变当前状态。
- sensor:根据传感器定位方向,旋转手机90度,180,270,360,界面都会发生变化。
- sensorLandscape:(横屏的旋转,不会出现竖屏的现象)根据传感器定位方向,旋转手机180度界面旋转。一般横屏游戏会是这个属性。
- sensorPortrait:(竖屏的旋转,不会出现横屏的现象)根据传感器定位方向,旋转手机180度界面会旋转。
- unspecified:由系统选择显示方向,不同的设备可能会有所不同。(旋转手机,界面会跟着旋转)
- user:用户当前的首选方向。
- nosensor:不由传感器确定方向。旋转设备的时候,界面不会跟着旋转。初始界面方向由系统提供。
3. Style-Windows设置
指定Activity的Style,或者是其他的,dialog也可以。
<activity
android:name=".Activity.LoadingActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@style/FullscreenTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
复制代码
<style name="DialogTransparent" parent="@android:style/Theme.Dialog">
<item name="windowBackground"> 窗体的背景 </item>
<item name="windowFrame">Dialog 是否有边框 </item>
<item name="android:windowAnimationStyle">@android:style/Animation.Activity</item>
<item name="windowNoTitle">窗体是否有标题</item>
<item name="windowFullscreen">false</item> #是否为全屏
<item name="windowShowWallpaper">false</item> #是否显示壁纸
<item name="windowTitleSize">25dip</item> # 窗体文字大小
<item name="windowCloseOnTouchOutside">false</item> #是否再点击外部可关闭
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
复制代码
属性说明:
- windowBackground : 背景
- windowAnimationStyle :窗口/Activity的动画
- windowNoTitle :窗口有无Title
- windowContentOverlay :当窗口加载完成前,制定最开始的图片。@null是没有。相信每个app都需要一个闪屏页 就是一个开始页面 对于新手来说 可能就直接一个activity 弄个背景图片 ,细心地同学也许会发现 每次启动 应用程序的时候 一开始显示的不是那个设置的背景图片 而是白色或黑色背景 可能时间很短这是为什么呢。再看看其他市面上的应用都是一开始就是显示背景图片 而没有白色背景 研究了很久 其实 设置一下主题就行了 给activity设置主题其中有一个属性
- windowIsFloating : 是否浮现在activity之上
- windowIsTranslucent :是否半透明
- backgroundDimEnabled :是否允许背景灰暗
4. ActivityForResult用法
1.在 MainActivity 中调用:
startActivityForResult(new Intent(MainActivity.this,CaptureActivity.class),0x01);
复制代码
- 参数一:是一个Intent
- 参数二:是一个约定的结果代号
2.在 MainActivity 中重写 onActivityResult 方法
其中,resultCode 是之前约定的结果代号,data 为第二个页面传回来的数据。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode==0x01) {
Log.e("---","jkfjlds");
}
super.onActivityResult(requestCode, resultCode, data);
}
复制代码
3.在第二个页面,使用:
//这里的 intent 是返回的 Intent
//这里的 setResult 是设置返回结果的 Intent,其还带有,约定的结果代号。
Intent intent = new Intent();
intent.putExtra("result",result_p);
setResult(0x01,intent);
finish();
复制代码