0

工作我使用下面的翻译动画带来的imageView到屏幕上的我的活动的onCreate方法:翻译动画不能与OnClickListener

mScanner = (ImageView)findViewById(R.id.logo_img); 
    Display display = getWindowManager().getDefaultDisplay(); 
    final int height = display.getHeight(); 
    mAnimation = new TranslateAnimation(0, 0, -300, height * 2/10); 
    mAnimation.setDuration(2500); 
    mAnimation.setFillAfter(true); 
    mScanner.setAnimation(mAnimation); 
    mScanner.setVisibility(View.VISIBLE); 

这工作得很好。现在我有我的屏幕底部的两个按钮的线性布局里面,就像这样:

<LinearLayout 
    android:orientation="vertical" 
    android:layout_gravity="bottom" 
    android:layout_height="0px" 
    android:layout_weight="25" 
    android:weightSum="100" 
    android:layout_width="fill_parent"> 
    <Button 
     android:layout_height="0px" 
     android:layout_weight="50" 
     android:id="@+id/log_in_btn" 
     android:background="@drawable/btn_back" 
     android:text="LOG IN" 
     android:onClick="logIn" 
     android:textSize="25dp" 
     android:textColor="#FFFFFF" 
     android:layout_width="fill_parent"> 

    </Button> 
    <Button 
     android:layout_height="0px" 
     android:layout_weight="50" 
     android:textColor="#FFFFFF" 
     android:background="@drawable/btn_back" 
     android:textSize="25dp" 
     android:text="SIGN UP" 
     android:layout_width="fill_parent"> 

    </Button> 
</LinearLayout> 

添加以下onClickListener的第一个按钮。我的意图是将整个线性布局向上移动到标识以前的高度(屏幕高度的20%)。但是,当我按下按钮什么都没有发生。

Button button = (Button) findViewById(R.id.log_in_btn); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      LinearLayout login = (LinearLayout) view.getParent(); 
      login_anim = new TranslateAnimation(0,0,0, height* 2/10); 
      login_anim.setDuration(2500); 
      login_anim.setFillAfter(true); 
      login.setAnimation(login_anim); 
      login_anim.start(); 


     } 

    }); 
+1

我认为你的问题是你实际上并没有在LinearLayout上调用动画。请注意,您绝不会将动画附加到视图本身。而不是'login_anim.start()'而是尝试调用'login.startAnimation(login_anim)'。 – NoChinDeluxe

+0

这解决了这个问题,如果您将它作为答案发布,我将能够接受它。 – Alk

+0

太棒了,很高兴它帮助!下面添加答案。 – NoChinDeluxe

回答

1

你的问题是你实际上没有在LinearLayout上调用动画。请注意,您绝不会将动画附加到视图本身。请改为拨打login.startAnimation(login_anim)代替login_anim.start()