有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android动画错误,滑出并消除

我的动画只是滑出然后消失?有人能帮我解决问题吗

在顶部,我宣布了这一点

private RelativeLayout buttonContainer;
   buttonContainer = (RelativeLayout) sidebar.getParent();

以下是我的功能部件代码:

      private RelativeLayout.LayoutParams params;

   public void startTapped(View view) {
       sideBar(44, 0);
   }

   public void sideBar(final int translateX, final int translateY)
   {
       TranslateAnimation translate = new TranslateAnimation(0, translateX, 0, translateY);
       translate.setDuration(1500);
       translate.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationEnd(Animation animation) {
            // TODO Auto-generated method stub
            buttonContainer.removeView(sidebar);
            sidebar = new ImageView(Game.this);
            sidebar.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {

                }
            });
            if(out == 0)
            {
            params.leftMargin = translateX + params.leftMargin;
            params.topMargin = translateY + params.topMargin;
            params.rightMargin = 0 + params.rightMargin;
            params.bottomMargin = 0 + params.bottomMargin;
            sidebar.setLayoutParams(params);
            buttonContainer.addView(sidebar);
            out=1;
            }
            else if(out == 1)
            {
                params.leftMargin = translateX - params.leftMargin;
                params.topMargin = translateY - params.topMargin;
                params.rightMargin = 0 - params.rightMargin;
                params.bottomMargin = 0 - params.bottomMargin;
                sidebar.setLayoutParams(params);
                buttonContainer.addView(sidebar);
                out=0;
            }
        }

@Override
public void onClick(View v) {


    switch(v.getId())
    {


        case R.id.sidebar:
            startTapped(sidebar);
        break;
    }       
}

它像预期的那样滑出,然后消失了,但是!,我仍然可以点击它,但它是看不见的


共 (1) 个答案

  1. # 1 楼答案

    你的很多代码都不见了。。你没有很好地描述你的目标。。但看起来你已经把事情复杂化了。试试这个:

    public void startTapped(View view) {
        if (view.getVisibility() == View.GONE) {
            view.startAnimation(sideBar(context.getResources()
                   .getDimensionPixelOffset(R.dimen.side_bar_width)*-1, 0));
            view.setVisibility(View.VISIBLE);
        } else {
            view.setVisibility(View.GONE);
            view.startAnimation(sideBar(0, context.getResources()
                   .getDimensionPixelOffset(R.dimen.side_bar_width)*-1));
        }
    }
    
    public Animation sideBar(int start, int finish) {
        TranslateAnimation translate = new TranslateAnimation(start, finish, 0, 0);
        translate.setDuration(1500);
        return translate;
    }
    

    dimens.xml文件添加到values文件夹是res

    <resources>
        <dimen name="side_bar_width">44dp</dimen>
    </resources>
    

    您还需要将侧边栏视图设置为android:visibility="gone",这样应用程序启动时菜单就不会打开