Android 开发的几点小问题

1.ImageView 每隔100ms更换一张显示图片过程中出现OOM错误解决方法:

BitmapDrawable bitmapDrawable = (BitmapDrawable) image.getDrawable();  
// 如果图片还未回收,先强制回收该图片  
if (bitmapDrawable != null && !bitmapDrawable.getBitmap().isRecycled()){  
    bitmapDrawable.getBitmap().recycle();  
}  
 image.setImageBitmap(BitmapFactory.decodeStream(assetFile)); 


2.assets文件夹下面的文件名称不能包含中文。

Android 基于Linux系统,Linux 允许在文件名中使用除上述符号之外的其它符号, 但并不建议用户这样做。如果Windows 下面文件名包含中文字符的文件,复制到Android项目的assets文件夹下面,运行此Android项目会报错,去掉文件名中的特殊字符就OK了。


3. 自定义View组件时候,如果重写onTouchEvent方法,不要返回return super.onTouchEvent(event),应该修改为return true,原因是:
(1)父类的onTouchEvent(event)方法可能没有做任何处理,但是返回了false。
( 2)一旦返回false,在该方法中再也不会收到MotionEvent.ACTION_MOVE及MotionEvent.ACTION_UP事件。 


4.关于SuifaceView画图: Access to the underlying surface is provided via the SurfaceHolder interface, which can be retrieved by callinggetHolder(). 通过getHolder()方法得到SurfaceHolder 接口: SurfaceHolder surfaceHolder = getHolder();

SurfaceView如何画图呢?

(1)对Canvas进行加锁

//获取canvas实例  
Canvas canvas = surfaceHolder.lockCanvas();  

(2)进行相应的画图操作

canvas.drawCircle(float cx, float cy, float radius, Paint paint);

(3).对Canvas进行解锁,将画好的画布提交,也就是进行重画
 surfaceHolder.unlockCanvasAndPost(canvas);  


View与SurfaceView区别

1.SurfaceView是View的子类。

2.View缺乏缓存机制,只能整个View更新;SurfaceView有双缓冲机制,可以局部更新;

3.SurfaceView是在一个新起的单独线程中可以重新绘制画面,而View必须在UI的主线程中更新画面。


如果更新频率频繁,用SurfaceView,否则用View。




如果有疏漏,请您指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值