Пользовательский рисунок не отображается на холсте - PullRequest
0 голосов
/ 07 октября 2011

У меня есть макет XML, подобный следующему:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
>

    <com.somedomain.drawings.DrawingSurface
        android:layout_width="fill_parent"
        android:layout_height="200dip"
            android:id="@+id/drawingSurface" 
            android:background="@drawable/bg2"/>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentBottom="true" >

        <Button
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="OK"
                android:onClick="onClick"
                android:id="@+id/colorGreenBtn" />

    </LinearLayout>

</RelativeLayout>

Когда я пытаюсь рисовать на DrawingSurface, рисунок не отображается.Но фоновое изображение холста показывает.И когда я сохраняю его, рисунок отображается на выходе.

Когда я удалил фоновое изображение DrawingSurface и попытался нарисовать его, он показывает.

Я хочу показать рисунок, когда пользователь рисует на холсте с фоновым изображением.Есть идеи?Большое спасибо за любую помощь!:)

Обновление: вот мой код для рисования

@Override
public void run() {
    Canvas canvas = null;

    while (_run){
        if(isDrawing == true){
            try{

                canvas = mSurfaceHolder.lockCanvas(null);
                if(mBitmap == null){
                    mBitmap =  Bitmap.createBitmap (1, 1, Bitmap.Config.ARGB_8888);
                }


                final Canvas c = new Canvas (mBitmap);

                c.drawColor(0, PorterDuff.Mode.CLEAR);
                canvas.drawColor(0, PorterDuff.Mode.CLEAR);
                canvas.drawColor(0x00000000);

                commandManager.executeAll(c,previewDoneHandler);
                previewPath.draw(c);

                canvas.drawBitmap (mBitmap, 0,  0,null);
            } finally {
                mSurfaceHolder.unlockCanvasAndPost(canvas);
            }


        }

    }

}

1 Ответ

0 голосов
/ 07 октября 2011

Пара вещей, которые нужно попробовать:

1) поместить ImageView перед drawSurface в XML и вставить bg в ImageView.

Я знаю, что SurfaceView отличается от другого представления, ноВы можете попробовать.

2) Возможно, вы могли бы нарисовать bg на холсте сначала, когда начался процесс рисования.Может быть, вы хотите использовать canvas.drawBitmap ().

...