Android 如何在 Canvas里 放多张图片
5个回答
展开全部
方案只有一种:
1、图片转换为Bitmap对象
2、通过canvas的drawBitmap方法绘制图片对象
示例:
1、图片转换成Bitmap对象
1)资源文件转换
Bitmap bmp=BitmapFactory.decodeResource(r, R.drawable.icon);//读取drawable下的icon图片,转换为bitmap对象
2)根据路径转换
public Bitmap convertToBitmap(String path, int w, int h) {
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;// 设置为ture只获取图片大小
opts.inPreferredConfig = Bitmap.Config.ARGB_8888;//颜色值
BitmapFactory.decodeFile(path, opts);//返回为空,opts返回图片大小。
int width = opts.outWidth;//图片实际宽度
int height = opts.outHeight;//图片实际高度
float scaleWidth = 0.f, scaleHeight = 0.f;
if (width > w || height > h) {//缩放图片
// 缩放
scaleWidth = ((float) width) / w;
scaleHeight = ((float) height) / h;
}
opts.inJustDecodeBounds = false;//设置缩放图片
float scale = Math.max(scaleWidth, scaleHeight);
opts.inSampleSize = (int)scale;//设置缩放比例
WeakReference<Bitmap> weak = new WeakReference<Bitmap>(BitmapFactory.decodeFile(path, opts));//获取图片的弱引用,便于释放图片占用内存
return Bitmap.createScaledBitmap(weak.get(), w, h, true);//返回图片对象
}
2、canvas上绘制图片
Bitmap bmp;//获取的bitmap对象
Paint p;//定义画笔
canvasTemp.drawBitmap(bmp, 50, 50, p);//在50,50位置绘制图片
展开全部
是的,第二张图片只有整个canvas的一半,而且想让它半透明
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用canvas画多张图的时候一定要注意recycle,不然很容易出现内存溢出的错误。
dalvik虚拟机中一个线程只能占12M的空间,android中的图片的显示最后显示出来的都是bitmap格式,都是通过底层的C来实现的,而用来显示图片的内存空间只被分配了4M,所以你画图时一定要考虑图片的大小,把不用的都给recycle掉,不然当等待虚拟机自动回收的时候,很可能已经抛out of memory 错误了
dalvik虚拟机中一个线程只能占12M的空间,android中的图片的显示最后显示出来的都是bitmap格式,都是通过底层的C来实现的,而用来显示图片的内存空间只被分配了4M,所以你画图时一定要考虑图片的大小,把不用的都给recycle掉,不然当等待虚拟机自动回收的时候,很可能已经抛out of memory 错误了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用canvas画多张图的时候一定要注意recycle,不然很容易出现内存溢出的错误。
dalvik虚拟机中一个线程只能占12M的空间,android中的图片的显示最后显示出来的都是bitmap格式,都是通过底层的C来实现的,而用来显示图片的内存空间只被分配了4M,所以你画图时一定要考虑图片的大小,把不用的都给recycle掉,不然当等待虚拟机自动回收的时候,很可能已经抛out of memory 错误了
dalvik虚拟机中一个线程只能占12M的空间,android中的图片的显示最后显示出来的都是bitmap格式,都是通过底层的C来实现的,而用来显示图片的内存空间只被分配了4M,所以你画图时一定要考虑图片的大小,把不用的都给recycle掉,不然当等待虚拟机自动回收的时候,很可能已经抛out of memory 错误了
追问
我想有一个Gallery 然后点一个 在Canvas里显示 点一个显示 这个不行啊 怎么弄啊
追答
你可以研究 api demos里的gallery例子
ApiDemos\src\com\example\android\apis\view\Gallery1.java
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
canvas.drawbitmap可以随便你怎么画图像啊。
追问
我想有一个Gallery 然后点一个 在Canvas里显示 点一个显示 这个不行啊 怎么弄啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询