Archive for 十月 2010

解决Gallery载入大图片导致OutOfMemoryError内存溢出问题

在使用Gallery控件时,如果载入的图片过多,过大,就很容易出现OutOfMemoryError异常,就是内存溢出。这是因为Android默认分配的内存只有8M,而载入的图片如果是JPG之类的压缩格式,在内存中展开时就会占用大量的空间,也就容易内存溢出。这时可以用下面的方法解决:


	      ImageView i = new ImageView(mContext);
	      BitmapFactory.Options options=new BitmapFactory.Options();
          options.inSampleSize = 10;
          //貌似这个options的功能是返回缩略图,10即表示长和宽为原来的1/10,即面积为原来的1/100
          //缩略图可以减少内存占用
	      Bitmap bm = BitmapFactory.decodeFile(lis.
	                            get(position).toString(),options);
	      i.setImageBitmap(bm);
	      bm.recycle();
	      //资源回收

更深层优化方法,见:

Android 捕获返回键,重写返回键功能

有时候我们的用户按返回键时并不是想要关闭Activity,比如说在文件管理器里,按返回键一般是希望返回到上层目录。我们可以通过捕获按键,再覆写的方法再修改按键功能。


    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        	File f=new File(String.valueOf(cdir.getText()));
        	File fp=new File(f.getParent());
        	if(fp.canWrite()){
        		showdir(f.getParent());
        	}else{
        		Toast.makeText(Selectdir.this, "上级文件夹不可写", 1).show();
        	}     	
            return false;
        }
        return false;
    }

showdir是一个遍历目录的函数

CheckBox 加入ListView会导致OnItemClick不可用

在ListView里加入CheckBox,会导致无需点击listview的Item,只能点击CheckBox,原因是CheckBox的事件响应优先级高于List Item,所以屏蔽了ListItem的单击事件,如果需要使用OnItemClick,需要设置CheckBox的android:focusable="false"

解决Eclipse显示目录不显示包的问题

出现这个问题是因为切换到了navigator视图,只要切换成package Explorer就OK

工行的国际E卡不能充值Google CheckOut(不能开通android market开发者帐号)

经过亲身试验,证实工行的国际E卡不能充值Google CheckOut。因为工行网上买入卖出美元至少要100美元,Googles要扣25美元的由帐号费用以及1美元的信用卡验证费,所以我买了126美元,充入国际E卡,经过多次实验及与95588客服沟通,始终无法支付成功,Googe提示信用卡拒绝支付。于是又把126美元换成了人民币,结果白白损失了10元人民币(汇率问题)。

Eclipse 的代码自动提示插件Aptana CSS代码提示

Eclipse本身有代码提示功能,但是并不是所有的文件都有提示,比如说CSS。之前在Windows平台编辑CSS,PHP一直都用Dreamweaver,之所以一直用这个臃肿的家伙,就是因为它那还算不错的代码提示功能。现在换到了Ubuntu,用DW是不可能了(在Windows下就卡,如果再来Wine一下的话,难以想像)。因为之前已经安装了Eclipse,PHP全都用Eclipse写,看到新建菜单上也有CSS文件,所以就试着用Eclipse写CSS。但是用了以后才发现,Eclipse编辑css没有代码提示功能,像我等新人,没有代码提示还怎么写(安装PDT后,php代码提示已经很好用了)。于是Google了一下,看看有没有什么插件能够实现。结果还真被我找到了,一个叫Aptana的插件,安装地址:http://download.aptana.com/tools/studio/plugin/install/studio(在线安装),在Install对话框中,注意去掉Group items by category 和 Contact all update sites during install to find required software 两项。装完了重新打开CSS文件,会默认使用Aptana的编辑器,这样就完美实现了代码提示功能,一点都不比Dreamweaver差。

之前用Windows的时候,只用Eclipse写Android,从来不知道Eclipse如此强大,其实在上大学时JAVA老师就推荐我们用Eclipse,但是我们当时因为太复杂以及语言的原因都放弃了,改用盗版的Jcreator。现在用Ubuntu,加上强大的Eclipse,基本上可以摆脱Windows了。目前还有线上支付和图片处理没有解决,GIMP貌似没有类似PS的动作功能。

Eclipse 代码提示背景黑色的解决

今天花了一天的时间,翻阅无数网站,总把把开发平台搬到ubuntu下。现在机器已经装好了php,mysql,nginx,Eclipse,android-sdk,Eclipse也装了ADT和PDT。现在Eclipse已经可以编译android源码在模拟器调试了,但是却发现,Eclipse的代码提示背景是黑色的,这样就看不到提示内容了。网上查了下,原来是跟ubuntu默认的主题有点冲突,修改一下就好了。

【解决方案】

为了解决这个问题,当然要改掉Ubuntu主题中Tooltip的背景色了。可以在下面的菜单中找到:

系统->首选项->外观->主题->自定义(是个按钮)->颜色(选项卡)->工具提示

新版的Ubuntu,换了unity界面,用上面的方法无效了,直接改主题相关文件。
默认主题是Ambiance,修改/usr/share/themes/Ambiance/gtk-2.0/gtkrc
把tooltip_fg_color和tooltip_bg_color改成自己喜欢的颜色就好了,我的是tooltip_fg_color:#000000,tooltip_bg_color:#e3c98c

Ubuntu 把最大化,最小化以及关闭按钮移回右侧

感觉ubuntu默认把他们放在左上角有点不习惯,在终端运行下面的命令可以换回来
gconftool-2 --set /apps/metacity/general/button_layout --type string "menu:minimize,maximize,close"

当然,你也可以自己定义一下顺序