DropHelper
ক্লাস ড্র্যাগ-এন্ড-ড্রপ ক্ষমতার বাস্তবায়নকে সহজ করে। Jetpack DragAndDrop
লাইব্রেরির একজন সদস্য, DropHelper
API স্তর 24-এ পশ্চাদগামী সামঞ্জস্য প্রদান করে।
ড্রপ টার্গেট নির্দিষ্ট করতে, ড্রপ টার্গেট হাইলাইটিং কাস্টমাইজ করতে এবং ড্রপ করা ডেটা কীভাবে পরিচালনা করা হয় তা নির্ধারণ করতে DropHelper
ব্যবহার করুন।
ড্র্যাগ সোর্স সেট করুন
শুরু করতে, ড্র্যাগ সোর্স ভিউ এবং OnDragStartListener
দিয়ে DragStartHelper
তৈরি করুন।
OnDragStartListener
এ, onDragStart()
উপর ওভাররাইড পদ্ধতি। সরানো ডেটার জন্য একটি ClipData
অবজেক্ট এবং ClipData.Item
অবজেক্ট তৈরি করুন। ClipData
এর অংশ হিসেবে, ClipData
মধ্যে একটি ClipDescription
অবজেক্টে সংরক্ষিত মেটাডেটা সরবরাহ করুন। একটি ড্র্যাগ-এন্ড-ড্রপ অপারেশনের জন্য যা ডেটা আন্দোলনের প্রতিনিধিত্ব করে না, আপনি একটি প্রকৃত বস্তুর পরিবর্তে null
ব্যবহার করতে চাইতে পারেন।
কোটলিন
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()
জাভা
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
— URI অনুমতির জন্য ব্যবহৃত হয়।- একটি
View
যা ড্রপ লক্ষ্য হিসাবে কাজ করে।- ড্রপ টার্গেট যে MIME প্রকারগুলি ড্রপ করা ডেটা থেকে গ্রহণ করতে পারে৷
- একটি
- ড্রপ টার্গেটের জন্য কনফিগারেশন বিকল্পগুলি - বিশেষ করে, এম্বেড করা
EditText
ক্ষেত্রগুলির একটি তালিকা। - বাদ পড়া ডেটা পরিচালনা করার জন্য একটি
OnReceiveContentListener
।
উদাহরণস্বরূপ, একটি ড্রপ টার্গেট তৈরি করতে যা চিত্রগুলি গ্রহণ করে, নিম্নলিখিত পদ্ধতির কলগুলির যে কোনও একটি ব্যবহার করুন:
কোটলিন
configureView( myActivity, targetView, arrayOf("image/*"), options, onReceiveContentListener) // or configureView( myActivity, targetView, arrayOf("image/*"), onReceiveContentListener)
জাভা
DropHelper.configureView( myActivity, targetView, new String[] {"image/*"}, options, onReceiveContentlistener); // or DropHelper.configureView( myActivity, targetView, new String[] {"image/*"}, onReceiveContentlistener);
দ্বিতীয় কল ড্রপ টার্গেট কনফিগারেশন বিকল্পগুলিকে বাদ দেয়, যে ক্ষেত্রে ড্রপ টার্গেট হাইলাইট রঙটি থিমের সেকেন্ডারি (বা অ্যাকসেন্ট) রঙে সেট করা হয়, হাইলাইট কোণার ব্যাসার্ধটি 16 ডিপিতে সেট করা হয় এবং EditText
উপাদানগুলির তালিকা খালি থাকে। বিস্তারিত জানার জন্য নিম্নলিখিত বিভাগ দেখুন.
ড্রপ লক্ষ্যগুলি কনফিগার করুন
DropHelper.Options
অভ্যন্তরীণ ক্লাস আপনাকে ড্রপ লক্ষ্যগুলি কনফিগার করতে দেয়। DropHelper.configureView(Activity, View, String[], Options, OnReceiveContentListener
) পদ্ধতিতে ক্লাসের একটি উদাহরণ প্রদান করুন। আরও তথ্যের জন্য পূর্ববর্তী বিভাগ দেখুন.
ড্রপ লক্ষ্য হাইলাইটিং কাস্টমাইজ করুন
DropHelper
ড্রপ টার্গেট কনফিগার করে একটি হাইলাইট প্রদর্শন করার জন্য যখন ব্যবহারকারীরা টার্গেটের উপর বিষয়বস্তু টেনে আনে। DropHelper
ডিফল্ট স্টাইলিং প্রদান করে, এবং DropHelper.Options
আপনাকে হাইলাইটের রঙ সেট করতে এবং হাইলাইটের আয়তক্ষেত্রের কোণার ব্যাসার্ধ নির্দিষ্ট করতে দেয়।
DropHelper.Options.Builder
ক্লাস ব্যবহার করুন একটি DropHelper.Options
উদাহরণ তৈরি করতে এবং কনফিগারেশন বিকল্পগুলি সেট করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
কোটলিন
val options: DropHelper.Options = DropHelper.Options.Builder() .setHighlightColor(getColor(R.color.purple_300)) .setHighlightCornerRadiusPx(resources.getDimensionPixelSize(R.dimen.drop_target_corner_radius)) .build()
জাভা
DropHelper.Options options = new DropHelper.Options.Builder() .setHighlightColor(getColor(R.color.purple_300)) .setHighlightCornerRadiusPx(getResources().getDimensionPixelSize(R.dimen.drop_target_corner_radius)) .build();
ড্রপ টার্গেটে EditText উপাদানগুলি পরিচালনা করুন
DropHelper
ড্রপ টার্গেটের মধ্যে ফোকাস নিয়ন্ত্রণ করে যখন লক্ষ্যে সম্পাদনাযোগ্য পাঠ্য ক্ষেত্র থাকে।
ড্রপ টার্গেট একটি একক দৃশ্য বা একটি দৃশ্য শ্রেণিবিন্যাস হতে পারে। ড্রপ টার্গেট ভিউ হায়ারার্কিতে এক বা একাধিক EditText
উপাদান থাকলে, DropHelper.Options.Builder.addInnerEditTexts(EditText...)
ড্রপ টার্গেট হাইলাইটিং এবং টেক্সট ডেটা হ্যান্ডলিং সঠিকভাবে কাজ করে কিনা তা নিশ্চিত করতে উপাদানগুলির একটি তালিকা প্রদান করুন।
DropHelper
ড্রপ টার্গেট ভিউ হায়ারার্কির মধ্যে থাকা EditText
উপাদানগুলিকে ড্র্যাগ ইন্টারঅ্যাকশনের সময় ধারণকৃত ভিউ থেকে ফোকাস চুরি করতে বাধা দেয়।
এছাড়াও, যদি ড্র্যাগ-এন্ড-ড্রপ ClipData
টেক্সট এবং ইউআরআই ডেটা অন্তর্ভুক্ত করে, DropHelper
টেক্সট ডেটা পরিচালনা করতে ড্রপ টার্গেটে EditText
উপাদানগুলির মধ্যে একটি নির্বাচন করে। নির্বাচন অগ্রাধিকার নিম্নলিখিত ক্রম উপর ভিত্তি করে:
-
EditText
যার উপরClipData
ড্রপ করা হয়েছে। -
EditText
যেটিতে টেক্সট কার্সার রয়েছে (ক্যারেট)। -
DropHelper.Options.Builder.addInnerEditTexts(EditText...)
কল করার জন্য প্রথমEditText
দেওয়া হয়েছে।
ডিফল্ট টেক্সট ডেটা হ্যান্ডলার হিসাবে একটি EditText
সেট করতে, DropHelper.Options.Builder.addInnerEditTexts(EditText...)
এ কলের প্রথম আর্গুমেন্ট হিসাবে EditText
পাস করুন। উদাহরণস্বরূপ, যদি আপনার ড্রপ টার্গেট ছবিগুলি পরিচালনা করে কিন্তু সম্পাদনাযোগ্য পাঠ্য ক্ষেত্রগুলি T1
, T2
, এবং T3
ধারণ করে, তাহলে T2
নিম্নরূপ ডিফল্ট করুন:
কোটলিন
val options: DropHelper.Options = DropHelper.Options.Builder() .addInnerEditTexts(T2, T1, T3) .build()
জাভা
DropHelper.Options options = new DropHelper.Options.Builder() .addInnerEditTexts(T2, T1, T3) .build();
ড্রপ লক্ষ্যে ডেটা পরিচালনা করুন
DropHelper.configureView()
পদ্ধতিটি একটি OnReceiveContentListener
গ্রহণ করে যা আপনি ড্র্যাগ-এন্ড-ড্রপ ClipData
পরিচালনা করতে তৈরি করেন। একটি ContentInfoCompat
অবজেক্টে শ্রোতাকে ড্র্যাগ-এন্ড-ড্রপ ডেটা সরবরাহ করা হয়। টেক্সট ডেটা অবজেক্টে থাকে। মিডিয়া, যেমন ছবি, ইউআরআই দ্বারা প্রতিনিধিত্ব করা হয়।
OnReceiveContentListener
এছাড়াও ড্র্যাগ এবং ড্রপ ব্যতীত ব্যবহারকারীর ইন্টারঅ্যাকশন দ্বারা ড্রপ টার্গেটে দেওয়া ডেটা পরিচালনা করে—যেমন কপি এবং পেস্ট—যখন DropHelper.configureView()
নিম্নলিখিত ধরনের ভিউ কনফিগার করতে ব্যবহার করা হয়:
- সমস্ত ভিউ, যদি ব্যবহারকারী Android 12 বা উচ্চতর সংস্করণ চালায়।
-
AppCompatEditText
, যদি ব্যবহারকারী Android 7.0 পর্যন্ত Android এর একটি সংস্করণ চালান।
MIME প্রকার, অনুমতি, এবং বিষয়বস্তু যাচাইকরণ
DropHelper
দ্বারা MIME টাইপ চেকিং ড্র্যাগ-এন্ড-ড্রপ ClipDescription
উপর ভিত্তি করে তৈরি করা হয়েছে, যা ড্র্যাগ-এন্ড-ড্রপ ডেটা প্রদানকারী অ্যাপ দ্বারা তৈরি করা হয়েছে। MIME প্রকারগুলি সঠিকভাবে সেট করা হয়েছে তা নিশ্চিত করতে ClipDescription
যাচাই করুন।
DropHelper
ড্র্যাগ-এন্ড-ড্রপ ClipData
থাকা কন্টেন্ট URI-এর জন্য সমস্ত অ্যাক্সেসের অনুমতির অনুরোধ করে। আরও তথ্যের জন্য, DragAndDropPermissions
দেখুন। ড্র্যাগ-এন্ড-ড্রপ ডেটা প্রক্রিয়া করার সময় অনুমতিগুলি আপনাকে সামগ্রীর URI-গুলি সমাধান করতে দেয়।
DropHelper
ড্রপ করা ডেটাতে ইউআরআইগুলি সমাধান করার সময় বিষয়বস্তু প্রদানকারীদের দ্বারা প্রত্যাবর্তিত ডেটা যাচাই করে না। শূন্যের জন্য পরীক্ষা করুন এবং কোনো সমাধান করা ডেটার সঠিকতা যাচাই করুন।