Анимация баннера для скольжения слева направо (от экрана к экрану)
Я пытаюсь анимировать текстовый баннер снаружи линейного макета на экране линейного макета одним нажатием кнопки, но текстовый баннер уведомления по-прежнему остается на экране при запуске приложения.
Моя активность с текстом уведомления
<?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();
но это не работает, и вид все еще остается на экране при запуске приложения
1 ответ
Решение
Вот код для скользящей анимации для просмотра.
inFromRightAnimation
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;
}
outToLeftAnimation
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;
}
inFromLeftAnimation
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;
}
outToRightAnimation
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());