在Android应用程序中,我有一个imageview。我想把另一张图片放在上面。当用户触摸图像时,顶部图像将像窗帘一样向上滑动,以显示其下方的图像。当用户移开他的手指时,我将转到另一页
我怎样才能做到这一点?
基本上我知道我必须在" ACTION_DOWN"上实现OnTouch Listener和worl。和" ACTION_UP"案例。但我不知道的是如何做那个幕布滑动动画?因为翻译会翻译整个图像,而不仅仅是图像画布。
感谢您的帮助
答案 0 :(得分:1)
通过ImageView
下FrameLayout
下的两个<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/solid_blue"
android:id="@+id/img_back"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/solid_green"
android:id="@+id/img_front"/>
</FrameLayout>
来实现它是可能的:
ObjectAnimator mSlideAnim;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.curtainstyle);
final ImageView imgFront = (ImageView) findViewById(R.id.img_front);
FrameLayout parent = (FrameLayout) findViewById(R.id.parent);
parent.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
if (mSlideAnim == null) {
triggerSlideUpAnimation(imgFront);
}
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
goToAnotherPage();
break;
}
return true;
}
});
}
private void triggerSlideUpAnimation(ImageView imgFront) {
int height = imgFront.getHeight();
mSlideAnim = ObjectAnimator.ofFloat(imgFront, "translationY", 0, -height);
mSlideAnim.setDuration(300);
mSlideAnim.start();
}
private void goToAnotherPage() {
Toast.makeText(this, "Go to another page", Toast.LENGTH_SHORT).show();
}
在活动中添加onTouchListener并翻译前面的ImageView将完成这项工作:
{{1}}