Android 开发的几点小问题

来源:互联网 发布:为什么淘宝贷款用不了 编辑:程序博客网 时间:2024/06/10 02:01

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。




如果有疏漏,请您指正。

原创粉丝点击