翻译动画不适用于 OnClickListener
Translate Animation Not Working with OnClickListener
我正在使用以下翻译动画在 activity 的 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()
。
我正在使用以下翻译动画在 activity 的 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()
。