php主做哪种类型网站,高端公司小程序建设,wordpress机械展示,2022拉新推广赚钱的app李刚的Android疯狂讲义真是“疯狂”#xff0c;浪费了3天时间#xff0c;到底是他的代码有问题#xff0c;还是怎么的不得而知。 问题描述#xff1a;他的书里面第3.3基于回调事件处理Propagation的例程。是为了演示基于回调事件传播的例程序#xff0c;源代码如下#x…李刚的Android疯狂讲义真是“疯狂”浪费了3天时间到底是他的代码有问题还是怎么的不得而知。 问题描述他的书里面第3.3基于回调事件处理Propagation的例程。是为了演示基于回调事件传播的例程序源代码如下 MyButton.java publicclassMyButtonextendsButton
{publicMyButton(Context context ,AttributeSet set){super(context , set);}Overridepublicboolean onKeyDown(int keyCode,KeyEvent event){super.onKeyDown(keyCode , event);Log.v(-MyButton-,the onKeyDown in MyButton);//返回false表明并未完全处理该事件该事件依然向外扩散return false;}
} Propagation.java publicclassPropagationextendsActivity
{
Override
publicvoid onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MyButton bn (MyButton)findViewById(R.id.bn);
//bn.setFocusable(true);
bn.requestFocus();
bn.setFocusableInTouchMode(true);
//为bn绑定事件监听器
bn.setOnKeyListener(newOnKeyListener()
{Overridepublicboolean onKey(View source,int keyCode,KeyEvent event){//只处理按下键的事件if(event.getAction()KeyEvent.ACTION_DOWN){Log.v(-Listener-,the onKeyDown in Listener);}// 返回false表明该事件会向外传播return false;}
});
} //重写onKeyDown方法该方法可监听它所包含的所有组件的按键被按下事件 Override
publicboolean onKeyDown(int keyCode,KeyEvent event)
{super.onKeyDown(keyCode , event);Log.v(-Activity-,the onKeyDown in Activity);//返回false表明并未完全处理该事件该事件依然向外扩散return false;
} MyButton继承了Button,并重写了onKeyDown方法这个方法是在控件有焦点的情况下当组件上按下某个按键触发该方法这点很重要 类似的还有OnkeyUp和OnKeyPress。这里涉及到一个焦点问题。 那么什么是焦点问题焦点可以理解为我们正在操作的对象焦点在这里就可操作。实际上这个MyButton是在Activity中的我们程序默 认运行的时候焦点在Activity上这就造成里面的MyButton无法操作我是这么理解的呵呵。所以程序要加两行的是 这里是不用setFocusable而用requstFocuns的原因是前者是设置是否允许此控件有获得焦点的能力后者是请求获得焦点一个是设置属性 另一个是执行动作故我们用后者setFocunsableInTouchMode是获得焦点的方式我们是触摸的时候获得焦点。设置好了之后焦点定位 在了该Button上当单击模拟器任意按键的时候有程序是LogCat正确输出。 本程序是为了演示如果有任何一个事件处理方法返回了true该事件还会继承向外传播。我不理解的书中”先把焦点移动到程序界面的按钮上“是几个意思困惑了好长时间。 转载于:https://www.cnblogs.com/fruitbolgs/p/4160862.html