Android 空位图:View.getDrawingCache()提供空位图

Android 空位图:View.getDrawingCache()提供空位图,android,view,android-studio,bitmap,Android,View,Android Studio,Bitmap,我在自定义视图上绘制。然后,绘制的图像将转换为位图进行进一步处理,但当我这样做时 Bitmap Bitmap=drawView1.getDrawingCache()位图为空。为什么为空,如何解决 public class TrainingActivity extends ActionBarActivity { private DrawingView drawView1; @Override protected void onCreate(Bundle savedInsta

我在自定义视图上绘制。然后,绘制的图像将转换为位图进行进一步处理,但当我这样做时
Bitmap Bitmap=drawView1.getDrawingCache()位图为空。为什么为空,如何解决

public class TrainingActivity extends ActionBarActivity {
    private DrawingView drawView1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_training);
        drawView1 = (DrawingView) findViewById(R.id.drawing1);
      }

public void submitButtonClicked(View v) {
    Bitmap bitmap = drawView1.getDrawingCache();
}
自定义视图的xml文件为

<persistent.DrawingView
        android:id="@+id/drawing1"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_marginBottom="3dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="3dp"
        android:layout_weight="1"
        android:background="#FFFFFFFF" />

据我所知,getDrawingCache()方法对视图类的大小(宽度和高度)有限制。如果视图类太大,getDrawingCache()只返回null。因此,解决方法不是使用该方法,而是按照下面的方法进行

Bitmap bitmap = Bitmap.createBitmap(drawView1.getMeasuredWidth(), drawView1.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
    Canvas bitmapHolder = new Canvas(bitmap);
    drawView1.draw(bitmapHolder);
// bitmap now contains the data we need! Do whatever with it!.

我是根据这个家伙的评论得到这个答案的

我认为你应该启用第一个。
Bitmap bitmap = Bitmap.createBitmap(drawView1.getMeasuredWidth(), drawView1.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
    Canvas bitmapHolder = new Canvas(bitmap);
    drawView1.draw(bitmapHolder);
// bitmap now contains the data we need! Do whatever with it!.