场景动画

时间:2017-08-21 18:03:35

标签: java android android-transitions

在我的应用中,我使用了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);获得了框架。
  • 我使用ViewScene创建activeView= inflater.inflate(R.layout.my_scene,myFrame,false);(请参阅下面的xml文件)。
  • 我使用Scene创建myScene =new Scene(myFrame, activeView);

我用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,但结果显示并不总是适合整个屏幕。在我的平板电脑上,只使用了一半的屏幕...

有谁知道问题可能来自哪里?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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