【问题标题】:Wrong scene size with Scene Animation场景动画的场景大小错误
【发布时间】:2017-08-21 18:03:34
【问题描述】:

在我的应用程序中,我使用了一个 Fragmentin,我想为多个 Scenes 设置动画。在我的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); 的框架。
  • 我为我的 SceneactiveView= inflater.inflate(R.layout.my_scene,myFrame,false); 创建了 View(请参阅下面的 xml 文件)。
  • 我创建了ScenemyScene =new Scene(myFrame, activeView);

然后我用TransitionManager.go(myScene , myTransition); 开始Transition

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

有谁知道问题出在哪里?

【问题讨论】:

    标签: java android android-transitions


    【解决方案1】:

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

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

    【讨论】:

    • 有点怀疑,但还是试了一下(为什么我需要这样做,因为match_parent 具有相同的含义,无论屏幕大小或密度如何?)。结果:没有变化...
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-15
      • 2012-08-14
      • 2015-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多