ubuntu 12.04的gcc版本是4.6.3,版本太高,编译android时出错,要把gcc版本改为4.4.3。
通过gcc -v命令可以发现gcc库在/usr/lib/gcc/i686-linux-gnu目录下,该目录下有当前系统支持的各种版本gcc库 。在安装gcc 4.4前该目录下是没有4.4目录的,安装gcc 4.4后该目录下就会多出4.4这个目录,且该4.4目录下有各种相应库文件。
ubuntu 32bit系统下安装gcc 4.4的最好方法是仅用以下两条命令,不需要其它命令,否则编译时可能会出错。
sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4
$ ls -l gcc*
lrwxrwxrwx 1 root root 7 2011-10-29 09:11 gcc -> gcc-4.6
-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4
-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6
sudo mv gcc gcc.bak
sudo ln -s gcc-4.4 gcc
ls -l g++*
lrwxrwxrwx 1 root root 7 2011-08-14 15:17 g++ -> g++-4.6
-rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4
-rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6
需要将g++链接改为g++-4.4:
/usr/bin$ sudo mv g++ g++.bak
/usr/bin$sudo ln -s g++-4.4 g++
在项目中遇到的问题,需要同时给imageVIew设置onTouch和onClick事件 , 在onTouch事件中执行拖动操作,在onClick中执行显示一个对话框,可是两个事件一直有冲突。onTouch事件的返回值是boolean类型的,如果返回true ,那么就把事件拦截,onclick肯定无法响应;返回false,就同时执行onClick方法,要想把OnTouch和onClick事件完全的区
分,这里想到了一个不是很完美但使用完全没有错误的方法,就是在 OnTouch中的MotionEvent.ACTION_DOWN 时,记录下点(X1,Y1),在 MotionEvent.ACTION_UP 时,记录下点(X2,Y2),然后比对 俩点之间的距离,如果小于一个较小数值(比如5),就认为是Click事件,onTouch中返回false,如果距离较大,可以当作onTouch事件去处理,返回true:
示范如下:
@Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); int screenWidth = getResources().getDisplayMetrics().widthPixels; switch (action) { case MotionEvent.ACTION_DOWN: lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); x1 = event.getRawX();//得到相对应屏幕左上角的坐标 y1 = event.getRawY(); break; case MotionEvent.ACTION_MOVE: int dx = (int) event.getRawX() - lastX; int dy = (int) event.getRawY() - lastY; int left = v.getLeft() + dx; int top = v.getTop() + dy; int right = v.getRight() + dx; int bottom = v.getBottom() + dy; if (left < 0) { left = 0; right = left + v.getWidth(); } if (right > screenWidth) { right = screenWidth; left = right - v.getWidth(); } if (top < 0) { top = 0; bottom = top + v.getHeight(); } if (bottom > screenHeight) { bottom = screenHeight; top = bottom - v.getHeight(); } v.layout(left, top, right, bottom); lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); break; case MotionEvent.ACTION_UP: x2 = event.getRawX(); y2 = event.getRawY(); Log.i("i", x1 + ",,," + y1 +",,,"+x2+",,,"+y2); double distance = Math.sqrt(Math.abs(x1-x2)*Math.abs(x1-x2)+Math.abs(y1-y2)*Math.abs(y1-y2));//两点之间的距离 Log.i("i", "x1 - x2>>>>>>"+ distance); if (distance < 15) { // 距离较小,当作click事件来处理 showToastDialog("点击了"); return false; } else { showToastDialog("滑动了"); return true ; } } return false; }
1.unzip xxx.ipa