2013年6月3日

摘要: 大图显示,GC回收机制原理,ListView原理。1、大图显示尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source,decodeStream最大的秘密在于其直接调用JNI>>nativeDecodeAsset()来完成decode,无需再使 阅读全文
posted @ 2013-06-03 14:05 森 林 阅读(126) 评论(0) 推荐(0) 编辑

2013年5月28日

摘要: Sqlite创建自增字段,代码如下:CREATE TABLE [push_widget] ( [_id] INTEGER PRIMARY KEY AUTOINCREMENT, [push_id] VARCHAR(50) NOT NULL, [type] INT(10) NOT NULL DEFAULT (0), [url] VARCHAR, [pic_url] VARCHAR, [short] VARCHAR, [author] CHAR, [push_type] INT NOT NULL DEFAULT (0), [time] TIMESTAMP, [score] FLOAT DEFAULT 阅读全文
posted @ 2013-05-28 16:00 森 林 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 为ExpandableListVIew的Group与Child添加不同菜单有两种方式:1、通过ShowDialog这种方式是通过适配器为VIew添加Tag然后在ExpandableListView的OnItemLongClickListener获取View的Tag来判断是Group或Child,然后弹出不同的菜单对话框。代码如下:@OverridepublicViewgetChildView(finalintarg0,finalintarg1,booleanarg2,Viewview,ViewGrouparg4){if(view==null){view=inflater.inflate(R.l 阅读全文
posted @ 2013-05-28 15:57 森 林 阅读(452) 评论(0) 推荐(0) 编辑

2012年2月11日

摘要: 把图片转换成为Bitmap对象,然后通过Canvas一层一层的画上去,当然Bitmap对象可以进行图片旋转、图片缩放等功能。private Bitmap drawPicture(Bitmap mbitmap){Bitmap bitmap=mbitmap;//BitmapFactory.decodeResource(getResources(), R.drawable.mymoive_01); Bitmap mBitmap=Bitmap.createBitmap(bitmap.getWidth()+4,bitmap.getHeight()+4,Bitmap.Config.ARGB_8888);. 阅读全文
posted @ 2012-02-11 17:48 森 林 阅读(1462) 评论(0) 推荐(0) 编辑

2012年2月3日

摘要: 转载处 http://mips.eefocus.com/article/11-12/2453681323092039.html?sort=1751_0_0_0 随着移动平台的发展和其应用的不断改善,质量成为决定成败的关键。用户要求他们选择安装的应用响应快、性能好,如果某个应用不能提供卓越的功能和稳定的用户体验,那这样的应用注定会被很快卸载。尽管现在Android智能手机和平板电脑的运行速率越来越快,但开发者仍需牢记,应用的运行环境仍受到电池和处理器等诸多资源的限制。以下是如何为应用“瘦身”的十条建议,以便能在当前和以后的所有Android设备都能运行出最佳效果。1)首先要有良好的编码习惯... 阅读全文
posted @ 2012-02-03 10:43 森 林 阅读(144) 评论(0) 推荐(0) 编辑

2012年1月16日

摘要: Android平台视频开发:httsp://blog.sina.com.cn/s/blog_6288a78a0100ol6e.htmlandroid mediaplayer:http://hi.baidu.com/%B6%D4%D5%DB_%B0%F4%B0%F4%CC%C7/blog/item/1d0b7d93735d517654fb966d.htmlHttp协议:http://www.blogjava.net/zh-weir/archive/2010/05/02/319892.html浅谈HTTP中Get与Post的区别:http://www.cnblogs.com/hyddd/archi 阅读全文
posted @ 2012-01-16 11:46 森 林 阅读(180) 评论(0) 推荐(0) 编辑

2012年1月10日

摘要: 原文转于:http://www.oschina.net/code/snippet_54100_1422双缓冲是为了防止动画闪烁而实现的一种多线程应用,基于SurfaceView的双缓冲实现很简单,开一条线程并在其中绘图即可。本文介绍基于SurfaceView的双缓冲实现,以及介绍类似的更高效的实现方法。 本文程序运行截图如下,左边是开单个线程读取并绘图,右边是开两个线程,一个专门读取图片,一个专门绘图:对比一下,右边动画的帧速明显比左边的快,左右两者都没使用Thread.sleep()。为什么要开两个线程一个读一个画,而不去开两个线程像左边那样都 “边读边画”呢?因为SurfaceView每次 阅读全文
posted @ 2012-01-10 11:29 森 林 阅读(643) 评论(0) 推荐(0) 编辑
摘要: SurfaceView和View最本质的区别在于,surfaceView是在一个新起的单独线程中可以重新绘制画面而View必须在UI的主线程中更新画面。那么在UI的主线程中更新画面 可能会引发问题,比如你更新画面的时间过长,那么你的主UI线程会被你正在画的函数阻塞。那么将无法响应按键,触屏等消息。当使用surfaceView 由于是在新的线程中更新画面所以不会阻塞你的UI主线程。但这也带来了另外一个问题,就是事件同步。比如你触屏了一下,你需要surfaceView中thread处理,一般就需要有一个event queue的设计来保存touch event,这会稍稍复杂一点,因为涉及到线程同步。 阅读全文
posted @ 2012-01-10 11:23 森 林 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 原文转于:http://www.pin5i.com/showtopic-android-asynctask-sample.htmlAsyncTask 看上去修改后的connect()方法已经可用了,但是这种匿名线程的方式是存在缺陷的:第一,线程的开销较大,如果每个任务都要创建一个线程,那么应用 程序的效率要低很多;第二,线程无法管理,匿名线程创建并启动后就不受程序的控制了,如果有很多个请求发送,那么就会启动非常多的线程,系统将不堪重负。 另外,前面已经看到,在新线程中更新UI还必须要引入handler,这让代码看上去非常臃肿。 为了解决这一问题,OPhone在1.5版本引入了Asy... 阅读全文
posted @ 2012-01-10 10:52 森 林 阅读(163) 评论(0) 推荐(0) 编辑

2012年1月9日

摘要: 首先获取视频播放长度来设置SeekBar的Max,videobBar.setMax(mediaPlayer.getDuration()),然后通过线程实时获取视频已经播放的时间来更新SeekBar,videobBar.setProgress(mediaPlayer.getCurrentPosition())思路就是这样,具体代码如下:videobBar=(SeekBar)findViewById(R.id.seekBarPlayProgress);surfaceView = (SurfaceView) findViewById(R.id.player);surfaceView.getHolde 阅读全文
posted @ 2012-01-09 10:01 森 林 阅读(2885) 评论(1) 推荐(0) 编辑

导航