我已经使一个surfaceView接受一个OnTouchEvent,在这个视图中,我用Button.draw(Canvas)手动绘制一个Button(不是一个ViewGroup)。
现在,这个按钮可以在我的SurfaceView上绘制,但是当我将一个keyEvent从OnTouchEvent传递给Button之类的Button.onTouchEvent(keyEvent)时,但是这个按钮无法显示点击效果
所以问题是如何将keyEvent传递给View manully并显示它在Layout中显示的内容????
任何想法?thx !!
答案 0 :(得分:0)
我确信有更好的方法可以做到这一点......但我无法理解。所以这就是我想出的。
我创建了自己的Button
扩展名。并在MyButton
内创建xmls
的组件。
<com.stackoverflow.android.example.MyButton android:text="@+id/Button01" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content"></com.stackoverflow.android.example.MyButton>
您需要将Button
的每个实例更改为com.stackoverflow.android.example.MyButton
。
package com.stackoverflow.android.example;
import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
import android.widget.Button;
public class MyButton extends Button {
final int MSG_MYBUTTON_HIGHLIGHT_ON = 0;
final int MSG_MYBUTTON_HIGHLIGHT_OFF = 1;
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
Handler mHandler = new Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case MSG_MYBUTTON_HIGHLIGHT_ON:
setPressed(true);
sendEmptyMessageDelayed(MSG_MYBUTTON_HIGHLIGHT_OFF, ViewConfiguration.getPressedStateDuration());
break;
case MSG_MYBUTTON_HIGHLIGHT_OFF:
setPressed(false);
default:
break;
}
};
};
public void performVirtualClick()
{
mHandler.sendEmptyMessage(MSG_MYBUTTON_HIGHLIGHT_ON);
performClick();
}
}
调用performVirtualClick
函数......即可。