मैं एक कस्टम दृश्य बनाने की कोशिश कर रहा हूं जिसमें पाठ के नीचे आकार धुंधला हुआ है। समस्या यह है कि BlurMaskFilter का कैनवास पर खींचे गए किसी भी आकार पर कोई प्रभाव नहीं पड़ता है।एंड्रॉइड ब्लरमास्कफिल्टर का कैनवास.drawOval में कोई प्रभाव नहीं पड़ता है जबकि पाठ धुंधला हुआ है
paint = new Paint(0);
paint.setColor(0xffffffff);
paint.setMaskFilter(new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL));
mShadowPaint = new Paint(0);
mShadowPaint.setColor(0xff333333);
mShadowPaint.setMaskFilter(new BlurMaskFilter(10, BlurMaskFilter.Blur.NORMAL));
और मैं OnDraw() में इस तरह के कार्यों फोन कर रहा हूँ: यहाँ कैसे मैं निर्माता में पेंट वस्तुओं initialising कर रहा हूँ है
canvas.drawOval(mShadowBounds,mShadowPaint);
canvas.drawText("hello", x, y, paint);
लेकिन यह मैं क्या देखते हैं।
एक 4.0.4 आकाशगंगा गठजोड़ डिवाइस (यूके) पर एंड्रॉयड 4.0 एसडीके और परीक्षण का उपयोग करना। मैं सोच रहा हूं कि यह 4.0.4 में एक बग है क्योंकि मैंने इसे 4.0 और 4.0.3 के साथ एमुलेटर पर परीक्षण किया था और जब तक कि मैं कुछ पूरी तरह से गलत नहीं कर रहा हूं, तब तक यह पूरी तरह से धुंधला हुआ?
संपादित करें: यहां अन्य प्लेटफ़ॉर्म पर इसका परीक्षण करने के लिए विस्तारित व्यू कोड है।
import android.content.Context;
import android.graphics.BlurMaskFilter;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
public class BlurTestView extends View{
private Paint paint;
private Paint mShadowPaint;
private int size = 100;
private RectF mShadowBounds = new RectF();
public BlurTestView(Context context) {
this(context, null, 0);
}
public BlurTestView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public BlurTestView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
paint = new Paint(0);
paint.setColor(0xff333333);
paint.setTextSize(size);
paint.setMaskFilter(new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL));
mShadowPaint = new Paint(0);
mShadowPaint.setColor(0xff333333);
mShadowPaint.setMaskFilter(new BlurMaskFilter(10, BlurMaskFilter.Blur.NORMAL));
mShadowBounds.top = size;
mShadowBounds.bottom = mShadowBounds.top+(size /2);
mShadowBounds.left = 0;
mShadowBounds.right = (int)paint.measureText("hello");
}
@Override
public void onDraw(Canvas canvas)
{
canvas.drawOval(mShadowBounds,mShadowPaint);
canvas.drawText("hello", 0, size, paint);
}
}
मैं गैलेक्सी नेक्सस पर 4.0.4 चल रहा एक ही चीज़ देख रहा हूं, केवल टेक्स्ट धुंधला हुआ है, और कुछ नहीं। मेरे जिंजरब्रेड इनक्रेडिबल पर एक ही टेस्ट ऐप चलाने से सभी आकार और टेक्स्ट ब्लूर्स हो जाते हैं। – Josh