Android采用基于监听事件处理机制

监听事件处理机制几种形式:
内部类形式实现监听器
匿名内部类形式实现监听器
类本身实现监听器
外部类实现监听器(因为用的不是很多,在此不讲述)

常用的几种监听接口:
View.OnClickListener (单击事件监听器必须实现的接口)
View.OnCreateContextMenuListener (创建上下文菜单事件)
View.OnFocusChangeListener (焦点改变事件)
View.OnKeyListener (按键事件监听器)
View.OnLongClickListener (长按事件监听器)
View.OnTouchListener (触摸屏事件监听器)

采用基于监听事件处理机制来实现分为4个步骤:
1.获得事件源
2.确定事件
3.实现监听器
4.绑定监听器到事件源上

在此以OnClickListener单击事件为例使用intent来实现页面的跳转

一、内部类形式实现监听

<TextView
//id值
        android:id="@+id/test2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="内部类"
        android:gravity="center"
        android:textSize="20dp"
        android:textColor="#fff"/>
public class MainActivity extends AppCompatActivity{

//定义一个TextView对象
    private TextView textView2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//获得事件源
        textView = findViewById(R.id.test2);
//确定事件为点击事件,绑定监听器到事件源
        textView.setOnClickListener(new myListener());
    }
    //内部类实现页面跳转
    private class myListener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
    //采用显示Intent启动第二个页面
            startActivity(new Intent(MainActivity.this,internalActivity.class));
        }
    }
}

二、匿名内部类实现

<TextView
        android:id="@+id/test3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="匿名内部类"
        android:gravity="center"
        android:textSize="20dp"
        android:textColor="#fff"/>
public class MainActivity extends AppCompatActivity {

    private TextView textView1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//获得事件源
        textView1 = findViewById(R.id.test3);
        //匿名内部类实现跳转 (实现监听器,绑定监听器到事件源要同步进行)
        textView1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this,anonymousActivity.class));
            }
        });
    }
}

三、类本身实现监听器

<TextView
        android:id="@+id/test4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="类本身打开浏览器"
        android:gravity="center"
        android:textSize="20dp"
        android:textColor="@color/colorWhite"/>
public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private TextView textView2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //获得事件源
        textView2 = findViewById(R.id.test4);
        //绑定监听器到事件源
        textView2.setOnClickListener(this);
    }
//类本身实现 浏览器跳转
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.test4:
            //采用隐式intent
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("http://www.baidu.com"));
                startActivity(intent);
                break;
        }
    }
}

总结:
可根据不同的情况选择不同的事件处理机制来解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值