【问题标题】:set orientation of transparent activity to differ from that of parent activity将透明活动的方向设置为与父活动的方向不同
【发布时间】:2015-09-26 22:33:08
【问题描述】:

给定 AlphaActivity 和 BravoActivity。 BravoActivity 由 AlphaActivity 启动为

startActivity(new Intent(AlphaActivity.this,BravoActivity.class));

onCreateAlphaActivity 有行

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

对于 BravoActivity,onCreate 方法有类似但不同的调用

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

关键是:BravoActivity 是一个透明的活动。所以我想要的设计是 AlphaActivity 应该保持在 LANDSCAPE 方向,而 BravoActivity 保持在 PORTRAIT 方向。我该如何做到这一点?

现在,只要 BravoActivity 启动,AlphaActivity 的方向就会更改为 PORTRAIT - 我不希望这样。谢谢。

【问题讨论】:

  • 我的猜测是你想要的东西是不可能的,但这只是一个猜测。假设AlphaActivity 没有使用SurfaceView 或类似的东西,备份计划是捕获AlphaActivity 的内容作为Bitmap 并将其用作BravoActivity 的背景。
  • @CommonsWare,你很有见地:是的,AlphaActivity 正在使用 SurfaceView。并且方向翻转会扭曲通过它看到的东西。

标签: android android-activity android-theme android-orientation


【解决方案1】:

尝试添加

android:screenOrientation="nosensor"

给你的Activitymanifest.xml

UPD_0:

也尝试覆盖onConfigurationChanged。我的想法 - 它可能会在您的活动开始改变方向时调用,您可以设置所需的方向而不是系统所需的方向)

@Override
public void onConfigurationChanged(Configuration newConfig) 
{
    super.onConfigurationChanged(newConfig);
    setRequestedOrientation(ActivityInfo.YOURS_DESIRED_ORIENTATION);
}

【讨论】:

  • 这没有做到。好主意,不过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多