我正在使用线程绘制Livewallpaper,从View扩展所有对象和自定义对象。问题是我的自定义视图不会点击....
以下是Code Snippeds:
在我的WallpaperService类中,OnTouch被赋予我的绘画线程:
@Override
public void onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
painting.doTouchEvent(event);
}
然后在我的PaintingThread的构造函数中,我正在创建自定义视图的实例:
public LiveWallpaperPainting(SurfaceHolder surfaceHolder, Context context) {
for(int i = 0; i < numberOfObj;i++ ){
obj.add(new Obj(context,objBitmap, objBitmap2, mCanvasWidth, mCanvasHeight, 32, 32 , 20, 10));
}
然后在我的Obj的构造函数中:
super(context);
this.context = context;
this.setEnabled(true);
this.setFocusable(true);
this.setFocusableInTouchMode(true);
this.setClickable(true);
this.setOnClickListener(this);
Class实现了OnClickListener。
但是当我登录onClick时没有任何事情发生....:
@Override
public void onClick(View v) {
Log.d(TAG, "clicked");
}
我变得疯狂,因为我尝试了很多,但没有任何效果...... :(请帮助我。 我认为在我的Obj可以做出反应之前,OnClick会被捕获吗?但不知道为什么......
我希望我能为您提供所需的所有细节......
由实
答案 0 :(得分:4)
以下代码有效。你在Activity上有另一个OnClickListener吗?
public class CustomView extends View implements OnClickListener {
Paint paint;
public CustomView(Context context) {
this(context, null);
}
public CustomView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CustomView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint = new Paint();
paint.setColor(Color.BLUE);
canvas.drawRect(0.f, 0.f, 240.f, 240.f, paint);
this.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Log.d("CustomView", "Click");
}}
main.xml中
<com.examples.view.CustomView
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />