2010-05-29 12 views
29

में कैनवास पर एक चिकनी/डिथर्ड ग्रेडिएंट को कैसे आकर्षित करें कई जवाब एंड्रॉइड में चिकनी ग्रेडियेंट आकर्षित करने के लिए GradientDrawable.setDither (true) का उपयोग करने के लिए उल्लेख करते हैं। इसका मेरे कोड में कोई प्रभाव नहीं पड़ता है। मेरे लाइव वॉलपेपर में एक अच्छी लग रही ढाल पाने के लिए मुझे क्या बदलना है?एंड्रॉइड

GradientDrawable gradient = new GradientDrawable(Orientation.TL_BR, colors); 
gradient.setGradientType(GradientDrawable.RADIAL_GRADIENT); 
gradient.setGradientRadius(canvas.getWidth() * 2); 
gradient.setDither(true); 
gradient.setGradientCenter(-0.1f, -0.1f); 
gradient.setBounds(cb); 
gradient.draw(canvas); 

उत्तर

67

जैसा कि आपके पास काम करने के लिए कैनवास है। यहां एक विकल्प है।

private Bitmap makeRadGrad() { 
    RadialGradient gradient = new RadialGradient(200, 200, 200, 0xFFFFFFFF, 
      0xFF000000, android.graphics.Shader.TileMode.CLAMP); 
    Paint p = new Paint(); 
    p.setDither(true); 
    p.setShader(gradient); 

    Bitmap bitmap = Bitmap.createBitmap(400, 400, Config.ARGB_8888); 
    Canvas c = new Canvas(bitmap); 
    c.drawCircle(200, 200, 200, p); 

    return bitmap; 
} 

परिणाम:

Result

+0

क्या मैं पूरी तरह से समझ में नहीं आता है कि आप निर्देशांक ('200, 200, 200') दो बार परिभाषित करने के लिए नहीं है। स्थिति को गतिशील रूप से समायोजित करने के लिए मुझे क्या करना चाहिए और सबसे महत्वपूर्ण रूप से 'ऑनड्रा()' विधि में ढाल का SIZE? –

+2

पहला निर्देशांक ढाल के आकार को परिभाषित करता है, निर्देशांक का दूसरा सेट ढाल वाले सर्कल के आकार का वर्णन करता है। यदि निर्देशांक समान नहीं हैं तो ढाल सर्कल को भर नहीं पाएगा या सर्कल सीमाओं से काटा जाएगा। –