public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button loginButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /** * 1.经过findViewById---返回的时一个View的对象,由于是返回类型是View,因此须要强制转换 * 2.R指的是R.java,该文件包含了因此id控件 **/ loginButton = (Button) findViewById(R.id.button1); /* *1.监听事件经过第一种方式实现(匿名内部类) */ // loginButton.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // System.out.println("点击方法--匿名内部类"); // } // }); /* *2.监听事件经过第二种方式实现(外部类) */ // loginButton.setOnClickListener(new MyOnclickListener(){ // @Override // public void onClick(View v) { // super.onClick(v); // Toast.makeText(MainActivity.this,"外部类--改变透明度",Toast.LENGTH_SHORT).show(); // } // }); // loginButton.setOnClickListener(listener); /* * 3.监听事件经过第二种方式实现(接口) * * 为何这里用this就能够了呢,由于咱们在上面实现了OnClickListener接口,咱们只须要编辑生成的onClick方法便可 * */ loginButton.setOnClickListener(this); } @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"点击方法--实现接口",Toast.LENGTH_SHORT).show(); } //另一种写法 // View.OnClickListener listener = new View.OnClickListener() { // @Override // public void onClick(View v) { // Toast.makeText(MainActivity.this,"外部类--改变透明度",Toast.LENGTH_SHORT).show(); // } // }; } /* * OnClickListener是一个接口,因此只能用implements 而不能用extens继承 */ class MyOnclickListener implements View.OnClickListener{ @Override public void onClick(View v) { v.setAlpha(0.5f); } }