场景动画的场景大小错误
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">
之后:
- 我得到了
myFrame=(LinearLayout)myView.findViewById(R.id.MyContainer);
的框架。
- 我用
activeView= inflater.inflate(R.layout.my_scene,myFrame,false);
为我的 Scene
创建了 View
(请参阅下面的 xml 文件)。
- 我用
myScene =new Scene(myFrame, activeView);
创建了 Scene
。
然后我开始 Transition
TransitionManager.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
,一切正常。
在我的应用程序中,我使用了一个 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">
之后:
- 我得到了
myFrame=(LinearLayout)myView.findViewById(R.id.MyContainer);
的框架。 - 我用
activeView= inflater.inflate(R.layout.my_scene,myFrame,false);
为我的Scene
创建了View
(请参阅下面的 xml 文件)。 - 我用
myScene =new Scene(myFrame, activeView);
创建了Scene
。
然后我开始 Transition
TransitionManager.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
,一切正常。