في تطوير Android ، غالبًا ما نستخدم أنماطًا قابلة للسحب مخصصة ، أو أنماط الشكل أو محددات المحدد في السحب ، ولكن في بعض الأحيان إذا كانت هناك حاجة إلى أنماط متعددة يمكن رسمها في XML واحدة ، والأنماط التي يتم تعيينها فيها تختلف قليلاً فقط ، ثم تخصيص أنماط متعددة يمكن رسمها ، مما يجعل من القابلة للرسمية ، مما يجعل العديد من ملفات XML ، والتي هي أمر مزعج ، لذلك في بعض الأحيان ، أعتقد أنني أعتقد أنني قد تخلق في الكود.
استخدام statelistdrawable و tradientDrawable
محدد تنفيذ Java:
/** * تعيين محدد الخلفية * * param presseddraw * param normaldraw * @return */private Statelistdrawable getSelector (drawabledraw drawable ، drawable presseddraw) {Statelistdrawable stateListDrawable = new StateListRawable () ؛ statelistdrawable.addstate (new int [] {Android.r.attr.state_selected} ، presseddraw) ؛ statelistdrawable.addstate (new int [] {} ، normaldraw) ؛ إرجاع statelistdrawable ؛}هذا لإنشاء محدد في الكود. النوع الذي تم إنشاؤه هو statelistdrawable. يمكنك إضافة الحالة إلى المحدد من خلال addstate (). ومع ذلك ، تجدر الإشارة إلى أنه عند إضافة الحالة ، هناك أمر. ستنفيذ StatelistDrawable أولاً أحدث حالة مضاف. إذا لم تكن الدولة ، فقم بتنفيذ الحالة التالية. إذا تم وضع حالة واسعة النطاق في المقدمة ، فستقوم مباشرة بتنفيذ الحالة الواسعة النطاق دون تنفيذ الحالة اللاحقة. بالإضافة إلى ذلك ، عند إضافة الحالة ، أضف علامة " -" قبل الحالة ، مما يشير إلى أن هذه الحالة خاطئة (على سبيل المثال: -android.r.attr.state_selected) ، وإلا فإنها صحيحة.
/** * SET mapple * * param radius * param fillColor * param width * param strokecolor * @return */private GradientDrawable (int radius ، int fillColor ، int width ، int strokecolor) {gradientDrawable gradientDrawable = new GradientDrawable () ؛ GradientDrawable.setCornerradius (نصف القطر) ؛ GradientDrawable.setColor (FillColor) ؛ GradientDrawable.SetStroke (العرض ، strokecolor) ؛ إرجاع GradientDrawable ؛}قم بإنشاء GradientDrawrawlable في الكود ، والتي يمكن أن تدرك وظيفة نمط الشكل بأسلوب قابل للسحب. SetColor يساوي لون التعبئة في الشكل. SetCornerradius هو ضبط راديان الزاوية المستديرة في الشكل. إذا كنت ترغب في ضبط راديان زاوية واحدة ، فيمكنك استخدام setCornerradii () لتعيين راديان في كل زاوية. Setstroke () عبارة عن ضربة ، وتحتاج إلى ملء عرض السكتة الدماغية ولون الحافة.
أخيرًا ، الاستخدام البسيط:
GradientDrawable Normal = getDrawable (0 ، color.hite ، 1 ، getResources (). Press) ؛ TextView.SetBackground (Selector) ؛
لخص
ما سبق هو رمز Java الذي أدخله المحرر لتعيين لون الخلفية للمحدد في حالات مختلفة. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!