2012-07-04 7 views
5

मैं यादृच्छिक छोटे पैटर्न के एक सेट के दोहराव पैटर्न को किसी विशेष क्षेत्र में प्रतिबंधित करना चाहता हूं। मैं कैनवास का उपयोग कर एक ऑब्जेक्ट (कस्टम व्यू) बना रहा हूं, मुझे पता है कि xml कोड का उपयोग कर लेआउट पर पैटर्न को दोहराना कैसे है।कस्टम दृश्य अप-सीमाओं में एक पैटर्न को दोहराने के लिए कैसे?

<bitmap 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/patterntwo" 
    android:tileMode="repeat" /> 

यह कैनवास के लिए काम नहीं कर रहा है।

मैं अनिवार्य रूप से कस्टमव्यू के लिए पृष्ठभूमि छवि के रूप में बिटमैप का उपयोग करना चाहता हूं और एक्स और वाई दोनों दिशाओं में बिटमैप को दोहराना चाहता हूं। इस छवि को

enter image description here

उत्तर

7

इस कोड के साथ प्रयास करें: -

paint = new Paint(Paint.FILTER_BITMAP_FLAG); 
Shader mShader1 = new BitmapShader(bitmap, Shader.TileMode.REPEAT,Shader.TileMode.REPEAT); 
paint.setShader(mShader1); 
+1

मैं यह कोड दूंगा .. –

+0

यह काम कर रहा है धन्यवाद, कुमार .... –

+0

क्या आप मेरी मदद कर सकते हैं यह http://stackoverflow.com/questions/19264300/bitmap-with-tile-mode-repeat-and-round-corners – Goofy

2

आप एक पृष्ठभूमि बिटमैप के साथ अपने कस्टम घटक बना सकते हैं पर

नज़र दोहराया:

BitmapDrawable bitmapBg = new BitmapDrawable(BitmapFactory.decodeResource(
      getResources(), R.drawable.repeatbg)); 
bitmapBg.setTileModeX(Shader.TileMode.REPEAT); 
image.setBackgroundDrawable(bitmapBg); 

और आप छवि के साथ एक मुखौटा है कि आप ऐसा चाहते हैं कर सकते हैं त्रिकोण और आपका बीजी।

public static Bitmap getMaskedContactImage(Context context, 
     Bitmap contactImageBitmap, int maskToBeApplied) { 
    Bitmap mask = BitmapFactory.decodeResource(context.getResources(), 
      maskToBeApplied); 
    Bitmap output = Bitmap.createBitmap(mask.getWidth(), mask.getHeight(), 
      Config.ARGB_8888); 
    final Rect finalRect = new Rect(0, 0, contactImageBitmap.getWidth(), 
      contactImageBitmap.getHeight()); 
    final Rect originRect = new Rect(0, 0, mask.getWidth(), 
      mask.getHeight()); 
    Canvas canvas = new Canvas(output); 

    Paint xferPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
    xferPaint.setColor(Color.BLACK); 

    xferPaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); 

    canvas.drawBitmap(contactImageBitmap, finalRect, originRect, null); 
    canvas.drawBitmap(mask, originRect, originRect, xferPaint); 

    contactImageBitmap.recycle(); 
    mask.recycle(); 

    return output; 
} 

वह एक मुखौटा का उपयोग करेगा जहां काला रंग अंतिम छवि है।

यदि मुझे गलत समझा नहीं गया है, तो आप कैप्चर में जो दिखा रहे हैं उसे प्राप्त कर सकते हैं।

सादर, एलेक्स

+0

क्यों छायांकर्ता आयात करने में असमर्थ im, यह किसी भी जार फ़ाइलों की आवश्यकता है। –

+0

कोई विशेष आवश्यकता नहीं है, http://developer.android.com/reference/android/graphics/Shader.html एपीआई के बाद से 1. दोहराना मोड के लिए यह एक बिटमैप ड्राइव करने योग्य विधि http://developer.android.com/reference/ एंड्रॉइड/ग्राफिक्स/ड्रायबल/बिटमैपड्रावेबल.html # सेटटाइलमोडेक्सवाई (android.graphics.Shader.TileMode, android.graphics.Shader.TileMode) – Goofyahead

+0

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