Android开发过程中遇到的一些小问题

做Android开发有一段时间了,其实在开发过程中,遇到大的问题可能每个人不一样,网上也能搜到一些大体思路,再根据自己项目的实际情况来解决,但是一些小问题,虽然不难,但是遇到了却感觉烦躁,而且这些小问题一般以界面问题巨多。。。。。

下面说说我遇到的一些问题和解决方法吧。


1、自定义seekbar中滑块被遮住的问题。

      网上解答一般是设置  thumboffset=0或者设置paddingleft/paddingright

但是在xml文件中设置thumboffset,对有些系统有用,有些没用,比如我在4.0机子上测试,设置这个值就可以,在2.1上就不行。设置padding更不用说了,会让进度条短一截,更难看。

     解决方法就是不用设置padding,在代码中设置thumboffset。

如下:  seekbar sk=(seekbar)findviewbyid(...);

             sk.setthumboffset(0);


这个我试过的机子都可以。


2、ListView的item中有类似checkbox的布尔值的选项。

     这种比如点击一项要选中,然后滑动一会儿,会发现选中的item错乱了。这个是ListView的重绘渲染机制决定的。一堆人说用viewholder,其实viewholder是没什么用的。我解决的方法就是用一个 ArrayList——称之为flaglist ,数组大小和你保存数据用的集合大小相同,比如在第一次赋值时都设置为false,在适配器的getview中,每个checkbox做一个判断,如果flaglist的当前项为false,就不选中,如果为true,就选中。然后在checkbox的点击事件中,相应地改变flaglist中的值。这样每次滑动,ListView进行重绘,调用getview时,就会依赖flaglist来判断当前项是不是选中。其实用个其他什么集合的保存一下都可以,如hashmap,这样对系统资源消耗其实很小,而且比较方便。


3、当你的应用里有一些文件,如apk、视频、音频文件,这时要抛给系统去打开。典型的就是视频文件打开,一般的播放器都是横屏的,但是有时候从播放器返回到自己应用界面时,自己的应用界面也会变成坑爹的横屏,这种情况无论是再怎么设置强制竖屏都没用,解决方法是 抛给系统打开的intent,加一个new task的flag,OK。


3、加载图片的回收

     内存的OOM一直是Java的硬伤。在Android中,Activity被finish掉后,占用的内存不会立即回收,可以用MAT工具分析一下便知。我们只能尽最大力回收我们可以回收的。其中图片是占用内存很大的,在ondestroy中可以这样

     if(bitmap!=null && !bitmap.isrecycled()){
     bitmap.recycle();
     bitmap=null;
    }
System.gc();

 
  

当然,内存回收涉及到很多方面,这里只先简单提一下。





你可能感兴趣的:(android,android,listview,hashmap,null,java)