DropHelper क्लास, इस्तेमाल करना आसान बनाती है
खींचने और छोड़ने की सुविधाओं को लागू करना. Jetpack का सदस्य
DragAndDrop लाइब्रेरी, DropHelper
इससे एपीआई लेवल 24 तक के पुराने सिस्टम के साथ काम करने की सुविधा मिलती है.
ड्रॉप टारगेट तय करने, ड्रॉप टारगेट को हाइलाइट करने की सुविधा को पसंद के मुताबिक बनाने के लिए DropHelper का इस्तेमाल करें,
और यह तय करें कि छूटे हुए डेटा को कैसे मैनेज किया जाए.
ड्रैग सोर्स सेट करें
शुरू करने के लिए, DragStartHelper बनाएं
सोर्स व्यू को खींचें और छोड़ें और
OnDragStartListener.
OnDragStartListener में,
तरीका onDragStart() बदलें. ClipData ऑब्जेक्ट बनाएं
और ClipData.Item ऑब्जेक्ट को ट्रांसफ़र किया जा सकता है. ClipData के हिस्से के तौर पर,
वह मेटाडेटा दें जिसे ClipDescription ऑब्जेक्ट में
ClipData. डेटा की हलचल को न दिखाने वाले खींचें और छोड़ें कार्रवाई के लिए,
तो शायद आप किसी असल ऑब्जेक्ट के बजाय null का इस्तेमाल करना चाहें.
Kotlin
DragStartHelper(draggableView) { view: View, _: DragStartHelper -> val item = ClipData.Item(view.tag as? CharSequence) val dragData = ClipData( view.tag as? CharSequence, arrayOf(ClipDescription.MIMETYPE_TEXT_PLAIN), item ) view.startDragAndDrop( dragData, View.DragShadowBuilder(view), null, 0 ) }.attach()
Java
new DragStartHelper(draggableView, new DragStartHelper.OnDragStartListener() { @Override public void onDragStart(View view, DragStartHelper helper) { CharSequence tag = (CharSequence) view.getTag(); ClipData.Item item = new ClipData.Item(tag); ClipData dragData = new ClipData( tag, new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN}, item); view.startDragAndDrop( dragData, new View.DragShadowBuilder(view), null, 0); } });
ड्रॉप टारगेट तय करें
जब कोई उपयोगकर्ता किसी व्यू पर ड्रॉप शैडो रिलीज़ करता है, तो व्यू को कॉन्फ़िगर करना ज़रूरी है और सही ढंग से प्रतिक्रिया दें.
DropHelper.configureView()
एक स्टैटिक, ओवरलोडेड तरीका है, जिसकी मदद से ड्रॉप टारगेट तय किए जा सकते हैं. यह
पैरामीटर में ये शामिल होते हैं:
- मौजूदा
Activity—जिसका इस्तेमाल इन कामों के लिए किया गया यूआरआई अनुमतियां हैं. - ड्रॉप टारगेट के लिए कॉन्फ़िगरेशन के विकल्प—खास तौर पर,
एम्बेड किए गए
EditTextफ़ील्ड. OnReceiveContentListenerछूटे हुए डेटा को हैंडल करने के लिए.
उदाहरण के लिए, इमेज स्वीकार करने वाला ड्रॉप टारगेट बनाने के लिए, इनमें से किसी एक का इस्तेमाल करें कॉल:
Kotlin
configureView( myActivity, targetView, arrayOf("image/*"), options, onReceiveContentListener) // or configureView( myActivity, targetView, arrayOf("image/*"), onReceiveContentListener)
Java
DropHelper.configureView( myActivity, targetView, new String[] {"image/*"}, options, onReceiveContentlistener); // or DropHelper.configureView( myActivity, targetView, new String[] {"image/*"}, onReceiveContentlistener);
दूसरे कॉल में, ड्रॉप टारगेट के कॉन्फ़िगरेशन के विकल्पों को छोड़ दिया जाता है. इस स्थिति में,
ड्रॉप टारगेट हाइलाइट करने के लिए रंग को थीम के सेकंडरी (या एक्सेंट) रंग पर सेट किया गया है,
हाइलाइट कोने का दायरा 16 dp पर सेट किया गया है, और EditText की सूची
कॉम्पोनेंट खाली है. ज़्यादा जानकारी के लिए, यहां मौजूद सेक्शन देखें.
ड्रॉप टारगेट कॉन्फ़िगर करें
DropHelper.Options
इनर क्लास की मदद से, ड्रॉप टारगेट कॉन्फ़िगर किए जा सकते हैं. क्लास का कोई इंस्टेंस इसको दें
DropHelper.configureView(Activity, View, String[], Options,
OnReceiveContentListener)
तरीका. ज़्यादा जानकारी के लिए, पिछला सेक्शन देखें.
ड्रॉप टारगेट को हाइलाइट करने की सुविधा को पसंद के मुताबिक बनाएं
DropHelper, ड्रॉप टारगेट को कॉन्फ़िगर करता है, ताकि उपयोगकर्ताओं को खींचकर छोड़ने के दौरान हाइलाइट दिखाया जा सके
कॉन्टेंट को टारगेट किया जा सकता है. DropHelper डिफ़ॉल्ट स्टाइलिंग देता है और
DropHelper.Options की मदद से, हाइलाइट का रंग सेट किया जा सकता है और
हाइलाइट के आयत के कोने की रेडियस.
इसका इस्तेमाल करें
DropHelper.Options.Builder
क्लास का इस्तेमाल करके, DropHelper.Options इंस्टेंस बनाएं और कॉन्फ़िगरेशन विकल्प सेट करें,
जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:
Kotlin
val options: DropHelper.Options = DropHelper.Options.Builder() .setHighlightColor(getColor(R.color.purple_300)) .setHighlightCornerRadiusPx(resources.getDimensionPixelSize(R.dimen.drop_target_corner_radius)) .build()
Java
DropHelper.Options options = new DropHelper.Options.Builder() .setHighlightColor(getColor(R.color.purple_300)) .setHighlightCornerRadiusPx(getResources().getDimensionPixelSize(R.dimen.drop_target_corner_radius)) .build();
ड्रॉप टारगेट में एडिट टेक्स्ट कॉम्पोनेंट मैनेज करना
DropHelper, ड्रॉप टारगेट में फ़ोकस को तब भी कंट्रोल करता है, जब टारगेट में ये शामिल हों
बदलाव करने लायक टेक्स्ट फ़ील्ड.
ड्रॉप टारगेट कोई व्यू या व्यू हैरारकी हो सकते हैं. अगर टारगेट व्यू में गिरावट आई है, तो
क्रम में एक या उससे ज़्यादा EditText हैं
बनाने के लिए, कॉम्पोनेंट की सूची दें,
DropHelper.Options.Builder.addInnerEditTexts(EditText...)
ताकि यह पक्का किया जा सके कि ड्रॉप टारगेट को हाइलाइट करने और टेक्स्ट डेटा को मैनेज करने की प्रोसेस सही तरीके से काम करे.
DropHelper, ड्रॉप टारगेट व्यू में EditText कॉम्पोनेंट को रोकता है
को ड्रैग इंटरैक्शन के दौरान कंटेनिंग व्यू से फ़ोकस चुराने से रोका गया हो.
साथ ही, अगर खींचें और छोड़ें ClipData
इसमें टेक्स्ट और यूआरआई डेटा शामिल होता है, तो DropHelper EditText में से किसी एक को चुनता है
कॉम्पोनेंट को 'ड्रॉप टारगेट' में शामिल करता है, ताकि टेक्स्ट डेटा को हैंडल किया जा सके. चुनाव इन आधार पर किया जाता है:
प्राथमिकता के क्रम के हिसाब से:
- वह
EditTextजिस परClipDataछोड़ा गया. - वह
EditTextजिसमें टेक्स्ट कर्सर (कैरेट) होता है. - इस नंबर पर कॉल के लिए दिया गया पहला
EditTextDropHelper.Options.Builder.addInnerEditTexts(EditText...).
EditText को डिफ़ॉल्ट टेक्स्ट डेटा हैंडलर के तौर पर सेट करने के लिए, EditText को इस तरह पास करें
कॉल का पहला आर्ग्युमेंट
DropHelper.Options.Builder.addInnerEditTexts(EditText...). उदाहरण के लिए, अगर
आपका ड्रॉप टारगेट इमेज को हैंडल करता है, लेकिन इसमें बदलाव किए जा सकने वाले टेक्स्ट फ़ील्ड T1, T2,
और T3 के साथ, T2 को इस तरह से डिफ़ॉल्ट बनाएं:
Kotlin
val options: DropHelper.Options = DropHelper.Options.Builder() .addInnerEditTexts(T2, T1, T3) .build()
Java
DropHelper.Options options = new DropHelper.Options.Builder() .addInnerEditTexts(T2, T1, T3) .build();
गिरावट वाले टारगेट में डेटा मैनेज करना
DropHelper.configureView() वाले तरीके में OnReceiveContentListener को स्वीकार किया जाता है
इसे, 'खींचें और छोड़ें' ClipData को हैंडल करने के लिए बनाया जाता है. 'खींचें और छोड़ें' डेटा
को सुनने के लिए
ContentInfoCompat ऑब्जेक्ट.
ऑब्जेक्ट में टेक्स्ट डेटा मौजूद होता है. इमेज जैसे मीडिया को
यूआरआई.
OnReceiveContentListener, गिरावट टारगेट को दिए गए डेटा को इसके हिसाब से भी मैनेज करता है
खींचें और छोड़ें के अलावा अन्य उपयोगकर्ता इंटरैक्शन—जैसे कॉपी और
चिपकाएं—जब DropHelper.configureView() का इस्तेमाल करके, इन्हें कॉन्फ़िगर किया जाता है
व्यू के टाइप:
- सभी व्यू, जब उपयोगकर्ता Android 12 या इसके बाद के वर्शन का इस्तेमाल कर रहा हो.
AppCompatEditTextअगर उपयोगकर्ता Android के किसी वर्शन को Android 7.0 पर चला रहा है.
MIME टाइप, अनुमतियां, और कॉन्टेंट की पुष्टि
DropHelper, MIME टाइप के लिए जो जांच करता है वह खींचे और छोड़ें
ClipDescription, यानी कि
और 'खींचें और छोड़ें' डेटा उपलब्ध कराने वाले ऐप्लिकेशन से बनाया गया है. पुष्टि करें
ClipDescription. इससे यह पक्का किया जा सकता है कि MIME टाइप सही तरीके से सेट किया गया है.
DropHelper, इसमें मौजूद कॉन्टेंट यूआरआई के लिए सभी ऐक्सेस अनुमतियों का अनुरोध करता है
इसके लिए, ClipData को खींचें और छोड़ें. ज़्यादा जानकारी के लिए, यह देखें
DragAndDropPermissions. कॉन्टेंट बनाने
अनुमतियों से, खींचें और छोड़ें बटन को प्रोसेस करते समय आपको कॉन्टेंट यूआरआई का समाधान करने में मदद मिलती है
डेटा शामिल है.
DropHelper, कॉन्टेंट देने वालों से मिले डेटा की पुष्टि नहीं करता, जब
छोड़े गए डेटा में यूआरआई का समाधान करता है. शून्य की जाँच करें और इसके सही होने की पुष्टि करें
कोई भी समाधान किया गया डेटा.