1

我正在尝试通过单击按钮将文本横幅从线性布局外部动画到线性布局的屏幕上,但是当应用程序启动时通知文本横幅仍保留在屏幕上。

带有通知横幅文本的我的活动

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:background="@color/white"
    android:clipChildren="false"
    android:layout_height="match_parent">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary" >
    <ImageButton
        android:id="@+id/go_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="13dp"
        android:layout_alignLeft="@id/title"
        android:layout_alignParentLeft="true"
        android:background="@mipmap/back" />

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="View Product"
        android:textStyle="bold"
        android:textSize="25sp"
        android:layout_centerInParent="true"
        android:paddingBottom="5dp"
        android:textAlignment="center"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:textColor="@color/white"/>

    <include android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@id/title"
        android:layout_alignParentRight="true"
        layout="@layout/notification_layout"/>
</RelativeLayout>

<include android:layout_width="match_parent"
    android:layout_height="wrap_content"
    layout="@layout/loader"/>

<include android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignRight="@id/title"
    android:layout_alignParentRight="true"
    layout="@layout/alert_banner"/>
<ImageView
    android:id="@+id/product_image"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="10dp"
    android:scaleType="fitXY"
    android:adjustViewBounds="true"
    app:srcCompat="@drawable/slider_item_2" />

<TextView
    android:id="@+id/product_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Nike Air Mag - Limited Edition Sneakers"
    android:textStyle="bold"
    android:textSize="25sp"
    android:textAlignment="center"
    android:layout_margin="4dp"
    android:textColor="@color/print"/>

<Button
    android:id="@+id/add_to_cart"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:drawableRight="@mipmap/add"
    android:layout_marginLeft="25dp"
    android:layout_marginRight="25dp"
    android:layout_marginTop="30dp"
    android:textColor="@color/white"
    android:textStyle="bold"
    android:textSize="20sp"
    android:layout_marginBottom="10dp"
    android:background="@drawable/button_rounded_corners"
    android:paddingRight="10dp"
    android:text="Add to Cart" />

在我的 java 类中,我使用以下内容开始动画

  //This is done when initializing the view
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)
            product_image.getLayoutParams();
    params.setMargins(-1 * alert_info.getWidth(), 0, 0, 0);
    alert_info.setLayoutParams(params);

//when the button is clicked
ObjectAnimator animX = ObjectAnimator.ofFloat(alert_info,
                    View.TRANSLATION_X, -1* alert_info.getWidth(), 0);
            animX.setDuration(500);
            // alert_info.setVisibility(View.VISIBLE);
            animX.start();

但它不起作用,应用程序启动时视图仍保留在屏幕上

4

1 回答 1

3

这是视图滑动动画的代码。

在FromRight动画中

private Animation inFromRightAnimation() {
    Animation inFromRight = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
    inFromRight.setDuration(500);
    inFromRight.setInterpolator(new AccelerateInterpolator()); 
    return inFromRight; 
}

outToLeft动画

private Animation outToLeftAnimation() {
    Animation outtoLeft = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
    outtoLeft.setDuration(500);
    outtoLeft.setInterpolator(new AccelerateInterpolator());
    return outtoLeft;
} 

在FromLeft动画中

private Animation inFromLeftAnimation() {
    Animation inFromLeft = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
    inFromLeft.setDuration(500);
    inFromLeft.setInterpolator(new AccelerateInterpolator());
    return inFromLeft;
}

outToRight动画

private Animation outToRightAnimation() {
    Animation outtoRight = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
    outtoRight.setDuration(500);
    outtoRight.setInterpolator(new AccelerateInterpolator());
    return outtoRight;
}

现在在视图上启动动画

View.startAnimation(inFromRightAnimation());
于 2018-03-23T15:30:04.600 回答