दिलचस्प पोस्ट
अनुरोध विशेषता के रूप में उपलब्ध बीन नाम के लिए न ही बाइंडिंग रिज़ल्ट और ना ही सादा लक्ष्य ऑब्जेक्ट अलार्म को रीसेट करने के लिए, मेरे एंड्रॉइड एप्लिकेशन को कैसे पता चलेगा? मेरी स्थिर फाइलों को एक्सेस करने के लिए मुझे http। StripPrefix का उपयोग करने की आवश्यकता क्यों है? अजगर कोड का उपयोग करके एक .bat फ़ाइल चलाएं उल्का में पृष्ठभूमि कार्य सी # खाली वक्तव्य एंड्रॉइड-जावा- ऑब्जेक्ट के भीतर किसी निश्चित मान से ऑब्जेक्ट्स की एक सूची को सॉर्ट करने के लिए .NET फ़्रेमवर्क निर्देशिका पथ प्राप्त करना मैं उद्देश्य- C में एक विधि कैसे कॉल कर सकता हूं? @ यूआरएल के माध्यम से नामांकित बीन सीडीआई पर पैरामीटर पास करने के लिए @ स्काला के आलसी वाल की (छुपा) लागत क्या है? std :: vector reserve () और push_back () आकार बदलने () और सरणी सूचकांक की तुलना में तेज़ है, क्यों? निर्धारित करें कि उपयोगकर्ता पंक्तियाँ जोड़ रहा है या हटा रहा है या नहीं जावास्क्रिप्ट के साथ फोन नंबर मान्य करें ओपनएमपी में समानांतर संचयी (उपसर्ग) राशियाँ: धागे के बीच मूल्यों को संप्रेषण करना

किसी दृश्य को एंड्रॉइड में प्रदर्शित किए बिना बिटमैप में परिवर्तित करना?

मैं समझाने की कोशिश करूँगा कि मुझे क्या करना चाहिए।

मेरे पास 3 अलग स्क्रीन हैं जो ए, बी, सी कहते हैं। होमस्क्रीन नामक एक और स्क्रीन है जहां गैलरी दृश्य में सभी 3 स्क्रीन बिटमैप प्रदर्शित किए जाने चाहिए और उपयोगकर्ता यह चुन सकता है कि वह कौन सा दृश्य देखना चाहता है।

मैं सभी 3 स्क्रीनों के बिटमैप प्राप्त करने और इसे होमस्क्रीन गतिविधि में सभी कोड को केवल गैलरी दृश्य में प्रदर्शित करने में सक्षम है अब, इसने कोड को बहुत जटिल किया है और मैं इसे सरल बनाने के लिए चाहूंगा

तो, क्या मैं होमस्क्रीन से किसी अन्य गतिविधि को कॉल कर सकता हूं और इसे प्रदर्शित नहीं कर सकता और बस उस स्क्रीन के बिटमैप को प्राप्त करें। उदाहरण के लिए, मैं सिर्फ होमस्क्रीन पर कॉल करता हूं और यह ए, बी, सी और ए, बी, सी से क्रियाकलापों में से कोई भी प्रदर्शित नहीं होता है। यह सिर्फ getDrawingCache () द्वारा उस स्क्रीन के बिटमैप को देता है। और फिर हम होमस्क्रीन में गैलरी दृश्य में उन बिटमैप प्रदर्शित कर सकते हैं

मुझे उम्मीद है कि मैंने इस समस्या को बहुत स्पष्ट रूप से समझाया है

कृपया मुझे बताएं कि यह वास्तव में संभव है या नहीं

Solutions Collecting From Web of "किसी दृश्य को एंड्रॉइड में प्रदर्शित किए बिना बिटमैप में परिवर्तित करना?"

ऐसा करने का एक तरीका है आपको एक बिटमैप और कैनवास बनाना होगा और view.draw (कैनवास) कॉल करना होगा;

यहां कोड है:

public static Bitmap loadBitmapFromView(View v) { Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b); v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom()); v.draw(c); return b; } 

यदि दृश्य को आकार के पहले प्रदर्शित नहीं किया गया तो यह शून्य होगा इसे इस तरह से मापने के लिए संभव है:

 if (v.getMeasuredHeight() <= 0) { v.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b); v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); v.draw(c); return b; } 

