cari

Rumah  >  Soal Jawab  >  teks badan

android - fragment设置关于translationY属性的objectAnimator属性动画

在给fragment设置关于translationY属性的objectAnimator属性动画时,如果valueFrom的值大于等于fragment的高度时(下面代码中的第一个动画),fragment的这个动画不能在activity上显示出来,当valueFrom的值小于fragment的高度时,fragment的这个动画就能在activity上正常显示。请问为何会出现这种情况。
fragment设置动画的代码:

1

2

3

4

5

6

7

8

9

10

11

<code>@Override

    public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {

        Animator anim;

        if (enter) {

            anim = ObjectAnimator.ofFloat(mRootView, "translationY", mRootView.getHeight(), 0).setDuration(2000);

        } else {

            anim = ObjectAnimator.ofFloat(mRootView, "translationY", 0, mRootView.getHeight()-1).setDuration(2000);

        }

 

        return anim;

    }</code>

fragment的mRootView的layout:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<code><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

              android:orientation="horizontal"

              android:background="@drawable/bg_white"

              android:layout_width="match_parent"

              android:layout_height="wrap_content">

    <ImageView

        android:layout_marginLeft="30dp"

        android:layout_marginTop="15dp"

        android:layout_marginBottom="15dp"

        android:layout_marginRight="40dp"

        android:layout_width="20dp"

        android:layout_height="20dp"

        android:src="@drawable/icon_navigation"/>

    <TextView

        android:layout_width="match_parent"

        android:layout_height="50dp"

        android:text="@string/app_name"

        android:id="@+id/location_txv"

        android:gravity="center_vertical"

        android:textSize="16sp"/>

</LinearLayout>

</code>

PHP中文网PHP中文网2808 hari yang lalu840

membalas semua(2)saya akan balas

  • 大家讲道理

    大家讲道理2017-04-17 17:26:39

    Ganti terjemahanY dengan y dan lihat,

    balas
    0
  • PHP中文网

    PHP中文网2017-04-17 17:26:39

    Penyelesaian telah ditemui setakat ini. Masalah ini nampaknya berkaitan dengan susun atur aktiviti.
    susun atur aktiviti:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    <code><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

                    xmlns:tools="http://schemas.android.com/tools"

                    android:layout_width="fill_parent"

                    android:layout_height="fill_parent"

                    android:id="@+id/root_view"

                    android:gravity="top|left"

                    android:orientation="vertical">

     

        <LinearLayout

            android:id="@+id/title_view"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:orientation="vertical">

            <Button

                android:id="@+id/title_btn"

                android:layout_width="fill_parent"

                android:layout_height="48dp"/>

        </LinearLayout>

     

        <ImageView

            android:id="@+id/location_view"

            android:layout_width="55dp"

            android:layout_height="55dp"

            android:src="@drawable/icon_location"

            android:layout_alignParentBottom="true"

            android:layout_alignParentEnd="true"

            android:layout_marginEnd="25dp"

            android:layout_marginBottom="85dp"/>

         

        <FrameLayout

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:id="@+id/fragment_bottom"

            android:layout_alignParentBottom="true">

        </FrameLayout>

    </RelativeLayout></code>

    Dalam susun atur aktiviti, saya telah menetapkan ketinggian butang dan imageView Ruang antara imageView dan bahagian bawah skrin, iaitu ayout_marginBottom="85dp", boleh dikatakan kosong (maksud sedemikian. sukar untuk diungkapkan). Penyelesaian semasa saya ialah menambah paparan tinggi 1dp di bahagian bawah ruang ini:

    1

    2

    3

    4

    <code><ImageView

            android:layout_width="match_parent"

            android:layout_height="1dp"

            android:layout_alignParentBottom="true"/></code>

    Selepas menambah ini, walaupun nilai valueFrom lebih besar daripada atau sama dengan ketinggian, animasi boleh dipaparkan seperti biasa, tetapi saya tidak tahu mengapa ini berlaku, saya rasa jika saya tidak menambah paparan ini, frameLayout yang menyimpan serpihan adalah seperti yang dinyatakan di atas dalam ruang "kosong", ia tidak boleh dipaparkan. Saya tidak tahu bagaimana proses ini dilukis dalam kod sumber, dan saya berharap mendapat jawapan.

    balas
    0
  • Batalbalas