做好手中事,珍惜眼前人。
本讲内容:Button与ImageButton控件
一、Button和ImageButton特征:
1、相同点:都可以作为一个按钮产生点击事件,并产生明显的点击效果。
2、不同点:Button有text的属性,ImageButton没有;ImageButton有src属性,Button没有
二、监听事件实现的几种写法
1、匿名内部类的实现
2、独立类的实现
3、实现接口的方式来实现
注意:所有的控件都有一个onclick的事件,不仅仅Button和ImageButton拥有
示例一:匿名内部类的实现
下面是res/layout/activity_main.xml 布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/id_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button" /> </RelativeLayout>
下面是MainActivity.java主界面文件:
public class MainActivity extends Activity { private Button b; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1.初始化当前所需要控件:findViewById()返回的时一个View的对象 b=(Button) findViewById(R.id.id_button); //1.监听事件通过第一种方式(匿名内部类) b.setOnClickListener(new OnClickListener() { public void onClick(View v) { Toast.makeText(MainActivity.this, "Button被点击了", Toast.LENGTH_LONG).show(); } }); } }
示例二:独立类实现
下面是res/layout/activity_main.xml 布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/id_button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button1" /> <Button android:id="@+id/id_button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button2" /> </LinearLayout>
下面是MainActivity.java主界面文件:
public class MainActivity extends Activity { private Button b1; private Button b2; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1=(Button) findViewById(R.id.id_button1); b2=(Button) findViewById(R.id.id_button2); b1.setOnClickListener(new MyOnClickListener(){ public void onClick(View v) { super.onClick(v); Toast.makeText(MainActivity.this, "Button1被点击了", Toast.LENGTH_LONG).show(); } }); b2.setOnClickListener(new MyOnClickListener(){ public void onClick(View v) { super.onClick(v); Toast.makeText(MainActivity.this, "Button2被点击了", Toast.LENGTH_LONG).show(); } }); } } // 独立类实现 OnClickListener是一个接口 class MyOnClickListener implements OnClickListener { // 让所有使用当前外部类的点击事件的按钮都要做出一个动作 public void onClick(View v) {// v体表当前点击的对象 v.setAlpha(0.5f);//设置透明度 } }
示例三:实现接口的方式来实现
下面是MainActivity.java主界面文件:
public class MainActivity extends Activity implements OnClickListener{ private Button b; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b=(Button) findViewById(R.id.id_button); b.setOnClickListener(this); } public void onClick(View v) { switch (v.getId()) { case R.id.id_button: Toast.makeText(MainActivity.this, "Button被点击了", Toast.LENGTH_LONG).show(); break; } } }