संपादित करें: इस पोस्ट के मुताबिक, makeMeasureSpec() लिए मूल्य के रूप में makeMeasureSpec() पास करना किसी भी अच्छा काम नहीं करता है (हालांकि कुछ दृश्य वर्गों के लिए यह काम करता है), और सुझाई गई विधि है:

 // Either this int specWidth = MeasureSpec.makeMeasureSpec(parentWidth, MeasureSpec.AT_MOST); // Or this int specWidth = MeasureSpec.makeMeasureSpec(0 /* any */, MeasureSpec.UNSPECIFIED); view.measure(specWidth, specWidth); int questionWidth = view.getMeasuredWidth(); 

इसे इस्तेमाल करे,

  /** * Draw the view into a bitmap. */ private Bitmap getViewBitmap(View v) { v.clearFocus(); v.setPressed(false); boolean willNotCache = v.willNotCacheDrawing(); v.setWillNotCacheDrawing(false); // Reset the drawing cache background color to fully transparent // for the duration of this operation int color = v.getDrawingCacheBackgroundColor(); v.setDrawingCacheBackgroundColor(0); if (color != 0) { v.destroyDrawingCache(); } v.buildDrawingCache(); Bitmap cacheBitmap = v.getDrawingCache(); if (cacheBitmap == null) { Log.e(TAG, "failed getViewBitmap(" + v + ")", new RuntimeException()); return null; } Bitmap bitmap = Bitmap.createBitmap(cacheBitmap); // Restore the view v.destroyDrawingCache(); v.setWillNotCacheDrawing(willNotCache); v.setDrawingCacheBackgroundColor(color); return bitmap; } 

यहां मेरा समाधान है:

 public static Bitmap getBitmapFromView(View view) { Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(returnedBitmap); Drawable bgDrawable =view.getBackground(); if (bgDrawable!=null) bgDrawable.draw(canvas); else canvas.drawColor(Color.WHITE); view.draw(canvas); return returnedBitmap; } 

का आनंद लें 🙂

मुझे पता है कि यह एक बासी समस्या हो सकती है, लेकिन मुझे इनमें से किसी भी समाधान को मेरे लिए काम करने में समस्या हो रही थी विशेष रूप से, मुझे पता चला कि यदि कोई दृश्य परिवर्तन के बाद दृश्य में बनाया गया था, तो ये परिवर्तन प्रदान किए गए बिटमैप में शामिल नहीं होंगे।

यह तरीका है जो मेरे मामले के लिए काम कर रहा था। एक चेतावनी के साथ, हालांकि getViewBitmap(View) को कॉल करने से पहले getViewBitmap(View) मैंने अपने विचार को फुलाया और इसे ज्ञात आयामों के साथ लेआउट में कहा। यह आवश्यक था क्योंकि मेरा दृश्य लेआउट इसे शून्य ऊंचाई / चौड़ाई तक बना देगा जब तक कि सामग्री को अंदर रखा नहीं जाता।

 View view = LayoutInflater.from(context).inflate(layoutID, null); //Do some stuff to the view, like add an ImageView, etc. view.layout(0, 0, width, height); Bitmap getViewBitmap(View view) { //Get the dimensions of the view so we can re-layout the view at its current size //and create a bitmap of the same size int width = view.getWidth(); int height = view.getHeight(); int measuredWidth = View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY); int measuredHeight = View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY); //Cause the view to re-layout view.measure(measuredWidth, measuredHeight); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); //Create a bitmap backed Canvas to draw the view into Bitmap b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b); //Now that the view is laid out and we have a canvas, ask the view to draw itself into the canvas view.draw(c); return b; } 

मेरे लिए "जादू सॉस" यहां पाया गया था: https://groups.google.com/forum/#!topic/android-developers/BxIBAOeTA1Q

चीयर्स,

लेवि

उम्मीद है की यह मदद करेगा

 View view="some view instance"; view.setDrawingCacheEnabled(true); Bitmap bitmap=view.getDrawingCache(); view.setDrawingCacheEnabled(false);