ImageButton
什么是ImageButton
ImageButton是一个图片按钮,ImageButton继承自ImageView,也就是说ImageView的所有XML属性和方法ImageButton都可以用,就不再重复了。
通过实例了解ImageButton
1、创建布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <ImageButton android:layout_width="200dp" android:layout_height="200dp" android:layout_gravity="center" android:scaleType="fitXY" android:src="@mipmap/ibtn_bg1"/> <ImageButton android:layout_width="200dp" android:layout_height="200dp" android:layout_gravity="center" android:adjustViewBounds="true" android:scaleType="fitXY" android:src="@drawable/bg_ibtn_selector_bg"/> </LinearLayout>
运行效果如下:
- 第一个ImageButton:android:src="@mipmap/ibtn_bg1"指定了一张静态图片,无论用户怎么点击,ImageButton总显示这张静态图片。
- 第二个ImageButton:android:src="@drawable/bg_ibtn_selector_bg",这个drawable里面设置了两张图片,可以确保用户点击时切换图片。
drawable/bg_ibtn_selector_bg如下:
<?xml version ="1.0" encoding ="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!--未点击显示图片--> <item android:state_pressed="false" android:drawable="@mipmap/ibtn_bg2"/> <!--点击显示图片--> <item android:state_pressed="true" android:drawable="@mipmap/ibtn_bg1"/> </selector>
ImageButton灰色边框的产生原因和解决方案
看上面图,功能实现了,但是图片周围有灰色边框,是真的丑。
产生原因:ImageButton默认就是有边框的。或者可以说会预留出一部分背景。这样用户点击的时候,背景就会有颜色变化(从浅灰变深灰可参考上图)。
解决方案:
- 1、android:background="@null"
- 2、android:background="@mipmap/ibtn_bg1",直接将图片设置为背景。
- 3、android:background="#00000000",边框透明。#000000为黑色,前面加00是设置透明度。
对上面的xml文件进行修改:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <ImageButton android:layout_width="200dp" android:layout_height="200dp" android:layout_gravity="center" android:background="@mipmap/ibtn_bg1"/> <ImageButton android:layout_width="200dp" android:layout_height="200dp" android:layout_marginTop="@dimen/dimen_10" android:layout_gravity="center" android:scaleType="fitXY" android:background="#00000000" android:src="@drawable/bg_ibtn_selector_bg"/> </LinearLayout>
运行效果如下:
「ZoomButton被废弃,这里就不做描述了。」
QuickContactBadge
什么是QuickContactBadge
QuickContactBadge继承自ImageView,因此它的「本质也是图片按钮」,也可以通过android:src属性指定它的显示图片。QuickContactBadge「额外增加的功能」是:该图片可以关联到手机中指定联系人,当用户单击该图片时,系统将会打开相应联系人的联系方式界面。
QuickContactBadge的调用方法
为了让 QuickContactBadge与特定联系人关联,可以调用如下方法。
- assignContactFromEmail(String emailAddapplsrclmainlress, boolean lazyLookup):将该图片关联到指定E-mail 地址对应的联系人。
- assignContactFromPhone(String phoneNumber, boolean lazyLookup):将该图片关联到指定电话号码对应的联系人。
- assignContactUri(Uri contactUri):将该图片关联到特定Uri对应的联系人。
通过实例了解QuickContactBadge
1、创建布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <QuickContactBadge android:id="@+id/qcb_email" android:layout_width="200dp" android:layout_height="200dp" android:layout_gravity="center" android:background="@null" android:src="@mipmap/ibtn_bg1"/> <QuickContactBadge android:id="@+id/qcb_phone" android:layout_width="200dp" android:layout_height="200dp" android:layout_marginTop="@dimen/dimen_10" android:layout_gravity="center" android:scaleType="fitXY" android:background="@null" android:src="@drawable/bg_ibtn_selector_bg"/> </LinearLayout>
2、让QuickContactBadge与特定联系人建立联系
//关联控件 qcbEmail = findViewById(R.id.qcb_email); qcbPhone = findViewById(R.id.qcb_phone); //联系人中必须有你填写的对应联系人 //将该图片关联到指定E-mail地址对应的联系人。 qcbEmail.assignContactFromEmail("shuaici@qq.com",false); //将该图片关联到指定电话号码对应的联系人。 qcbPhone.assignContactFromPhone("021-20210714",false);
3、运行效果
看到这里ImageView及其 子类的内容基本「写完了」,希望能对你有所帮助,么么哒。哈哈