创建人像GoogleTV应用程序

时间:2012-10-31 18:58:34

标签: android google-tv

我很难迫使我的应用在Google TV上使用纵向模式。我知道这在技术上是不受支持的,但我觉得我应该能够以某种方式手动执行此操作,特别是当看到Google Play上的某些应用成功强制此系统行为时(例如:https://play.google.com/store/apps/details?id=com.coinsoft.android.orientcontrolhttps://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" />

这似乎有效,但当然不能完全符合我的要求。旋转视图,但最左侧的所有项目现在都在屏幕外。有没有办法动态调整根布局的大小以适应纵向模式的屏幕?

2 个答案:

答案 0 :(得分:2)

您是否有理由强制您的应用以不受设备支持的方向运行?如果您正在从头开始编写应用程序(听起来像这样),为什么不支持正确的屏幕方向?

答案 1 :(得分: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();

任何更好的答案都会受到赞赏,但我认为这并没有任何不利因素。