android 双击屏幕触发事件,放大图片,不用接入借口api,不用OnGestureListener,不造成代码累赘方法

来源:互联网 发布:看不到其他ubuntu 编辑:程序博客网 时间:2024/06/13 01:23



android或ios现在都没有双击事件,但是android的api有双击的接口,但是必须加入OnGestureListener类里的所有方法,非常麻烦。

OnGestureListener方法我也试过,也不知道为什么根本没用。而且对于网上各种

所以最后用了一个计算时间的方法。


首先我自己的工程本身就监听放大缩小功能,所以本身就有



public class MainActivity extends Activity {


        
private ImageView = img;
public Handler doubleTapHandler = null;
protected long lastDown = -1;
public final static long DOUBLE_TIME = 500;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题栏

setContentView(R.layout.main_activity);

img.setOnTouchListener(new TounchListener());


new Thread() {
@Override
public void run() {
sendMessage(DOWNLOAD_OK);
downloadPicture();
super.run();
}
}.start();


}

接着就是监听setOnTouchListener。



private class TounchListener implements OnTouchListener {

public boolean onTouch(View v, MotionEvent event) {
ImageView iv = (ImageView) v;

switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
this.handleEvent(event);
break;

}

return true;
}


protected void handleEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
long nowDown = System.currentTimeMillis();
if (nowDown - lastDown < DOUBLE_TIME) {                   // 计算时间差
if (doubleTapHandler != null)
{
doubleTapHandler.sendEmptyMessage(-1);
}
img.setScaleType(ScaleType.FIT_CENTER);                //在这里运行
Log.v("press","2");
} else {
lastDown = nowDown;
Log.v("press","3");
}
break;
case MotionEvent.ACTION_UP:
Log.v("press", String.valueOf(MotionEvent.ACTION_UP));
break;
}
}

}


当然两个函数可以整合,但是我的工程有多个手势,为了更好看就分成两个函数。

原创粉丝点击