2015-01-27 17 views
6

एंड्रॉयड कैनवास रंग बदलएंड्रॉयड कैनवास परिवर्तन पृष्ठभूमि रंग

मैं दो बार देखा गया

<com.myexample.ui.view.BackgroundView 
     android:id="@+id/id_draw_canvas_classroom" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_marginBottom="3dp" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:layout_marginTop="3dp" 
     android:layout_weight="1" 
     android:background="#FFFFFFFF" /> 

    <com.myexample.ui.view.FrontView 
     android:id="@+id/id_draw_canvas_user" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_marginBottom="3dp" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:layout_marginTop="3dp" 
     android:layout_weight="1" 
     android:background="#00000000" /> 

से कोई ऐप यह देखा गया ओवरलैप हो रहे है, और समय की अवधि के दौरान मैं पृष्ठभूमि को ध्यान में रखते जानकारी लोड । उस समय के दौरान मैं फ्रंटव्यू को सफेद में सेट करना चाहता हूं, और फिर (जब पृष्ठभूमि खत्म हो रहा है) पारदर्शी हो जाता है।

फ्रंट व्यू में मेरे पास एक बिटमैप वाला कैनवास है। काम कर रहा है, और मैं यह करने के लिए कर रहा हूँ अगर मैं पारदर्शी

canvas.drawColor(0); 

में पृष्ठभूमि सेट करना चाहते हैं सफेद

canvas.drawColor(-1); 

में पृष्ठभूमि सेट लेकिन मैं पारदर्शी के लिए सफेद को बदलने में सक्षम नहीं हूँ।

धन्यवाद

+0

'रंग। ट्रांसपेरेंट' और 'रंग। व्हाइट' स्थिरांक का उपयोग करें। साथ ही, यह उत्तर देखें: http://stackoverflow.com/a/10882301/671543 – njzk2

उत्तर

0

नहीं है मैं क्या हासिल करना चाहता था लेकिन एक समाधान नहीं है और हो सकता है किसी के लिए उपयोगी है, मैं अदृश्य दूसरे में डाल रहा हूँ कैनवास, और फिर तैयार होने पर, मैंने इसे वापस दिखाई दिया।

@Override 
public void lock(String message) { 
    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      canvasFront.setReadyToDraw(false); 
      canvasBackground.setVisibility(View.INVISIBLE); 
     } 
    }); 
} 

@Override 
public void unlock() { 
    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      drawViewClassroom.setVisibility(View.VISIBLE); 
      canvasFront.setReadyToDraw(true); 
     } 
    }); 
} 
12

इस प्रयास करें:

/* 
* A = Alpha a.k.a. transparency 
* R = Red color 
* G = Green color 
* B = Blue color 
* 
* All of them have a range from 0 to 255 
*/ 
canvas.drawARGB(0, 225, 225, 255); 

या, जैसा कि @ njzk2 कहा गया है, आप भी इस एक का उपयोग कर सकते हैं:

canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); 

लेकिन मुझे लगता है पहला विकल्प है क्योंकि बेहतर है उदाहरण के लिए, यदि आप इसे कम पारदर्शी सेट करना चाहते हैं, तो यह अधिक सटीक है।

+0

आपके उत्तर के लिए धन्यवाद, लगभग काम कर रहा है, लेकिन समस्या तब होती है जब पृष्ठभूमि दृश्य लोड हो रहा है, जानकारी पृष्ठभूमि दृश्य को सामने लाती है। मुझे बस एहसास हुआ। – agusgambina

+0

@agusgambina आप उस दृश्य में 'bringToFront()' को कॉल कर सकते हैं, जिसे आप शीर्ष पर दिखाना चाहते हैं। – Houssni

+0

धन्यवाद। मैं bringToFront() का उपयोग कर रहा हूं समस्या यह है कि मुझे नहीं पता कि क्यों "दूसरा कैनवास" सामने ला रहा है जब मैं इसे नहीं चाहता। – agusgambina

4

एक पेंट

Paint myPaint = new Paint(); 
myPaint.setColor(res.getColor(R.color.white)); 

बनाएं और सेट अपने कैनवास

canvas.draw...(... , myPaint); 
संबंधित मुद्दे