كيفية إنشاء زر قابلة للنقر مع appedrawable؟
-
29-09-2019 - |
سؤال
أحاول رسم شكل على قماش والحصول على معلومات حول النقرات التي يقوم بها المستخدم على تلك القماش.
لقد أنشأت فئة تمتد فئة الأزرار.
class CustomDrawableButton extends Button {
private final ShapeDrawable mDrawable;
int x = 50;
int y = 50;
int width = 30;
int height = 30;
public CustomDrawableButton (Context context) {
super(context);
mDrawable = new ShapeDrawable (new OvalShape ());
mDrawable.getPaint().setColor(Color.GREEN);
mDrawable.setBounds(x, y, x + width, y + height);
}
protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
}
}
بعد ذلك ، في فصل يمتد أيضًا عرض العرض ، أضفت التثبيت والمستمع:
CustomDrawableButton mCustomDrawableButton = new CustomDrawableButton(getBaseContext());
layout.addView(mCustomDrawableButton);
mCustomDrawableButton.draw(canvas);
mCustomDrawableButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
System.out.println("Yey clicked");
Toast.makeText(view.getContext(), "Yey", Toast.LENGTH_LONG).show();
}});
عند تنفيذ ذلك ، لا يمكنه اكتشاف النقرات على الصورة / الزر. لقد قرأت أن الكائنات القابلة للتشكيل لا يمكن أن تكون "قابلة للنقر" ، لكنني كنت أتوقع أن يعمل هذا منذ أن قمت بتوسيع الزر (وهو طريقة عرض و "قابلة للنقر").
هل هذا ممكن؟ إذا لم يكن الأمر كذلك ، هل يمكنك توجيهي إلى طريقة ما للحصول على معلومات حول إحداثيات الشاشة التي تم الضغط عليها على قماش أو طريقة عرض؟
شكرا مقدما.
المحلول
بعد البحث ، إليك برنامج تعليمي يوضح كيفية القيام بذلك باستخدام موضع الشاشة الذي تم لمسه.
http://marakana.com/tutorials/android/2d-graphics-example.html
ما زلت لا أعرف كيفية القيام بذلك عن طريق ربط الحدث الذي تم لمسه تلقائيًا. إذا كان أي شخص يعرف كيفية القيام بذلك ، فيرجى قول ذلك.
شكرًا.