如何在Android 17及以下版本中使用动画?

时间:2017-01-09 06:39:42

标签: android animation android-animation

我想在我的应用程序中使用动画,然后在下面编写代码。但是这些代码在 android 18及以上上运行!但是我的应用程序 minSDK 14 ,这个动画在android 17及以下版本中没有显示!只显示 api 18 及以上!!!

我的代码:

public void disableSearch() {
    searchEnabled = false;
    Animation out = AnimationUtils.loadAnimation(getContext(), R.anim.fade_out);
    Animation in = AnimationUtils.loadAnimation(getContext(), R.anim.fade_in_right);
    out.setAnimationListener(this);
    searchIcon.setVisibility(VISIBLE);
    inputContainer.startAnimation(out);
    searchIcon.startAnimation(in);

    if (listenerExists())
        onSearchActionListener.onSearchStateChanged(false);
    if (suggestionsVisible) animateLastRequests(getListHeight(false), 0);
}

/**
 * Shows search input and close arrow
 */
public void enableSearch() {
    adapter.notifyDataSetChanged();
    searchEnabled = true;
    Animation left_in = AnimationUtils.loadAnimation(getContext(), R.anim.fade_in_left);
    Animation left_out = AnimationUtils.loadAnimation(getContext(), R.anim.fade_out_left);
    left_in.setAnimationListener(this);
    inputContainer.setVisibility(VISIBLE);
    inputContainer.startAnimation(left_in);
    if (listenerExists()) {
        onSearchActionListener.onSearchStateChanged(true);
    }
    searchIcon.startAnimation(left_out);
}

我的动画:

fadeinLeft.xml
    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/decelerate_interpolator">
        <translate android:fromXDelta="70" android:toXDelta="0" android:duration="150"/>
        <alpha android:fromAlpha="0" android:toAlpha="1" android:duration="200"/>
    </set>

    FadeOut.xml
        <?xml version="1.0" encoding="utf-8"?>
        <set xmlns:android="http://schemas.android.com/apk/res/android">
            <alpha
                android:duration="250"
                android:fromAlpha="1"
                android:toAlpha="0"/>
        </set>

我如何修复此问题并在Android 17及更低版本上运行此动画?谢谢所有&lt; 3

2 个答案:

答案 0 :(得分:0)

必须将您的java类扩展为AppCompatActivity

执行此操作将导入与Activity相同的android.support.v7.app.AppCompatActivity;只有它允许支持向后兼容。

快乐的编码。

答案 1 :(得分:0)

根据您的 FadeOut.xml 查看动画如下所示:

yourView.animate().alpha(0).start();

根据你的 fadeinLeft.xml 查看动画如下:

yourView.animate().alpha(1.0).x(0).start();

在此动画中,应在调用上述动画行之前设置动画xml中的from值。

例如:如果你想从0到1开始alpha动画并且你当前的视图alpha是1,那么你应该在做动画yourView.setAlpha(0);之前做yourView.animate().alpha(1).start();