Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android 5.0 – 以编程方式将AppCompat v7 21主页图标从汉堡动画设置为后退箭头大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在更新面向片段的应用程序(我有一个Activity,其FrameLayout容器作为我所有片段的主机)到Material Design.我想在更换片段时将汉堡图标设置为后箭头的动画.

基本上,如果这还不够清楚,here就是我想要实现的目标.我不想使用this library (MaterialMenu),我想使用官方的AppCompat lib来扩展可能.

由于this solution,我实现了这个效果,但是当更换片段时,我无法弄清楚如何将ActionBarDrawerToggle作为后退按钮.

所以我的问题是:如果后箭头图标仍然是ActionBarDrawerToggLeonce,Fragement已被替换?在这种情况下,我如何覆盖它,以便它像onBACkPressed(),而不是打开抽屉?我已经尝试了这个,但它不起作用:

@Override
    public Boolean onOptionsItemSELEcted(MenuItem item)
    {
        switch (item.getItemId())
        {
            case android.R.id.home:
                getActivity().onBACkPressed();
                return true;
         }
         return false;
    }

提前致谢.

解决方法

如果你手动打开它,我认为在抽屉里面跟踪更清洁.这就是我最终做的事情:
public class ManualActionBarDrawerToggle extends ActionBarDrawerToggle {
    private static final float MENU_POSITION = 0f;
    private static final float ARROW_POSITION = 1.0f;

    private final int animationLength;
    private final DrawerLayout drawerLayout;
    private final Activity activity;
    private State currentState;

    private enum State { UP_ARROW,MENU }

    public ManualActionBarDrawerToggle(Activity activity,DrawerLayout drawerLayout,int openDrawerContentDescriptionresource,int closeDrawerContentDescriptionresourcE) {
        super(activity,drawerLayout,openDrawerContentDescriptionresource,closeDrawerContentDescriptionresourcE);
        animationLength = activity.getresources().getInteger(android.R.Integer.config_shortAnimTimE);
        this.drawerLayout = drawerLayout;
        this.activity = activity;
        currentState = State.MENU;
    }

    public void animateToBACkArrow() {
        ValueAnimator anim = ValueAnimator.ofFloat(MENU_POSITION,ARROW_POSITION);
        anim.addupdateListener(new ValueAnimator.AnimatorupdateListener() {
        @Override
        public void onAnimationupdate(ValueAnimator valueAnimator) {
            float slideOffset = (Float) valueAnimator.getAnimatedValue();
            onDrawerSlide(drawerLayout,slideOffset);
            }
        });

        anim.seTinterpolator(new DecelerateInterpolator());
        anim.setDuration(animationLength);
        anim.start();

        currentState = State.UP_ARROW;
    }

    public void animateToMenu() {
        ValueAnimator anim = ValueAnimator.ofFloat(ARROW_POSITION,MENU_POSITION);
        anim.addupdateListener(new ValueAnimator.AnimatorupdateListener() {
            @Override
            public void onAnimationupdate(ValueAnimator valueAnimator) {
                float slideOffset = (Float) valueAnimator.getAnimatedValue();
                onDrawerSlide(drawerLayout,slideOffset);
            }
        });

        anim.seTinterpolator(new DecelerateInterpolator());
        anim.setDuration(animationLength);
        anim.start();

        currentState = State.MENU;
    }

    @Override
    public Boolean onOptionsItemSELEcted(MenuItem item) {
        switch (item.getItemId()) {
            case (android.R.id.homE):
                if (currentState == State.UP_ARROW) {
                    activity.onBACkPressed();
                    return true;
                }
        }
        return super.onOptionsItemSELEcted(item);
    }
}

大佬总结

以上是大佬教程为你收集整理的Android 5.0 – 以编程方式将AppCompat v7 21主页图标从汉堡动画设置为后退箭头全部内容,希望文章能够帮你解决Android 5.0 – 以编程方式将AppCompat v7 21主页图标从汉堡动画设置为后退箭头所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。