2015-03-12 3 views
0

У меня затруднения округлить углы обзора поверхности. Я использую MjpegView (пользовательский вид, что унаследует от SurfaceView Я уже пробовал эти решения:. 1) установить фон с пользовательским Drawable с круглыми углами 2) После прочтения этого поста http://androidtutorialsandtips.blogspot.co.il/2012/01/overriding-ondraw-method-in-surfaceview.html Я не знаю, как реализовать круглые углы поскольку я уже реализовал поток, который блокирует холст.Как создать обзор поверхности с закругленными углами

while (mRun) 
     { 
      if (surfaceDone) 
      { 
       try 
       { 
        c = mSurfaceHolder.lockCanvas(); 
        synchronized (mSurfaceHolder) 
        { 
         try 
         { 
          if (mIn != null) 
          { 
           Bitmap bm = mIn.readMjpegFrame(); 
           destRect = destRect(bm.getWidth(), bm.getHeight()); 

           if (streamHeight == -1 && streamWidth == -1) 
           { 
            streamWidth = bm.getWidth(); 
            streamHeight = bm.getHeight(); 
           } 
           c.drawColor(Color.BLACK); 
           c.drawBitmap(bm, null, destRect, p); 
           if (showFps) 
           { 
            p.setXfermode(mode); 
            if (ovl != null) 
            { 
             height = ((ovlPos & 1) == 1) ? destRect.top : destRect.bottom - ovl.getHeight(); 
             width = ((ovlPos & 8) == 8) ? destRect.left : destRect.right - ovl.getWidth(); 
             c.drawBitmap(ovl, width, height, null); 
            } 
            p.setXfermode(null); 
            frameCounter++; 
            if ((System.currentTimeMillis() - start) >= 1000) 
            { 
             fps = String.valueOf(frameCounter) + "fps"; 
             frameCounter = 0; 
             start = System.currentTimeMillis(); 
             ovl = makeFpsOverlay(overlayPaint, fps); 
            } 
           } 
          } 
         } 
         catch (IOException e) 
         { 
         } 
        } 
       } 
       finally 
       { 
        if (c != null) mSurfaceHolder.unlockCanvasAndPost(c); 
       } 
      } 
     } 
+0

У вас возникли проблемы с? – pskink

+0

Я не могу обойти углы обзора поверхности –

+0

что такое режим? почему вы его устанавливаете, но никогда не используете? каковы результаты вашего кода? – pskink

ответ

1

Если я правильно понял ваш вопрос correcly:

  1. <FrameLayout ...> создать с 2 детьми: вид поверхности и частично прозрачный защитный слой над ним. (FrameLayout рисует своих детей один поверх другого.)

  2. нарисовать округлые углы на обложке.

То есть, вы будете иметь непрозрачный слой над SurfaceView и что непрозрачный слой будет иметь прозрачный отверстий с закругленными-углы в его центре.

Вот пример, где я покрываю SurfaceView 50% -прозрачным черным слоем (visibility = "invisible" по умолчанию) и RelativeLayout с кнопками внутри.

<FrameLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <SurfaceView 
     android:id="@+id/camera_preview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_centerInParent="true" /> 
    <View 
     android:id="@+id/transparency" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="#80000000" 
     android:visibility="invisible" 
     /> 
    <RelativeLayout 
     android:id="@+id/xxxxx" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     > 
     ... 
+0

Можете ли вы показать мне пример, я если вы просто добавите drawable с круглыми углами в макете обложки, вы все равно увидите углы обзора поверхности –

+0

Я имею в виду, что поверхностьView будет покрыта прозрачным изображением с закругленными непрозрачными углами. Просто постарайтесь разместить любое изображение над поверхностью, тогда вы увидите, что делать ... – 18446744073709551615

+0

Я получил его, спасибо –

Смежные вопросы