用户界面View之Button与ImageButton控件

做好手中事,珍惜眼前人。


本讲内容: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;
		}
	}
	
}


Take your time and enjoy it 

你可能感兴趣的:(用户界面View之Button与ImageButton控件)