problem

记录开发中遇到的各种奇葩问题

1.给imageview设置clickable和focuse是无效的

处理方法:1.设置标记;2.在onTouch的action_up方法中做监听

2.在onclick事件给多个控件设置动画时,动画不是依次执行的,而是等onclick方法中所有的代码都执行完毕后,才同时开启动画效果,也就是看 到的动画没有先后顺序。如果想要有顺序该怎么办呢?让动画启动的按钮监听两个事件,一个是默认的onclick,一个是ontouch,根据android的发事件传递顺序,先执行ontouch中的action_down,再执行action_move,接着执行action up,最后执行onclick,如果还注册了onlongclick还继续执行onlongclick。所以呢最后的处理办法就是在onTouc方法中写需要先执行的动画,再在onClick中执行后面的动画。

3.AlertDialog对话框,如果想要设置单选框效果。则此时不能同时设置内容:builder.setMessage();否则单选框不显示。

4.百度地图坐标定位时,定位的经纬度坐标和实际经纬度坐标有一定偏差,之前写的地图程序却没有问题,所以排除误差是gps定位不准的造成的,逐行检查代码,才发现问题 --- 坐标定位时,需要指定坐标类型:

private LocationClientOption mOption;
private LocationClient mLocationClient;
----
mOption = new LocationClientOption();
mLocationClient = new LocationClient();
mOption.setCoorType("bd09ll");                 //设置坐标类型
mLocationClient.setLocOption(mOption);

误将bd09ll写成了bd0911,坑爹啊!!!(131118)

5.项目需求:基于百度地图实时绘制行走轨迹,最开始的方案是:通过百度地图提供的图层,定位获取到的经纬度对应的地图点坐标,并在图层上绘制路线,以此记录实时的运动轨迹,但是随着程序测试时间的延长,发现地图越来越卡,甚至不能移动。其实,出现这样的问题也可以理解,因为轨迹的绘制基于图层,每画一根轨迹线就相当于添加一层图层,当图层添加过多时,自然会卡。网上找了一圈,发现百度地图sdk-version.1.3.5,可以通过继承Overlay自定义图层,实现其中的draw方法,将地图坐标点装换成手机里的实际像像素点,因为不是在图层中一层层的添加路线,所以不会出现以上卡顿的现象,可以实现自定义绘制路线。但是新版的百度地图sdk,把此方法废除了,虽然在Overlay下添加了一些新的子类图层,如:ItemizedOverlay,此图层下可以自定义添加覆盖物。但是并不能在各个点之间连线,不能满足绘制路线的需求。

6.当直接或间接的创建了BDLocationListener的实例对象或其子类对象时,需要在清单文件中声明服务,否则异常。

<service
    android:name="com.baidu.location.f"
    android:enabled="true"
    android:process=":remote" >
</service>

7.异常:Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

异常处理--> 添加代码:intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

8.问题场景:给一组控件设置动画效果,需要在显示完动画效果后隐藏部分控件,但是不管是GONE和是INVISIBLE死活隐藏不,最后发现在动画中设置了:animation.setFillAfter(true);此句代码会导致当动画执行完毕后,控件的状态保留在动画执行完毕的最后的状态。所以控件的隐藏无效了。

9.父类(BaseActivity基类)中的底部栏里的若干控件实现了点击事件,子类中的底部栏控件继承自父类按理来说也应该响应对应的点击事件,反复检查代码逻辑上也没有问题,可是点击事件就是无响应。最后发现问题所在:子类里因为还有其他的点击事件需要响应,于是复写了点击事件的方法:onClick,然而却没有在此方法中调用父类的onClick方法,父类中的底部控件自然也就无响应了,解决办法:在子类的onClick方法的第一行添加:super.onClick(v);

10.尽管对button,textview等控件设置了:view.setClickable(false),但是控件还是能对点击事件响应。解决办法:将view.setClickable(false)这段代码写在view.setOnClickListener(this);后面。

出现以上问题的原因是,因为setOnClickListener方法里有如下代码

public void setOnClickListener(OnClickListener l) {
    if (!isClickable()) {
        setClickable(true);
    }
    getListenerInfo().mOnClickListener = l;
}

所以在setOnClickListener方法之前设置setClickable(false);是无效的。

 

 

 

 

 

posted @ 2013-07-22 06:29  沿途的景  阅读(211)  评论(0)    收藏  举报