第一课,Button
同学们都知道Button时按钮的意思,下面第一课就开始讲Button
Button是按钮,各类中常用的一种属性
Button是Text View的子类,Text Viewset Text设置 Button支持set Text
Image Button 没有android.text属性,不能通过setText()来设置内容,但是Button可以
可以为image Button设置图片
可以用android:background来设置图片,那么图片会被拉伸
可以用android:src来设置图片,那么默认图片大小居中
同时设置这两个属性 src属性在上面,background属性在下面
问题:
Android中的image View 和image Button和 Button之间的区别???
1. 继承不同,看API
2. Image Button不支持set Text(),而Button支持
3. Image Button 支持set image URL,而Button不支持
4. Image Button和Button都有Button的状态而image View 没有
5. 显示也有差异
6. Image Button有默认的背景,显示不了圆角效果
Selector主要是用来改变List View 和Button 控件背景
1. res目录下新建draw able文件夹
2. Draw able文件夹中新建**.xml(类型selector)
Button点击事件:大概可以分为以下几种:
1. 匿名内部类
2. 定义内部类,实现OnClickListener接口
3. 定义的构造方法
4. 用Activity实现OnClickListener接口
5. 指定Button的onClick的属性
首先我们简单地定义一个带Button的xml布局文件
activity_main.xml:
<Button
android:id="@+id/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击事件"/>
然后再写Java代码
MainActivity.java:
1.匿名内部类
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt = (Button) findViewById(R.id.bt1);
//1.匿名内部类
bt.setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View v) {
// TODO Auto-generated method stub
Log.i("匿名内部类", "点击事件");
}
}); }
2.定义内部类,实现OnClickListener接口
publicclass MainActivity extends Activity{
private Button bt;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt = (Button) findViewById(R.id.bt);
bt.setOnClickListener(new MyListener());
}
//定义内部类,实现OnClickListene接口
class MyListener implements OnClickListener{
@Override
publicvoid onClick(View v) {
// TODO Auto-generated method stub
Log.i("定义内部类,实现OnClickListene接口", "点击事件");
}
} }
3.定义的构造方法
publicclass MainActivity extends Activity{
private Button bt;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt = (Button) findViewById(R.id.bt);
myListener();
}
//定义构造方法
privatevoid myListener() {
// TODO Auto-generated method stub
bt.setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View v) {
// TODO Auto-generated method stub
Log.i("定义构造方法", "点击事件");
}
});
}
}
4.用Activity实现OnClickListener接口
publicclass MainActivity extends Activity implements OnClickListener {
private Button bt;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt = (Button) findViewById(R.id.bt);
bt.setOnClickListener(this);
}
//用Activity实现OnClickListener接口 @Override
publicvoid onClick(View v) {
// TODO Auto-generated method stub
Log.i("用Activity实现OnClickListener接口", "点击事件");
}
}
5.指定Button的onClick的属性:
先在layout文件中指定onClick属性,然后到Activity中实现这个onButtonClick方法
布局文件:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="点击事件"/>
Java代码:
publicclass MainActivity extends Activity {
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//5指定onClick属性方式
publicvoid click(View v) {
// TODO Auto-generated method stub
Log.i("指定onClick属性方式","点击事件");
}
}
另外,多个按钮点击事件的处理,以指定onClick属性方式为例,获取其资源id,通过资源id,可以判断用户点击了哪个按钮了。
布局文件:
<Button
android:id="@+id/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="点击事件1"/>
<Button
android:id="@+id/bt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="点击事件2"/>
<Button
android:id="@+id/bt3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="点击事件3"/>/>
<Button
android:id="@+id/bt4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="点击事件4"/>
Java代码:
publicclass MainActivity extends Activity {
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//指定onClick属性方式
//传人的View对象,就是用户按下的那个按钮对象
publicvoid click(View v) {
// TODO Auto-generated method stub
//获取组件的资源id
int id = v.getId();
switch (id) {
case R.id.bt1:
Log.i("指定onClick属性方式","bt1点击事件");
break;
case R.id.bt2:
Log.i("指定onClick属性方式","bt2点击事件");
break;
case R.id.bt3:
Log.i("指定onClick属性方式","bt3点击事件");
break;
case R.id.bt4:
Log.i("指定onClick属性方式","bt4点击事件");
break;
default:
break;
}
}
}