3

在过去的几个小时里,我一直在摆弄新的DreamServiceAPI,它非常棒。不过,我确实有一个问题。

我想在显示时将屏幕方向锁定为横向DreamService。的目的DreamService是显示一些宽屏照片,我宁愿不要在屏幕的顶部和底部有黑条。

我已经尝试了很多东西,包括setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)在 Java 代码和android:screenOrientation="landscape"清单文件中,但都没有奏效。

这让我想知道:是否可以锁定 a 的方向DreamService

4

3 回答 3

2

Android 开发者团队在前段时间的开发者现场环聊中证实,目前这是不可能的。

我相信谷歌想要DreamServices在两种屏幕方向上工作,所以这就是不可能的。

于 2013-01-27T16:22:57.180 回答
1

解决方法:使用此库https://github.com/rongi/rotate-layout

构建.gradle

 dependencies {
        compile 'rongi.rotate-layout:rotate-layout:2.0.0'
    }

your_daydream_layout.xml

<com.github.rongi.rotate_layout.layout.RotateLayout  
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   app:angle="-90">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <WebView
        android:id="@+id/daydream_webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#2a2e31" />

    <TextView
        android:id="@+id/dream_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFamily="sans-serif-light"
        android:text="..."
            android:textColor="#abc"
            android:textSize="20sp" />
    </RelativeLayout>
</com.github.rongi.rotate_layout.layout.RotateLayout>

顺便说一句:允许从https://code.google.com/p/android/issues/detail?id=40226 自动旋转你的白日梦

“看起来已经解决了这个问题(没有人告诉我们)。不幸的是,它不能正常工作。在我的 Nexus 6p(6.0.1,Build #MHC19Q)上,如果我滑动到最左边的屏幕(Google Now?),点击左上角的汉堡菜单,选择设置,然后转到底部,主屏幕选项有一个“允许旋转”。启用该选项后,主屏幕将能够旋转到需要时横向显示。Daydream 可以继承该旋转并以横向模式显示。” -- 2016 年 5 月 18 日

于 2016-10-12T12:22:34.103 回答
0

很遗憾我也没有找到任何解决方案,我不得不使用一个讨厌的解决方法,它可能对你有用,也可能对你不起作用,就是在设置布局之前设置自动旋转设置:

在您的 DreamService 课程中:

import android.provider.Settings;
<...>

    @Override
public void onAttachedToWindow() {

    Settings.System.putInt(getContentResolver(),
            android.provider.Settings.System.ACCELEROMETER_ROTATION, 0);

    setContentView(R.layout.dream_main);
<...>

在您的清单中:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />
于 2014-11-06T22:40:31.263 回答