Archive for 十月 2011

Java UniCode转换成中文


    public static String decodeUnicode(String dataStr) {  

        final StringBuffer buffer = new StringBuffer();  
        Pattern p=Pattern.compile("\\\\u([\\S]{4})([^\\\\]*)");
        Matcher match=p.matcher(dataStr);
        while(match.find())
        {
        	char letter = (char) Integer.parseInt(match.group(1), 16);
        	buffer.append(new Character(letter).toString());
        	buffer.append(match.group(2));
        }
        
        return buffer.toString();  
    } 
    //针对某网站,只转中文而不转数字写的,可以直接把其中的数字返回
    //如果只有中文,不要append group(2)就可以,当然,不改也是没有问题的

关闭Activity间切换时的动画效果

用下面的方法关闭Activity间切换时动画效果,有个副作用,就是欲打开的Activity必须是新开,没有在内存中,所以每次startActivity后,需要把自己finish掉,不能加FLAG_ACTIVITY_REORDER_TO_FRONT。


Intent intent = new Intent(this, Target.class);
startActivity(intent);
finish();
overridePendingTransition(0, 0);
//无动画

Linux 删除过多文件方法

如果直接用rm 来删,会提示Argument list too long
用下面的方法删:
ls |xargs rm
ls与|之间有空格。回车后慢慢等吧。

Android 使用动画效果后的控件位置处理 类似系统通知栏下拉动画

Android的动画的使用,请参考。Android的动画,在设计方面,我有点不太理解,觉得这样搞很怪,因为在控件动画后,即使设置了停留在动画结束时的位置,我们也确实看到了控件停在那个位置,但其实该控件的真实位置还是在原来动画前的那里。举个例子,如果有个Button,你给它设置了动画,让它移动到其他位置,当移动完成后,你会发现,点击Button没有任何效果,而在Button原来的位置,就是动画前的位置点击,明明没有任何控件,却看到了点击Button的效果。不知道Google为什么要这样设计。
解决思路:动画不设置结束后停留在结束位置,通过setAnimationListener方法设置动画监听器,在动画结束时,即onAnimationEnd方法中,手动用layout或者setLayoutParams方法把控件移动到动画结束的位置。
范例说明:启动时如下图,一个按钮,按钮上有一条高10像素的白条,其实这是另一个View,但是我把它Y轴设为了负,所以只能看到一部分,另一部分被隐藏在屏幕上方。 Continue reading ‘Android 使用动画效果后的控件位置处理 类似系统通知栏下拉动画’ »

HttpClient 4.1处理重定向

网上关于用HttpClient处理重定向的文章很多,但是我测了以后,基本都不能用,因为在我这不管有没重定向,状态码全部返回200,拿到的数据都是重定向后的,就是说HttpClient自动帮我们处理了重定向,可能跟HttpClient的版本有关,我的版本是4.1。
下面是HttpClient 4.1可用的,检测重定向的方法: Continue reading ‘HttpClient 4.1处理重定向’ »

Java 使用Mysql数据库,Insert时返回最后插入新行的自动增长ID方法

要返回刚插入的新行的ID,在JDBC里稍稍有点麻烦,因为没有很直接的方法。


statement.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS); 
ResultSet rs2 = statement.getGeneratedKeys ();  
rs2.next();
System.out.println(rs2.getInt(1));

Gallery的另类用法 类似GridView横向滚动

Gallery是个非常强大的控件,但是一般都把它当作显示图片之用。其实只要定制适配器,Gallery可以放进任何控件(显示图片就是放了ImageView)。我本来是想要GridView横向滚动的效果,但是实现起来好像比较麻烦,而Gallery本来就是横向滚动的,只要稍稍修改适配器即可。下面的例子把数据定死了,只需稍稍修改一下,把数据数组作为参数传入即可。
适配器代码: Continue reading ‘Gallery的另类用法 类似GridView横向滚动’ »

ListView 更新时java.lang.IllegalStateException异常的解决

ListView在更新时报异常:
ERROR/AndroidRuntime(15260): java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131099657, class android.widget.ListView) with Adapter(class com.pocketdigi.pptheater.ListAdapter)]
应用强制关闭。本来这个异常应该是在新线程中更新ListView,没有发送notifyDataSetChanged()时产生的,但即使用Handler发了,还是会时不时抛异常,这应该是个BUG。
我们可以在Handler里执行notifyDataSetChanged()前,先把ListView隐藏,执行完notifyDataSetChanged()后再显示ListView来处理这个问题:


listView1.setVisibility(View.GONE);
listAdapter.notifyDataSetChanged();
listView1.setVisibility(View.VISIBLE);

不能在新线程里分三次发送Handler消息,必须一次执行
用了上面的方法,可能还会抛异常,那就再稍稍改下代码,把ListView的添加,删除,清空等UI操作都用Handler来处理,方法参考