透明主题从一个activity A跳转到另外一个activity B:
A:onPause()
注意不会调用onStop()方法,因此activity B finish()之后activity A不会调用onRestart()方法。
从activity B返回activity A
A:onResume()
设置activity主题透明:
示例代码如下
<stylename="AppTheme" parent="AppBaseTheme">
<item name="android:windowIsTranslucent">true</item>
</style>
<stylename="ThemeActivity" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowIsTranslucent">true</item>
</style>
<stylename="WXTheme" parent="AppBaseTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
解决方法:
activity跳转返回修改状态可使用onActivityResult()方法。Activity全屏设置
方式1:AndroidManifest.xml
<activity android:name="MainActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
方式2:代码实现
requestWindowFeature(Window.FEATURE_NO_TITLE); // 隐藏标题栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); // 隐藏状态栏
注意:设置全屏的代码必须在setContentView(R.layout.main) 之前,不然会报错。
Activity横竖屏设置
方式1:AndroidManifest.xml
<activity android:name="MainActivity" android:screenOrientation="landscape" /> // 或者 “portrait”
方式2:代码实现
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
获取横屏方向
int orientation = this.getResources().getConfiguration().orientation;
orientation 的常用取值可以为 ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE(横屏) 或 ActivityInfo.SCREEN_ORIENTATION_PORTRAIT(竖屏)
Activity屏幕一直显示
1、AndroidManifest.xml添加权限
<uses-permission android:name="android.permission.WAKE_LOCK" />
2、代码实现
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); Activity启动过程
可将其分为6个过程
1、使用代理模式启动到ActivityManagerService中执行。
2、创建ActivityRecord到mHistory记录中。
3、通过socket通信到Zygote相关类创建process。
4、通过ApplicaitonThread与ActivityManagerService建立通信。
5、ActivityManagerService通知ActivityThread启动Activity的创建。
6、ActivityThread创建Activity加入到mActivities中并开始调度Activity执行。