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!.