【问题标题】:How to make this method generic? Converting RelativeLayout into Bitmap Image如何使这种方法通用?将 RelativeLayout 转换为位图图像
【发布时间】:2012-06-21 05:44:36
【问题描述】:

我已经编写了一个将任何布局 Liner、Relative、Frame 等转换为位图的方法,但我想让这个方法通用,以便它接受 android.view.ViewGroup 作为参数而不是特定的 RelativeLinearLayout

下面是我的方法:

public Bitmap getBitmapFromView(RelativeLayout v) {
        v.setLayoutParams(new LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
        v.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
        Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);

        Canvas c = new Canvas(b);
        v.draw(c);
        return b;
    }

【问题讨论】:

  • 改变 v.setLayoutParams(new LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));进入 v.setLayoutParams(新 ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT));会为你工作。

标签: android generics android-layout bitmap converter


【解决方案1】:

两个 Layout 都继承自 ViewGroup,因此您可以使用 ViewGroup 作为方法参数,所有这些语句都可以正常工作。

您还应该使用ViewGroup.LayoutParams 而不是RelativeLayout.LayoutParams 来使其通用。

【讨论】:

  • 那么什么时候在方法中使用通配符?
  • 通配符是什么意思?如果您指的是泛型或模板,则此处没有必要,因为继承和多态可以完成这项工作。
猜你喜欢
  • 2019-09-29
  • 2017-05-20
  • 2012-03-11
  • 2014-01-26
  • 2015-02-17
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多