我想设置一个imageview onclicklistener,当用户点击图片时,它会回到最后一个激活状态。但不知何故,我也需要捏缩放功能。问题是,当我尝试捏合和缩放时,听众认为我正在点击图像,所以它回到最后一个活动。我怎样才能实现这两个目标?
答案 0 :(得分:0)
我不知道你是想在同一时间或一个接一个地做两件事。 但这是一个想法。
mImageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Animation anim = null;
// init your anim
anim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
startActivity(new Intent());
}
});
anim.start();
}
});
完成整个动画后启动意图。
答案 1 :(得分:0)
我找到了一种轻松解决问题的方法,但它有点硬编码。
我已经设置了一个触摸监听器而不是一个点击监听器,然后当我的手指触摸时我得到当前的毫秒数。当我的手指向上时,我再次获得当前的毫秒数。所以我比较两个时间,如果endTime - startTime< 100(0.1秒),活动将关闭。否则它将被视为捏合动作(因为你不能在0.1秒内捏合吗?)
这是我的代码:
private View.OnTouchListener mAttachmentViewOnTouch = new View.OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
startTime = System.currentTimeMillis();
return true;
}
if (event.getAction() == MotionEvent.ACTION_UP) {
endTime = System.currentTimeMillis();
if (endTime - startTime < 100)
finish();
return true;
}
if (event.getAction() == MotionEvent.ACTION_POINTER_DOWN)
{
startTime = 0;
endTime = 1000;
return true;
}
if(event.getAction() == MotionEvent.ACTION_POINTER_UP)
{
startTime = 0;
endTime = 1000;
return true;
}
return false;
}
};