将Canvas(另一个线程)保存到SD卡

时间:2012-10-31 23:57:17

标签: android file save android-canvas

我的下一堂课有问题:

public class MyView extends SurfaceView implements Runnable {

    public void run() {
        Canvas c = holder.lockCanvas();
        c.drawARGB( 255, 0, 255, 80 );
        for ( short i = 0; i < bitmapsArr.size(); i++ ) {
            c.drawBitmap( bitmap.get( i ), 100, 50, null );
        }
        holder.unlockCanvasAndPost( c );
    }

    public void saveCanvasToFile( String filename ){

        // ???

    }

}

我画在另一个线程上的画布上。我想将这个画布保存到文件中,但我不知道该怎么做。我试图使用DrawingCache系统 - 但是它不起作用导致我的绘图在其他线程上...在这种情况下,任何人都知道该怎么做?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。实际上,您需要将所有绘图重新绘制到新画布中。例如:

Bitmap bitmap = Bitmap.createBitmap( this.getWidth(), this.getHeight(), Bitmap.Config.ARGB_8888 );
Canvas c1 = new Canvas( bitmap );
c1.drawARGB( 255, 0, 255, 80 );
for ( short i = 0; i < bitmapsArr.size(); i++ ) {
    c1.drawBitmap( bitmap.get( i ), 100, 50, null );
}
// and then you can save your bitmap with:
// bitmap.compress( Bitmap.CompressFormat.PNG, 90, fileoOutputStream );