在这种情况下,使用Canvas而不是addView是否更好?

时间:2017-11-21 06:47:24

标签: android android-layout android-canvas

我是Android开发的新手,所以我在这里有这个新手问题:

我在活动中有一个自定义的画布视图。我想以编程方式显示图像(PNG drawables)。

显然,我有两种方法可以做到这一点,第一种,更常规的方式是:

选项I:

  1. 找到“活动布局”(整个活动的布局)
  2. 为PNG ImageView设置参数。
  3. ActivityLayout.addView(pngImageView)
  4. 编辑:所以这样,PNG将被显示,但不是真正的“Canvas的一部分”,因为它并没有真正画在“画布”中,但除了它之外,对于用户来说,它是不可能的告诉。

    选项II:

    使用Drawable对象,将其资源设置为我想要的PNG drawable,然后调用

    Drawable.draw(myCanvas)
    

    编辑:通过这种方式,drawable将成为“画布”的一部分,并实际绘制在“画布中”。但话说回来,用户将无法从第一个选项中告诉它。

    选项II我会好些吗?特别是,我想操纵png drawable,翻转它,旋转它等等可能使用Matrix。

    提前致谢!

    编辑:我想尽可能少的麻烦,我希望将来能够将整个画布导出到bmp文件,包括画布上的所有内容和png drawable。

1 个答案:

答案 0 :(得分:0)

不同之处在于画布绘制是通过硬件加速(GPU)完成的,动态绘图是由软件(CPU)完成的。如果你禁用硬件加速,它们会变得完全相同。我不确定哪一个更准确,它们看起来就像是不同的实现。