场景动画的场景大小错误

Wrong scene size with Scene Animation

在我的应用程序中,我使用了一个 Fragment,我想在其中设置多个 Scene 的动画。在我的 onCreateView 中,我创建了帧,其中 Scene 将使用 myView=inflater.inflate(R.layout.my_fragment_layout,null,false) 进行动画处理。对应的布局是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/MyContainer"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:background="@android:color/black"
          android:orientation="vertical">

之后:

然后我开始 TransitionTransitionManager.go(myScene , myTransition);

Scene的布局是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:id="@+id/InterfaceJeu"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:background="@drawable/fond_interface"
          android:orientation="vertical"
          tools:context=".Jeu">

<TextView
    android:id="@+id/TitreJeux"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginBottom="@dimen/MargeVerticaleBoutonsInterfaceJeux"
    android:lines="1"
    android:text="@string/app_name"
    android:textColor="#FFFF00"
    android:textSize="35sp"
    android:textStyle="bold"
    android:typeface="serif"/>

<vd63.jeux.Jeu.BoutonInterface
    android:id="@+id/BoutonJouer"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_gravity="center"
    android:layout_marginTop="@dimen/MargeVerticaleBoutonsInterfaceJeux"
    android:layout_weight="1"
    android:background="@drawable/bouton_jouer"
    android:text="@string/BoutonJouer"
    android:textColor="@color/CouleurTexteBoutons"
    android:textSize="25sp"
    android:typeface="serif"/>

<vd63.jeux.Jeu.BoutonInterface
    android:id="@+id/BoutonOptions"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_gravity="center"
    android:layout_marginTop="@dimen/MargeVerticaleBoutonsInterfaceJeux"
    android:layout_weight="1"
    android:background="@drawable/bouton_jouer"
    android:text="@string/BoutonOptions"
    android:textColor="@color/CouleurTexteBoutons"
    android:textSize="25sp"
    android:typeface="serif"/>

<vd63.jeux.Jeu.BoutonInterface
    android:id="@+id/BoutonModeEmploi"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_gravity="center"
    android:layout_marginTop="@dimen/MargeVerticaleBoutonsInterfaceJeux"
    android:layout_weight="1"
    android:background="@drawable/bouton_jouer"
    android:text="@string/BoutonModeEmploi"
    android:textColor="@color/CouleurTexteBoutons"
    android:textSize="25sp"
    android:typeface="serif"/>

<vd63.jeux.Jeu.BoutonInterface
    android:id="@+id/BoutonStatistiques"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_gravity="center"
    android:layout_marginTop="@dimen/MargeVerticaleBoutonsInterfaceJeux"
    android:layout_weight="1"
    android:background="@drawable/bouton_jouer"
    android:text="@string/BoutonStatistiques"
    android:textColor="@color/CouleurTexteBoutons"
    android:textSize="25sp"
    android:typeface="serif"/>

<vd63.jeux.Jeu.BoutonInterface
    android:id="@+id/BoutonQuitter"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_gravity="center"
    android:layout_marginBottom="@dimen/MargeVerticaleBoutonsInterfaceJeux"
    android:layout_marginTop="@dimen/MargeVerticaleBoutonsInterfaceJeux"
    android:layout_weight="1"
    android:background="@drawable/bouton_quitter"
    android:text="@string/BoutonQuitter"
    android:textColor="@color/CouleurTexteBoutons"
    android:textSize="25sp"
    android:typeface="serif"/>

问题是,尽管我的框架和 Scene 的容器定义了宽度和高度设置为 match_parent,但生成的显示并不总是适合整个屏幕。在我的平板电脑上,只使用了一半的屏幕...

有人知道问题出在哪里吗?

您需要定义单独的布局文件夹以支持如下所示的不同设备...

res/layout/main_activity.xml
res/layout-sw600dp/main_activity.xml   # For 7” tablets
res/layout-sw720dp/main_activity.xml   # For 10” tablets

问题出在 myView=inflater.inflate(R.layout.my_fragment_layout,null,false) 行。一旦被 myView=inflater.inflate(R.layout.my_fragment_layout,container,false) 替换,其中 container 是作为参数传递给 onCreateView 函数的 Container,一切正常。