2011-10-10 11 views
5

ठीक है, मैं यहां और आसपास के कई समान प्रश्नों से गुजर चुका हूं, इसका कोई फायदा नहीं हुआ। मैं बस एक SurfaceView के शीर्ष पर एक पारदर्शी दृश्य ओवरले करने की कोशिश कर रहा हूं .. और अंत में एक आयताकार खींचता है, जैसे कि यह कैमरा पूर्वावलोकन ओवरले करना प्रतीत होता है।एक कस्टम ओवरले व्यू को SurfaceView के शीर्ष पर पारदर्शी कैसे बनाएं?

मुझे पारदर्शी होने के लिए कस्टम दृश्य नहीं मिल रहा है, यह अंतर्निहित कैमरा पूर्वावलोकन को अवरुद्ध करता है। कोई सुझाव?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <FrameLayout 
     android:layout_alignParentTop="true" 
     android:layout_width="fill_parent" 
     android:layout_height="400dip"> 
     <SurfaceView 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/drawSurface" /> 
     <com.bobby.facecapture.FaceOverlayView 
      android:id="@+id/drawOverlay" 
      android:background="@android:color/transparent" 
      android:layout_width="200dip"  
      android:layout_height="200dip"  
     /> 
    </FrameLayout> 
</RelativeLayout> 

200x200 केवल अस्थायी है, यह साबित करने के लिए कि यह वास्तव में अन्य दृश्य को ओवरले कर रहा है।

फेस ओवरव्यू व्यू सिर्फ एक कस्टम व्यू है - सीधे दृश्य से प्राप्त करना, बिना किसी ओवरराइड (अब के लिए)।

मैं कैमरा पूर्वावलोकन

+0

हम अपने एप्लिकेशन में से एक में एक बहुत ही समान सेटअप का उपयोग करें और यह काम करने के लिए ठीक लगता है - अपने कस्टम दृश्य में 'onDraw' विधि अधिभावी और पूरी तरह से उस में कुछ नहीं कर कोशिश (कॉल नहीं करते' super') क्या इससे कोई मायने रखता है? – Ertebolle

+0

सुझाव के लिए धन्यवाद, लेकिन नहीं, मुझे अभी भी शीर्ष पर एक काला दृश्य मिलता है। मैंने रचनाकारों के साथ-साथ एक्सएमएल घोषणा में पारदर्शी होने के लिए पृष्ठभूमि रंग सेट करने का प्रयास किया है .. अभी व्युत्पन्न दृश्य में कन्स्ट्रक्टर और खाली ऑन ड्रा के अलावा कुछ भी नहीं है। – Bobby

+0

यह ओवरकिल की तरह प्रतीत हो सकता है, लेकिन शायद एक पारदर्शी तस्वीर सेट कर रहा है क्योंकि पृष्ठभूमि काम करेगी? – MrZander

उत्तर

2

खैर की चोटी पर एक काले रंग की आयत मिलता है, this resource file बारकोड स्कैनर कब्जा लेआउट, जो एक "दृश्यदर्शी" एक कैमरा पूर्वावलोकन के शीर्ष पर स्तरित है। वे अपने @color/transparent संसाधन का उपयोग करते हैं, जिसे <color name="transparent">#00000000</color> के रूप में परिभाषित किया गया है। शायद अपने कोड के साथ चारों ओर पोक करें और यह पता लगाने की कोशिश करें कि आप कहां और वे अलग हैं।

0

क्या आपने दोनों को या तो src या पृष्ठभूमि को @null पर सेट करने का प्रयास किया है?

इसके अलावा, यदि यह एवेन्यू काम नहीं करता है तो आप सतह पर आकर्षित करने के लिए पथ का उपयोग करने पर विचार कर सकते हैं, जिससे आप रनटाइम पर आयत के आकार/स्थान को गतिशील रूप से बदल सकते हैं।

हालांकि, उसे SurfaceView के लिए कुछ कोड लिखने और ऑनड्रा को संभालने की आवश्यकता होगी, जो आप जो कर रहे हैं उसके लिए अधिक हो सकता है। अनिवार्य रूप से इसका मतलब है कि अपनी कस्टम कक्षा को यहां एक शीर्ष पर स्तरित कुछ की बजाय SurfaceView का विस्तार करना है।

+0

एचएम, मैं शून्य दृष्टिकोण का प्रयास करूंगा - मैंने सतह दृश्य से प्राप्त एक दृश्य का उपयोग करने के लिए इसे पुन: प्रयास करने की कोशिश की है - दोनों को एक में एकजुट करना (ओवरराइड को ओवरराइड करने के लिए व्युत्पन्न सतह दृश्य में ओवरवॉइड, उसी पेंट-आयत तकनीक के साथ), हालांकि मुझे एक ही परिणाम मिलते हैं या नहीं। – Bobby

0

मैं बिल्कुल वही कर रहा हूं, कैमरा पूर्वावलोकन पर एक अनुकूलित दृश्य ओवरले है। शुरुआत में दृश्य अपारदर्शी था इसलिए कैमरा पूर्वावलोकन अवरुद्ध हो गया। समस्या यह थी कि मैं कैनवास में एक छवि खींचने की कोशिश कर रहा था लेकिन छवि को RGB_565 के रूप में निर्दिष्ट किया, इसे ARGB_8888 में ठीक से काम करता है। आपके पास अल्फा चैनल होना चाहिए, और सुनिश्चित करें कि कस्टम दृश्य की पृष्ठभूमि पारदर्शी पर सेट की गई है।

0

मैंने अल्फा चैनल को 0 पर सेट किया है। यह एक आकर्षण की तरह काम करता है।

कस्टम व्यू रनटाइम जोड़ने के बाद मैं इसे करता हूं।

(ImageView) myCustomView.setAlpha(0) 
संबंधित मुद्दे