Android 如何在 Canvas里 放多张图片

 我来答
woshidaniel
2015-08-25 · TA获得超过9240个赞
知道小有建树答主
回答量:1760
采纳率:96%
帮助的人:953万
展开全部

方案只有一种:

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位置绘制图片
霍华德双子座
2015-08-10 · TA获得超过1527个赞
知道小有建树答主
回答量:1044
采纳率:50%
帮助的人:354万
展开全部
是的,第二张图片只有整个canvas的一半,而且想让它半透明
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
baikewsp
2015-07-28 · TA获得超过1万个赞
知道小有建树答主
回答量:4588
采纳率:42%
帮助的人:689万
展开全部
用canvas画多张图的时候一定要注意recycle,不然很容易出现内存溢出的错误。

dalvik虚拟机中一个线程只能占12M的空间,android中的图片的显示最后显示出来的都是bitmap格式,都是通过底层的C来实现的,而用来显示图片的内存空间只被分配了4M,所以你画图时一定要考虑图片的大小,把不用的都给recycle掉,不然当等待虚拟机自动回收的时候,很可能已经抛out of memory 错误了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
solid_622
2012-01-09 · TA获得超过472个赞
知道小有建树答主
回答量:126
采纳率:0%
帮助的人:120万
展开全部
用canvas画多张图的时候一定要注意recycle,不然很容易出现内存溢出的错误。

dalvik虚拟机中一个线程只能占12M的空间,android中的图片的显示最后显示出来的都是bitmap格式,都是通过底层的C来实现的,而用来显示图片的内存空间只被分配了4M,所以你画图时一定要考虑图片的大小,把不用的都给recycle掉,不然当等待虚拟机自动回收的时候,很可能已经抛out of memory 错误了
追问
我想有一个Gallery  然后点一个 在Canvas里显示 点一个显示 这个不行啊 怎么弄啊
追答
你可以研究 api demos里的gallery例子

ApiDemos\src\com\example\android\apis\view\Gallery1.java
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小虎东西
2012-01-09 · TA获得超过1077个赞
知道答主
回答量:98
采纳率:0%
帮助的人:106万
展开全部
canvas.drawbitmap可以随便你怎么画图像啊。
追问
我想有一个Gallery  然后点一个 在Canvas里显示 点一个显示 这个不行啊 怎么弄啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式