我正在尝试使用ObjectAnimator为LinearLayout内的Button设置动画,当我点击Layout时没有任何反应。
但如果我在LinearLayout内部通过ImageViews更改按钮,则动画开始没有问题。
Heres是xml:
<LinearLayout
android:id="@+id/images"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/img1"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1.0"
android:src="@drawable/image1"
android:visibility="visible"
/>
<ImageView
android:id="@+id/img2"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1.0"
android:src="@drawable/image2"
android:visibility="gone" />
</LinearLayout>
这是代码:
final LinearLayout images = (LinearLayout) findViewById(R.id.images);
images.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
final ObjectAnimator goneToVisible = ObjectAnimator.ofFloat(images, "rotationY", -90f, 0f);
goneToVisible.setDuration(1000);
goneToVisible.start();
}
});
Everthing工作正常,但当我通过Button更改ImageView时:
<LinearLayout
android:id="@+id/images"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/img1"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1.0"
android:background="@drawable/image1"
android:visibility="visible"
/>
<Button
android:id="@+id/img2"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1.0"
android:background="@drawable/image2"
android:visibility="gone" />
</LinearLayout>
final LinearLayout images = (LinearLayout) findViewById(R.id.images);
images.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//flip(image1, image2, animLength.getProgress());
final ObjectAnimator goneToVisible = ObjectAnimator.ofFloat(images, "rotationY", -90f, 0f);
goneToVisible.setDuration(1000);
goneToVisible.start();
}
});
动画无效。
如果LinearLayout的取出按钮有效,但不在里面。我需要使用Buttons而不是ImageView。
我该如何解决这个问题?
感谢。
答案 0 :(得分:0)
ImageView
的第一个代码适合您,因为默认情况下ImageView
无法点击,因此当您点击LinearLayou
时,点击事件会响应LinearLayout
和布局点击事件中的动画将起作用
使用Button
的第二个代码不适合您,因为Button
具有可点击性,因此当您点击布局时button
具有布局的高度,以便单击布局,click事件将响应Button
而不是布局,并且您没有Button
点击事件的监听器没有动画发生,所以您可以将它放在xml布局中
android:clickable="false"
这将使事件直接响应布局或使Button
本身的动画像
final Button btn = (Button) findViewById(R.id.img1);
final LinearLayout images = (LinearLayout) findViewById(R.id.images);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//flip(image1, image2, animLength.getProgress());
final ObjectAnimator goneToVisible = ObjectAnimator.ofFloat(btn, "rotationY", -90f, 0f);
goneToVisible.setDuration(1000);
goneToVisible.start();
}
});
喂我回来