【问题标题】:Translate Animation Not Working with OnClickListener翻译动画不适用于 OnClickListener
【发布时间】:2016-05-22 22:15:39
【问题描述】:

我正在使用以下翻译动画在我的活动的onCreate 方法中将imageView 带到屏幕上:

    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();


        }

    });

【问题讨论】:

  • 我认为您的问题是您实际上并没有在 LinearLayout 上调用动画。请注意,您永远不会将动画附加到视图本身。尝试调用login.startAnimation(login_anim) 而不是login_anim.start()
  • 这解决了问题,如果您将其发布为答案,我将能够接受它。
  • 太好了,很高兴它有帮助!答案添加在下面。

标签: java android android-linearlayout onclicklistener translate-animation


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 2012-04-13
    • 2014-10-03
    相关资源
    最近更新 更多