Android ImageView及其子类 介绍+实例(下)

简介: ImageButton什么是ImageButton通过实例了解ImageButton1、创建布局文件运行效果如下:ImageButton灰色边框的产生原因和解决方案QuickContactBadge什么是QuickContactBadgeQuickContactBadge的调用方法通过实例了解QuickContactBadge1、创建布局文件2、让QuickContactBadge与特定联系人建立联系3、运行效果

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>


运行效果如下:


微信图片_20220520162355.png


  • 第一个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>


运行效果如下:


微信图片_20220520162612.png


「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、运行效果


微信图片_20220520162937.png


  看到这里ImageView及其 子类的内容基本「写完了」,希望能对你有所帮助,么么哒。哈哈



相关文章
|
8月前
|
Java 关系型数据库 数据库
Android App连接真机步骤与APP的开发语言和工程结构讲解以及运行实例(超详细必看)
Android App连接真机步骤与APP的开发语言和工程结构讲解以及运行实例(超详细必看)
116 0
|
编解码 Android开发 开发者
Android平台RTMP多实例推送的几种情况探讨
好多开发者提到,如何实现Android平台,多实例推送,多实例推送,有几种理解: 1. 多路编码,多个实例分别推送到不同的RTMP URL(如Android采集板卡同时接2路出去); 2. 同一路编码,多个实例分别推送到不同的RTMP URL(如推送到内网、外网不同的RTMP服务器); 3. 部分路编码、部分路对接编码后的H.264/AAC数据,多个实例分别推送到不同的RTMP URL(混合推)。
|
2月前
|
XML 前端开发 Android开发
Android:UI:Drawable:View/ImageView与Drawable
通过本文的介绍,我们详细探讨了Android中Drawable、View和ImageView的使用方法及其相互关系。Drawable作为图像和图形的抽象表示,提供了丰富的子类和自定义能力,使得开发者能够灵活地实现各种UI效果。View和ImageView则通过使用Drawable实现了各种图像和图形的显示需求。希望本文能为您在Android开发中使用Drawable提供有价值的参考和指导。
49 2
|
8月前
|
Android开发
Android应用实例(一)之---有道辞典VZ.0
Android应用实例(一)之---有道辞典VZ.0
52 2
|
5月前
|
Java Android开发 Kotlin
Android项目架构设计问题之要在Glide库中加载网络图片到ImageView如何解决
Android项目架构设计问题之要在Glide库中加载网络图片到ImageView如何解决
46 0
|
6月前
|
API Android开发
Android 监听Notification 被清除实例代码
Android 监听Notification 被清除实例代码
|
7月前
|
安全 Java Android开发
使用Unidbg进行安卓逆向实例讲解
使用Unidbg进行安卓逆向实例讲解
189 2
|
7月前
|
Java Android开发
18. 【Android教程】图片控件 ImageView
18. 【Android教程】图片控件 ImageView
118 4
|
8月前
|
Android开发
Android修改默认system/bin/下可执行程序拥有者和权限,使用实例,只有root和系统app权限才能执行某个命令。
Android修改默认system/bin/下可执行程序拥有者和权限,使用实例,只有root和系统app权限才能执行某个命令。 【5月更文挑战第2天】
392 0
|
8月前
|
Android开发 C++
Android P HAL层添加HIDL实例
Android P HAL层添加HIDL实例
140 0