1

アプリに Google TV での縦向きモードの使用を強制するのに苦労しています。これが技術的にサポートされていないことはわかっていますが、特にGoogle Playの一部のアプリがこの動作をシステム全体に強制することに成功していることを見て、どうにかして手動でこれを行うことができるはずだと感じています(https://play.google.com/store/appsなど) /details?id=com.coinsoft.android.orientcontrolおよびhttps://play.google.com/store/apps/details?id=nl.fameit.rotate&hl=en )。

私の活動では、私はやっています:

public void onStart() {
    View root = findViewById(android.R.id.content);     
    Animator anim = AnimatorInflater.loadAnimator(this, R.anim.rotate_90);                  
    anim.setTarget(root);
    anim.start();
}

私のrotate_90.xml:

<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="0"
    android:propertyName="rotation"
    android:repeatCount="0"
    android:valueTo="90"
    android:valueType="floatType" />

これは機能しているように見えますが、もちろん、私が望むことを正確に行うわけではありません。ビューは回転していますが、左端のすべてのアイテムが画面から外れています。縦向きモードで画面に合わせてルート レイアウトのサイズを動的に変更する方法はありますか?

4

2 に答える 2

1

もちろん、投稿した直後に、うまくいくと思われるものを思いつきました:

    View root = findViewById(android.R.id.content);


    DisplayMetrics displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    int height = displaymetrics.heightPixels;
    int width = displaymetrics.widthPixels;

    root.getLayoutParams().height = width;
    root.getLayoutParams().width = height;
    root.requestLayout();

    root.setPivotX(height);
    root.setPivotY(height);

    Animator anim = AnimatorInflater.loadAnimator(this, R.anim.rotate_90);      
    anim.setTarget(root);
    anim.start();

より良い答えがあれば幸いですが、頭の中でこれにマイナス面は見られません。

于 2012-10-31T19:50:50.143 に答える