এটিই সেরা সমাধান যা আমি বিনায়কের উত্তর থেকে ইঙ্গিত নিয়ে এসেছি। অন্যান্য সমস্ত সমাধানের বিভিন্ন ত্রুটি রয়েছে।
সবার আগে এটির মতো একটি ফাংশন তৈরি করুন।
void addClickEffect(View view)
{
Drawable drawableNormal = view.getBackground();
Drawable drawablePressed = view.getBackground().getConstantState().newDrawable();
drawablePressed.mutate();
drawablePressed.setColorFilter(Color.argb(50, 0, 0, 0), PorterDuff.Mode.SRC_ATOP);
StateListDrawable listDrawable = new StateListDrawable();
listDrawable.addState(new int[] {android.R.attr.state_pressed}, drawablePressed);
listDrawable.addState(new int[] {}, drawableNormal);
view.setBackground(listDrawable);
}
ব্যাখ্যা:
getConstantState ()। new অঙ্কনযোগ্য () বিদ্যমান অঙ্কনযোগ্যকে ক্লোন করতে ব্যবহৃত হয় অন্যথায় একই অঙ্কনযোগ্য ব্যবহার করা হবে। এখান থেকে আরও পড়ুন:
অ্যান্ড্রয়েড: ফিল্টারগুলি সহ একটি স্টেটলিস্টড্র্যায়েবল করার জন্য একটি অঙ্কনযোগ্য ক্লোনিং
মুচলেকা () অঙ্কনযোগ্য ক্লোনটিকে তার রাজ্যের ভাগযোগ্য না হওয়ার অন্যান্য উদাহরণগুলির সাথে ভাগ করে নেওয়ার জন্য ব্যবহৃত হয়। এটি সম্পর্কে এখানে আরও পড়ুন:
https://developer.android.com/references/android/ographicics/drawable/Drawable.html#mutate ()
ব্যবহার:
ফাংশনের প্যারামিটার হিসাবে আপনি যে কোনও ধরণের ভিউ (বাটন, ইমেজবটন, ভিউ ইত্যাদি) পাস করতে পারেন এবং তারা তাদের জন্য ক্লিক এফেক্ট প্রয়োগ করবে।
addClickEffect(myButton);
addClickEffect(myImageButton);