Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SlidingDrawer hidden by image in SurfaceView

I have both a SlidingDrawer and a custom SurfaceView that renders an image. I have just tried to drag the SlidingDrawer up and in doing so have discovered that it goes behind the image in the SurfaceView and is completely hidden.

As you can imagine this won't be much use to the user and therefore need the image to always fall behind the SlidingDrawer when it is pulled up. Is this possible?

Incase it helps this is the SlidingDrawer in the xml:

<SlidingDrawer
             android:id="@+id/drawer"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:handle="@+id/handle"
             android:content="@+id/content"
             android:layout_alignParentBottom="true">

             <TextView
                 android:id="@id/handle"
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
                 android:gravity="center"
                 android:paddingTop="5dip"
                 android:paddingBottom="5dip"
                 android:textStyle="bold"
                 android:text="text"/>


            <include layout="@layout/content"
                 android:id="@id/content"
                 android:layout_width="fill_parent"
                 android:layout_height="fill_parent"/>

         </SlidingDrawer>

And this is the SurfaceView in xml:

<FrameLayout android:id="@+id/FrameLayout01" 
        android:layout_width="fill_parent" android:layout_height="fill_parent">
        <com.android.imagemagic.widgets.ImageManipulationSurfaceView
        android:id="@+id/surfaceArea"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:layout_gravity="center"/> 
    </FrameLayout>  

The SurfaceView is custom and uses the following code in the onDraw() method:

@Override
public void onDraw(Canvas canvas) { 
    super.onDraw(canvas);

    //Clear canvas
    Paint paint = new Paint();
    paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));
    canvas.drawPaint(paint);
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC));

    // Draw image
    canvas.drawBitmap(image, imageX, imageY, null);
}
like image 595
Richard Lewin Avatar asked Jan 25 '12 22:01

Richard Lewin


1 Answers

After much scanning around I have found the (simple) answer to my problem from the following Stack Overflow page: Android: SlidingDrawer disappears under SurfaceView. Quite simply in the SlidingDrawer xml element add:

android:background="#00000000";

Edit

Having reverted back to the my original code after implimenting the background it stopped working again. In the end I found where the other issue I had was that stopped the above solution from working. For everyone else’s benefit, ensure you don't set the SurfaceView z-index to the top via:

sv.setZOrderOnTop(true); 
like image 184
Richard Lewin Avatar answered Oct 12 '22 09:10

Richard Lewin