एक बंद पथ वस्तु परिणाम को देखते हुए इस तरह है:रैखिक ढाल वाले एंड्रॉइड में पथ कैसे भरें?
कि हालांकि एक आयत मैं कुछ जो किसी भी बंद पथ के साथ काम करता रहा हूँ है।
एक बंद पथ वस्तु परिणाम को देखते हुए इस तरह है:रैखिक ढाल वाले एंड्रॉइड में पथ कैसे भरें?
कि हालांकि एक आयत मैं कुछ जो किसी भी बंद पथ के साथ काम करता रहा हूँ है।
जबकि steelbytes 'जवाब शायद आप ढाल के अलग-अलग वर्गों पर अधिक नियंत्रण दे देंगे, आप पथ के बिना यह कर सकते हैं:
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
Paint p = new Paint();
// start at 0,0 and go to 0,max to use a vertical
// gradient the full height of the screen.
p.setShader(new LinearGradient(0, 0, 0, getHeight(), Color.BLACK, Color.WHITE, Shader.TileMode.MIRROR));
canvas.drawPaint(p);
}
ठीक है लेकिन ऑनड्रा (...) विधियों में पेंट इंस्टेंस का निर्माण कभी नहीं करें – ebtokyo
@ebtokyo: प्रदर्शन कारणों से? क्या आप इसे सृजन पर कैश करेंगे और प्रत्येक ऑन ड्रा (या शायद आकार में) पर अपना आकार अपडेट करेंगे? प्रदर्शन कारणों से – idbrii
हां। OnDraw में एक प्रकार का वृक्ष की टिप्पणियां आवंटन() इस तरह: "ड्रा/लेआउट आपरेशनों के दौरान वस्तु आवंटन से बचें (preallocate और बदले का पुन: उपयोग)" –
इस मदद मिल सकती है
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
int w = getWidth();
int h = getHeight();
Paint p = new Paint(Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);
Path pth = new Path();
pth.moveTo(w*0.27f,0);
pth.lineTo(w*0.73f,0);
pth.lineTo(w*0.92f,h);
pth.lineTo(w*0.08f,h);
pth.lineTo(w*0.27f,0);
p.setColor(0xff800000);
p.setShader(new LinearGradient(0,0,0,h,0xff000000,0xffffffff,Shader.TileMode.CLAMP));
canvas.drawPath(pth,p);
}
एक शानदार, कोई , एक शानदार सवाल! – Subby