Android开发之响应用户界面的事件

本文介绍了Android中如何通过回调机制处理用户界面事件,详细讲解了自定义不可编辑的EditText组件,并展示了如何添加点击按钮插入表情的功能。通过对系统组件的继承和事件监听接口的使用,实现了特定的交互需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android平台使用回调机制来处理用户界面事件,每个View都有自己的处理事件的回调方法,如果事件没有被Activity的任何一个View所处理时,Android就会调用Activity的时间处理回调方法进行处理。
注意:如果在一个事件的方法体中,你认为已经完整地处理了这个事件,并不希望其他的回调方法,如Activity的回调方法再次处理,就返回true,否则返回false
有的时候,Android自带的视图组件并不能满足我们的需求,比如我们想要EditText实现这样的功能:它的内容不可以通过键盘输入,而只能通过程序来控制,Android自带的EditText是不具备这样的功能的,只要轻轻点击EditText用户就可以轻易输入内容了。所以我们必须开发自己的视图组件,以实现特定的需求,下面以上面提到的具有特殊功能的EditText为例,简单的讲解一下步骤。
首先,我们必须定义自己的EditText,继承自系统自带的EditText
public class MyEditText extends EditText {
public MyEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
return true;//表示什么也不做
}
}
然后在布局文件中以包名加类名的方式加入自己定义的视图组件
<com.yuchao.myWidget.MyEditText 
    android:id="@+id/neveredit"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
  />
这样,该EditText在处理用户事件中就会调用我们覆盖EditText中相应的方法了。
其实,Android中还为每一个View提供了一种事件监听的接口,每个接口都需要实现一个回调方法,我们只要实现这些方法,就能对事件进行处理,典型的例子是按钮的onClickListener,不再赘述!
下面代码展示向EditText中添加表情,类似QQ聊天窗口
findViewById(R.id.btn_insert ).setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
try{
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.hh);
//  根据Bitmap对象创建ImageSpan对象
ImageSpan imageSpan = new ImageSpan(bitmap);
//  创建一个SpannableString对象,以便插入用ImageSpan对象封装的图像
SpannableString spannableString = new SpannableString("f");
//  用ImageSpan对象替换"f"占位符
spannableString.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//  将获得的图像追加到EditText控件的最后
EditText editText=(EditText)findViewById(R.id.neveredit);
editText.append(spannableString);
}catch(Exception e){}
}
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值