QuickContactBadge继承了 ImageView,因此它的本质也是图片按钮,也可以通过 android:src属性指定它显示的图片。QuickContactBadge额外增加的功能是:该图片可以关联到手机中指定联系人,当用户单击该图片时,系统将会打开相应联系人的联系方式界面。
为了让QuickContactBadge与特定联系人关联,可以调用如下方法:
新建模块
布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<QuickContactBadge
android:id="@+id/badge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="我的偶像"
android:textSize="20sp" />
LinearLayout>
逻辑代码
package com.dingjiaxiong.quickcontactbadgetest;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.QuickContactBadge;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取组件
QuickContactBadge badge = findViewById(R.id.badge);
//将组件与特定电话号码联系人建立关联
badge.assignContactFromPhone("020-88888888",false);
}
}
运行
ImageButton还派生了一个子类:FloatingActionButton,该组件用于代表悬浮按钮。悬浮按钮的本质依然是一个按钮,只是它有其特定的行为——该按钮默认是一个带默认填充色的圆形按钮,当用户单击该按钮时,该按钮可以显示一个波纹效果。
FloatingActionButton除可指定图片按钮的各属性之外,还可指定如下控制悬浮按钮的属性:
一般来说,悬浮按钮应该悬浮在界面的右上角或右下角,用于为App 提供一些常用操作。通常,一个页面只应该有一个悬浮按钮,如果需要多个常用操作,则通过悬浮按钮进行折叠或展开。
新建模块
布局
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000"
android:visibility="gone">
<LinearLayout
android:id="@+id/item1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="28dp"
android:layout_marginBottom="86dp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:gravity="end"
android:text="购物车"
android:textColor="@color/white"
android:textSize="15sp" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/mini_fab01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="#ff00ff"
android:elevation="5dp"
android:src="@drawable/ic_baseline_list_24"
app:fabSize="mini" />
LinearLayout>
<LinearLayout
android:id="@+id/item2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:orientation="horizontal"
app:layout_constraintBottom_toTopOf="@id/item1"
app:layout_constraintEnd_toEndOf="@id/item1"
app:layout_constraintStart_toStartOf="@id/item1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:gravity="end"
android:text="继续购买"
android:textColor="@color/white"
android:textSize="15sp" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/mini_fab02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="#ffff00"
android:elevation="5dp"
android:src="@drawable/ic_baseline_list_24"
app:fabSize="mini" />
LinearLayout>
androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fab"
android:layout_marginEnd="20dp"
android:layout_marginBottom="20dp"
android:clickable="true"
android:src="@drawable/ic_baseline_add_24"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:fabSize="normal"
android:elevation="5dp"
android:backgroundTint="#31bfcf"
app:rippleColor="#e7d161"
/>
androidx.constraintlayout.widget.ConstraintLayout>
逻辑代码
package com.dingjiaxiong.floatingactionbutton;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import android.os.Bundle;
import android.view.View;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
public class MainActivity extends AppCompatActivity {
private boolean isShow = false;
private ConstraintLayout content;
private FloatingActionButton fab;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fab = findViewById(R.id.fab);
content = findViewById(R.id.content);
//定义事件监听
View.OnClickListener listener = view -> {
switch (view.getId()){
case R.id.fab:
isShow = !isShow;
content.setVisibility(isShow ? View.VISIBLE : View.GONE);
break;
case R.id.mini_fab01:
case R.id.mini_fab02:
content.setVisibility(View.GONE);
isShow = false;
break;
}
} ;
//为悬浮按钮绑定监听
fab.setOnClickListener(listener);
}
}
运行效果
这里是直接显示的,后面可以加上动画,更加丝滑。