我编写代码来绘制 View 。完成后,如何从 View 中获取结果图像。例如,在下面的代码中,我想从 mCustomDrawableView 中获取可绘制对象 (Image)。我怎样才能做到这一点?谢谢。
public class HelloTestGraph extends Activity {
/** Called when the activity is first created. */
// @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout lo = (LinearLayout) findViewById(R.id.top_view);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
CustomDrawableView mCustomDrawableView = new CustomDrawableView(this);
mCustomDrawableView.setLayoutParams(param);
lo.addView(mCustomDrawableView);
}
public class CustomDrawableView extends View {
private ShapeDrawable mDrawable;
private Drawable mPic;
public CustomDrawableView(Context context) {
super(context);
int x = 10;
int y = 10;
int width = 300;
int height = 50;
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setBounds(x, y, x + width, y + height);
mPic = getResources().getDrawable(R.drawable.example_picture);
mPic.setBounds(x, y + 100, x + width, y + height+100);
}
protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
mPic.draw(canvas);
}
}
}
最佳答案
这有点令人费解,但应该可以帮助您理解。
第 1 步:创建一个所需大小的可变位图并将其存放在一旁。它可以是设备屏幕的大小或最大 View 的大小(取决于您以后要用它做什么)将该位图指针保存为 myBitmap 之类的东西
第 2 步:使用上述位图创建 Canvas 。 “ Canvas myCanvas = new Canvas(myBitmap);”
第 3 步:在您的 onDraw() 方法中,将您的 View 绘制到传入的“canvas”对象和您自己的自定义对象。
protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
mPic.draw(canvas);
mDrawable.draw(myCanvas);
mPic.draw(myCanvas);
}
第 4 步:您的原始位图现在应该仅包含您的 View 的完全渲染版本。
我不确定这是否正是您要查找的内容,但它会为您提供 View 内容的位图(您可以将其转换为图像)。
关于android - 如何从 View 中检索可绘制对象(图片)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2374123/