2013-06-03 17 views
6

Merhaba Şu an yüzey görünümünde arka planda ses frekansı efektinin görselleştirmesini içeren Oyun üzerinde çalışıyorum.Görünümü yüzey için arka plan olarak nasıl eklenir?

The surfaceView contains actual game play. Bazı kod parçacıklarını gönderme: -

- aşağıdaki gibi

main.xml

<FrameLayout 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_margin="5dp" 
    android:layout_weight="1" 
    android:background="#000" > 

    <co.ardor.visualizer.VisualizerView 
     android:id="@+id/visualizerView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
    </co.ardor.visualizer.VisualizerView> 
</FrameLayout> 

Visualizer view oluşturulur

public class VisualizerView extends View 
{ 
    private static final String TAG = "VisualizerView"; 

    private byte[] mBytes; 
    private byte[] mFFTBytes; 
    private Rect mRect = new Rect(); 
    private Visualizer mVisualizer; 
    private Set<Renderer> mRenderers; // type of Renderer class 

    private Paint mFlashPaint = new Paint(); // for flash paint 
    private Paint mFadePaint = new Paint(); // for fade paint 

    public VisualizerView(Context context, AttributeSet attrs, int defStyle) 
    { 
    super(context, attrs); 
    init(); 
} 

    public VisualizerView(Context context, AttributeSet attrs) 
{ 
    this(context, attrs, 0); 
} 

    public VisualizerView(Context context) 
    { 
    this(context, null, 0); 
    } 

    // Some code regarding to the audio visualization.. 
} 

Ben SurfaceView (Gerçek koşu Oyunu) için arka plan olarak bu ekleyebilir ne kadar iyi bu yüzden çalışan My VisualizerView .Ben sorun şaşırıp bunun için "How to add VIEW as background of surfaceView?" Veya herhangi başka daha iyi bir çözüm olduğunu .. peşin Thx ..

+0

Görüntüleme arka plan olarak eklenemez. Aktivitenizin içerik görünümü olarak ayarlamanız gerekiyor – Blackbelt

cevap

7

Bir bakış açısına sahip olmanız, çizim önbelleğini Bitmap almak ve Bitmap'u oyun içeriğinin arkasına çizilen SurfaceView'a eklemek olabilir. SurfaceView en onDraw(...) yılında Bitmap çizin

myVisualizerView.setDrawingCacheEnabled(true); 
mVisualizerBitmap = Bitmap.createBitmap(myVisualizerView.getDrawingCache()); 
myVisualizerView.setDrawingCacheEnabled(false); 

: Bu performans açısından harika bir fikir olduğundan emin değilim

canvas.drawBitmap(mVisualizerBitmap, //other params); 

Eğer bit eşlem almak için varsa

Bitmap Al Oyununuzun her karesi ama keşfetmeye değer olabilir.

+0

Yanıtladığınız için Gunnar'a teşekkürler, ancak bu gerçek zamanlı görselleştirme için iyi değil ... Ama fikrinizden gerçekten etkilendim. –

+0

Şuna bir göz attınız: http://stackoverflow.com/questions/5391089/how-to-make-surfaceview-transparent -? –

+0

Bu bağlantıdan çözüm aldım http://stackoverflow.com/a/15873927/2123594. Ama önerilen cevabın da iyi. Teşekkürler.. –

1

kullanarak birbirinin üstüne onları LinearLayout, kullanarak ekleme ve yapmaya:

android:layout_alignLeft="..." 
android:layout_alignTop="..." 
İlgili konular