मैं आयताकार ऑब्जेक्ट प्राप्त करना चाहता हूं जो इमेज व्यू को लपेटने वाले आयत के बजाय इमेज व्यू के ड्रायबल को लपेट लेगा। मैं ड्राइंग के चारों ओर कुछ फैंसी आयत खींचने के लिए उस आयताकार का उपयोग करूंगा। मैं उस आयत को कैसे प्राप्त कर सकता हूं?Android पर ImageView के Drawable के आयत को कैसे प्राप्त करें?
उत्तर
बस एक बिटमैप वस्तु में drawable कन्वर्ट:
Bitmap bmp = ((BitmapDrawable)dr).getBitmap();
int w = bmp.getWidth();
int h = bmp.getHeight();
Rect rect = new Rect();
ImageView iV = new ImageView();
rect.left = iV.getLeft();
rect.top = iV.getTop();
rect.bottom = iV.getBottom();
rect.right = iV.getRight();
अब आप अपने आयत की है।
यह इमेज व्यू के आस-पास आयत देता है, लेकिन मुझे इमेज व्यू में ड्रॉबल के आसपास आयताकार चाहिए। – ipman
मैंने यह कोशिश नहीं की है, यह आपके प्रश्न को पढ़ने के दौरान बस मेरे दिमाग में आया। इस बारे में क्या।
मान लें कि छवि दृश्य में कोई पैडिंग नहीं है और गुरुत्वाकर्षण केंद्रित है। समस्या यह है कि आप आयताकार की स्थिति की गणना करने के लिए ड्रायबल की चौड़ाई और ऊंचाई का सरल उपयोग नहीं कर सकते क्योंकि यह ImageView फिट करने के लिए आकार बदल सकता है। तो आपको ImageView के आयामों और ImageView और Drawable के अनुपात का उपयोग करना होगा।
जब ड्रायबल और छवि दृश्य का अनुपात बराबर होता है तो ड्रायबल छवि दृश्य को पूरी तरह से भरता है और फिर आयताकार ImageView के आयामों से मेल खाता है। आयताकार के समन्वय (ऊपरी बाएं कोने से, काउंटर वार) हैं: (0/0), (चौड़ाई छवि दृश्य/0), (चौड़ाई छवि दृश्य, ऊंचाई छवि दृश्य), (0/ऊंचाई छवि दृश्य),
जब अनुपात मेल नहीं खाते हैं और मान लें कि उदाहरण के लिए Drawable ImageView से बड़ा है तो ड्रायबल छवि दृश्य की पूरी चौड़ाई भर जाएगा लेकिन ऊंचाई को भर नहीं पाएगा। लेकिन जैसा कि ड्रायबल केंद्रित हो जाता है हम ड्रॉबल्स ऊपरी बाएं कोने के y समन्वय की गणना कर सकते हैं और इसलिए आयताकार के लिए। सबसे पहले ImageView में Drawable की वर्तमान ऊंचाई की गणना करें। इसे ड्रायबल डॉन ' टी के मूल आयामों के रूप में करने की आवश्यकता है क्योंकि इसे ImageView में फिट करने के लिए आकार दिया गया था।
y = (ImageView height - Drawable current height)/2
तो आयत के निर्देशांक (ऊपरी बाएं कोने से वार का मुकाबला कर रहे हैं): (0/y), (के
current height Drawable = (Drawable height/Drawable width) * ImageView width
y मूल्य ऊपरी बाएँ कोने का समन्वय चौड़ाई ImageView/y), (चौड़ाई ImageView/y + वर्तमान ऊंचाई Drawable), (0/y + वर्तमान ऊंचाई Drawable)
मुझे आशा है कि आपको यह विचार मिल जाएगा। यदि Drawable ImageView से अधिक है तो आप इसे उसी तरह की गणना कर सकते हैं लेकिन चौड़ाई और ऊंचाई मानों का आदान-प्रदान करना है।
यह छवि प्रकार को आकर्षित करने के लिए लागू होने वाले पैमाने के पैमाने पर निर्भर करता है, आपको छवि दृश्य दृश्य (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.2_r1/android/widget/ImageView.java#ImageView.configureBounds%28%29) के "कॉन्फ़िगरेशनबाउंड()" विधि पर व्यस्त इंजीनियरिंग करना है।
उदाहरण के लिएमैं जब मैं एक केंद्र पैमाने प्रकार के लिए छवि की स्थिति की जरूरत है (मुझे लगता है कि यह दूसरों की तुलना में आसान है, क्योंकि छवि दृश्य छवि को स्केल नहीं करता है) मैं का प्रतिलोम कार्य करें:
(mDrawMatrix.setTranslate((int) ((vwidth - dwidth) * 0.5f + 0.5f),
(int) ((vheight - dheight) * 0.5f + 0.5f));)
ImageView iv (Your ImageView);
Drawable dw = iv.getDrawable();
int dwidth = dw.getIntrinsicWidth();
int dheight = dw.getIntrinsicHeight();
int vwidth = iv.getWidth() - iv.getPaddingLeft() - iv.getPaddingRight();
int vheight = iv.getHeight() - iv.getPaddingTop() - iv.getPaddingBottom();
int realImageWidth = (int)((vwidth - dwidth) * 0.25f);
// (I do not know why I had to put 0.25f instead of 0.5f,
// but I think this issue is a consequence of the screen density)
int realImageHeight = (int)((vheight - dheight) * 0.25f);
और इस डेटा के साथ आप आयताकार बनाने में सक्षम होना चाहिए, मुझे पता है कि यह थोड़ा मुश्किल है लेकिन यह मेरे लिए काम करता है।
क्या आप 0.25 एफ के हिस्से को समझते थे? आपको लगता है कि इसे घनत्व के साथ क्यों करना है, अगर यहां सब कुछ पिक्सल में है? –
- 1. Android पर ImageView पर लाइनों को कैसे आकर्षित करें?
- 2. आयत आकार drawable चेकबॉक्स चयनकर्ता आइटम
- 3. क्लासपाथ से Android ImageView के लिए छवि कैसे लोड करें?
- 4. "@android: drawable/ic_" बनाम "@ * एंड्रॉइड: drawable/ic_"
- 5. Android पर ImageView में कोई रेखा कैसे आकर्षित करें?
- 6. एक Android drawable
- 7. drawable == drawable?
- 8. Drawable बाइट के लिए []
- 9. Android पर 3 सेकंड के लिए स्प्लैश स्क्रीन कैसे दिखाएं?
- 10. कैसे संपर्कों को प्राप्त करने के Android
- 11. ImageView
- 12. imageView एंड्रॉयड
- 13. ImageView
- 14. ImageView छवि को खींचने के बिना फिट
- 15. Android
- 16. एक LinearLayout में एक ImageView कैसे केंद्रित करें?
- 17. multiline TextView के अंत में ImageView कैसे सम्मिलित करें?
- 18. Drawable selector के साथ ImageView src सक्षम राज्य को अनदेखा करता है
- 19. एंड्रॉइड में ImageView के ऑनक्लिकलिस्टर विधि को कैसे सेट करें?
- 20. आयत के केंद्र समन्वय को कैसे ढूंढें?
- 21. Android के लिए क्रोमियम का स्रोत कोड कैसे प्राप्त करें
- 22. एक imageView
- 23. Android में एक छवि दृश्य के लिए न्यूनतम और अधिकतम आकार दोनों को कैसे सेट करें
- 24. एंड्रॉइड, ImageView ImageView
- 25. एसडीकार्ड पर संग्रहीत छवि के उरी को कैसे प्राप्त करें?
- 26. Android के लिए libcap (Linux क्षमताओं लाइब्रेरी) कैसे प्राप्त करें?
- 27. रीसायकल imageView के बिटमैप
- 28. दो लाइनों (छवि दृश्य) के छेड़छाड़ बिंदु कैसे प्राप्त करें
- 29. drawable
- 30. एक Android कैनवास पर एक स्ट्रिंग के चारों और आयत फ़िट
यह केवल ड्रायबल की चौड़ाई और ऊंचाई देता है, लेकिन मैं ड्रॉबल के चारों ओर आयताकार चाहता हूं। – ipman
क्या आप कुछ बेहतर समझ सकते हैं कि आपका क्या मतलब है? क्या आप ImageView से लेआउट का मतलब है? – Andreas
मेरा मतलब यह नहीं है कि कभी-कभी ImageView में अपनी सीमाओं और छवि दृश्य में ड्रायबल के बीच कुछ जगह होती है। मैं अपने आयत में इस अंतर को शामिल नहीं करना चाहता हूं। – ipman