我编写代码来绘制视图。完成后,如何从视图中获取生成的图像。例如,在下面的代码中,我想从mCustomDrawableView获取drawable(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);
}
}
}
答案 0 :(得分:1)
这有点令人费解,但应该让你到那儿。
步骤1:创建所需大小的可静音位图并将其存放在一边。它可能是设备屏幕的大小或最大视图的大小(取决于您以后要用它做什么)将该位图指针保存在像myBitmap这样的东西
步骤2:使用上述位图创建画布。 “Canvas myCanvas = new Canvas(myBitmap);”
步骤3:在onDraw()方法中,将您的视图绘制到传入的“canvas”对象和您自己的自定义对象。
protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
mPic.draw(canvas);
mDrawable.draw(myCanvas);
mPic.draw(myCanvas);
}
步骤4:您的原始位图现在应该只包含您的视图的完全渲染版本。
我不确定这是否正是您正在寻找的,但它会为您提供视图内容的位图(可以转换为图像)。
答案 1 :(得分:0)
如果你想从课堂外访问它们,你可以在自定义类中指定getter和setter。
public Drawable getDrawable() { return mDrawable; }
然后从类外部(如在您的活动中),您可以在视图实例化后调用视图上的getDrawable()方法。
Drawable drawable = mCustomDrawableView.getDrawable();