我很难迫使我的应用在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" />
这似乎有效,但当然不能完全符合我的要求。旋转视图,但最左侧的所有项目现在都在屏幕外。有没有办法动态调整根布局的大小以适应纵向模式的屏幕?
答案 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();
任何更好的答案都会受到赞赏,但我认为这并没有任何不利因素。