Android实现Activity界面进入和退出动画(仿微信)
  ttOzQgS7km1w 2023年12月12日 13 0


 

下面介绍的是实现右进右出

一、在res下新建一个anim文件夹(有了就不用新建了)

1、新建in_from_right.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="200"
    android:fromXDelta="100%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toXDelta="0%p" >

</translate>

2、新建out_to_right.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="200"
    android:fromXDelta="0%p"
    android:toXDelta="100%p"
    android:interpolator="@android:anim/accelerate_interpolator" >

</translate>

二、在Activity操作使用介绍

1、进入操作

这个的实现是其实可以新建一个BaseActvity然后写入统一的跳转方法 然后每个activity直接可以使用的

startActivity(new Intent(getActivity(), NetClosedActivity.class));
 overridePendingTransition(R.anim.in_from_right, R.anim.out_to_right);

下面的代码就是在BaseActivity中实现的公用的方法 

下面这块还做了跳转的时候双击的处理

/**
     * 跳转activity
     *
     * @param clz the clz
     */
    public void startActivity(Class<?> clz) {
        if (isFastDoubleClick()) {
            startActivity(clz, null);
            overridePendingTransition(R.anim.in_from_right, R.anim.out_to_right);
        }
    }
/**
     * Is fast double click boolean.
     *
     * @return the boolean
     */
    public boolean isFastDoubleClick() {
        long time = System.currentTimeMillis();
        long timeD = time - lastClickTime;
        if (0 < timeD && timeD < 800) {
            return false;
        }
        lastClickTime = time;
        return true;

    }

 下面的方法是上面调用的

/**
     * 含有Bundle通过Class跳转界面
     *
     * @param cls    the cls
     * @param bundle the bundle
     */
    protected void startActivity(Class<?> cls, Bundle bundle) {
        Intent intent = new Intent();
        intent.setClass(this, cls);
        if (bundle != null) {
            intent.putExtras(bundle);
        }
        startActivity(intent);
    }

2、退出操作

@Override
    public void onBackPressed() {
        super.onBackPressed();
        finish();
        overridePendingTransition(R.anim.in_from_left, R.anim.out_to_right);
    }

三、Fragment中的操作流程

下面这个就是要加个getActivity

getActivity().overridePendingTransition(R.anim.in_from_right, R.anim.out_to_right);

 四、问题

可能你会问我为啥不在style中设置他的

windowEnterAnimation
windowExitAnimation

这俩我用了 有问题,一会显示动画一会不显示的,手机不一样还有问题

<item name="windowIsTranslucente">true</item> ...

这个是防止启动出现黑屏的但是影响在样式里面设置动画,导致不生效

所以还是用上面讲解的!!!经过实践得到的就是上面讲述的操作

 

 

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月12日 0

暂无评论

推荐阅读
  anLrwkgbyYZS   2023年12月30日   14   0   0 ideciciMaxideMax
ttOzQgS7km1w