如何使这个方法通用?将RelativeLayout转换为位图图像。

3

我已经编写了一种方法,可以将任何布局(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;
    }

1
将v.setLayoutParams(new LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT)); 改为 v.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT)); 将对您有所帮助。 - Sudar Nimalan
1个回答

2

两种布局都继承自ViewGroup,因此您可以将ViewGroup用作方法参数,所有这些语句都可以正常工作。

另外,您应该使用ViewGroup.LayoutParams而不是RelativeLayout.LayoutParams以使其更通用。


什么时候在方法中使用通配符? - AZ_
1
通配符是什么意思?如果你指的是泛型或模板,这里并不需要,因为继承和多态可以完成工作。 - 0xC0DED00D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接