पर टेक्स्ट ऊंचाई को मापें मैं वर्तमान में बिटमैप को प्रस्तुत करने पर काम कर रहा हूं, कि मैं फिर मोबाइल प्रिंटर को भेजना चाहता हूं। हालांकि, मैं अपने पाठ की ऊंचाई को मापने के लिए संघर्ष कर रहा हूं, इसलिए मैं वाई स्थिति को उचित रूप से अग्रिम कर सकता हूं।एंड्रॉइड: कैनवास
मेरे बुनियादी बिटमैप/कैनवास/रंग विन्यास इस (अक्षरों का आकार 16 है और बिटमैप के आयामों 200x400 हैं (चौड़ाई x ऊँचाई):
public MyRenderer() {
// Initialize bitmap
bitmap = Bitmap.createBitmap(200, 400, Bitmap.Config.ARGB_8888);
// Initialize canvas
canvas = new Canvas(bitmap);
// Initialize brush (Paint instance)
brush = new Paint();
brush.setTextSize(16);
brush.setTypeface(Typeface.SANS_SERIF);
brush.setColor(Color.BLACK);
brush.setStyle(Paint.Style.FILL);
brush.setAntiAlias(true);
brush.setTextAlign(Align.LEFT);
}
अब तक तो अच्छा, अब मैं क्या करना चाहते हैं ऐसा करें: अगर मैं पेंट की विधि ड्रॉटेक्स्ट का उपयोग करता हूं तो मुझे एक्स और वाई निर्देशांक की आपूर्ति करने की आवश्यकता होती है। एक्स के लिए शून्य (बाएं संरेखित पाठ को मानते हुए) के रूप में, लेकिन वाई के लिए, मुझे प्रिंट करने वाले प्रत्येक पाठ की ऊंचाई की गणना करना होगा और इसे जोड़ें, इसलिए मैं अपने वर्तमान वाई स्थिति का ट्रैक रख सकता हूं।
और यह वह जगह है जहां यह विषम हो जाता है: मैं पाठ की ऊंचाई निर्धारित करने के लिए निम्न विधि का उपयोग कर रहा हूं (पाई का उपयोग करके NT आपत्ति की है कि मैं पहले से प्रारंभ - यह "ब्रश") कहा जाता है:
public int measureHeight(String text) {
Rect result = new Rect();
// Measure the text rectangle to get the height
brush.getTextBounds(text, 0, text.length(), result);
return result.height();
}
उपरोक्त विधि निम्नलिखित ग्रंथों के लिए निम्न मान देता है:
- "नमस्ते विश्व" की ऊंचाई देता है 12
- "3 डी रूपांतरणों की गणना करने और मैट्रिक्स उत्पन्न करने के लिए एक कैमरा उदाहरण का उपयोग किया जा सकता है। "की ऊंचाई देता है 16
- " एंड्रॉइड डिज़ाइन पेश करना: विश्व स्तरीय एंड्रॉइड उपयोगकर्ता इंटरफेस बनाने के लिए सिद्धांतों, बिल्डिंग ब्लॉक और पैटर्न के बारे में जानने के लिए जगह। चाहे आप यूआई पेशेवर हों या डेवलपर उस भूमिका निभा रहे हों, ये दस्तावेज़ आपको दिखाएंगे कि बड़े डिजाइन छोटे, छोटे और छोटे कैसे करें। "
यह मेरे लिए समझ में आता है की ऊंचाई, उस नंबर 2 और 3 वापसी संख्या 1 से लेकिन एक बड़ा ऊंचाई देता है एक पंक्ति में 12 की ऊंचाई है, तो (संख्या के रूप में एक करता है) - यह कोई समझ नहीं आता है कि कई लाइनों की ऊंचाई 16 है?
क्या मुझे यहां कुछ याद आ रही है? पाठ की चौड़ाई को मापने के लिए एक सुविधाजनक तरीका है (पेंट और कॉल मापन टेक्स्ट ("myText") का उदाहरण उपयोग करके पूरी तरह से काम करता है, हालांकि जब मैं ऊंचाई की बात करता हूं, तो मुझे काफी नुकसान होता है, क्योंकि ऊपर दिए गए परिणामों से मुझे कोई समझ नहीं आती है।
संपादित
मैं, पता है कि getTextBounds शायद करता है बहु लाइन पाठ का कोई ऑटो रैपिंग, और कहा कि ठीक है, मैं पहले से ही लिखा था बंटवारे पाठ के लिए एक विधि है, लेकिन यह सिर्फ एक रेखा से ऊपर उपायों भले ही, दिए गए लंबाई मान अभी भी असंभव प्रतीत होते हैं।
मैं आधारभूत दूरी दिया ग्रंथों ऊपर उन तीन के लिए गणना (अपने गणना के अनुसार) है, यह हमेशा रिटर्न 19. चाहेंगे इसका मतलब है, अगर मैं 1 9 लेता हूं तो ऊंचाई है, फिर भी अगली पंक्ति के लिए मौजूदा लाइन के साथ ओवरलैप नहीं होने के लिए पर्याप्त जगह होगी? अग्रिम बहुत बहुत धन्यवाद! – AgentKnopf
यह फ़ॉन्ट की एक विशेषता है, आपको अलग-अलग ग्रंथों के लिए इसे बार-बार गणना करने की आवश्यकता नहीं है। आप चाहते हैं कि दूरी हमेशा एक जैसी हो, भले ही आपके पाठ में कौन से पात्र हों। और हाँ, लाइनें ओवरलैप नहीं होंगे। – devconsole
बहुत बहुत धन्यवाद - मैंने जो किया और मेरे बिटमैप को प्रस्तुत करना अभी ठीक है :)। मैं MyRenderer के निर्माता में एक बार "रेखा ऊंचाई" शुरू करता हूं। – AgentKnopf