betacode

Руководство Android QuickContactBadge

  1. Android QuickContactBadge
  2. Важные методы
  3. Пример QuickContactBadge

1. Android QuickContactBadge

Android QuickContactBadge (Значок быстрого контакта) это подкласс ImageView, он отображается как маленький значок (badge), пользователь кликает на него чтобы быстро создать контакт, например добавить номер телефона в контакты, добавить email в контакты,...
Примечание: QuickContactBadge не имеется готовым на Palette окна дизайна, поэтому вам нужно использовать XML код ниже, чтобы добавить QuickContactBadge в интерфейс.
QuickContactBadge
<QuickContactBadge
    android:id="@+id/quickContactBadge11"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/icon_contact_add" ...>

</QuickContactBadge>
Как и его название "Quick Contact Badge" (Значок быстрого контакта), вы можете легко создать маленький "Badge" позволяющий пользователю кликнуть на него чтобы добавить контакт, только с несколькими кракими строками кода.
Например: Настройте параметры для QuickContactBadge чтобы добавить определенный номер телефона в контакты. Вам даже не нужно писать обработчик событий OnClick для QuickContactBadge.
this.quickContactBadgePhone = (QuickContactBadge) findViewById(R.id.quickContactBadge_phone);
this.quickContactBadgePhone.assignContactFromPhone("+1-555-521-5554", true);
Вы можете увидеть новый телефон добавленный в контакты:

2. Важные методы

Важные методы у QuickContactBadge:
  • assignContactFromPhone(String phoneNumber, boolean lazyLookup, Bundle extras)
  • assignContactFromPhone(String phoneNumber, boolean lazyLookup)
  • assignContactFromEmail(String emailAddress, boolean lazyLookup, Bundle extras)
  • assignContactFromEmail(String emailAddress, boolean lazyLookup)
  • assignContactUri(Uri contactUri)

3. Пример QuickContactBadge

В данном примере мы имеем 2 QuickContactBadge. Первый QuickContactBadge позволяет пользователю быстро добавить номер телефона в контакты, второй QuickContactBadge позволяет пользователю быстро добавить Email в контакты.
Кнопка "Pick Contact" позволяет пользователю выбрать существующий контакт.
OK, на Android Studio создайте новый project:
  • File > New > New Project > Empty Activity
    • Name: QuickContactBadgeExample
    • Package name: com.example.quickcontactbadgeexample
    • Language: Java
Интерфейс примера:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="16dp"
        android:background="#E2F1D8"
        android:text="Phone Number"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView_phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:inputType="textEmailAddress"
        android:text="+1-555-521-5554"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView1" />

    <QuickContactBadge
        android:id="@+id/quickContactBadge_phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:scaleType="centerCrop"
        android:src="@drawable/icon_contact_add"
        app:layout_constraintStart_toEndOf="@+id/textView_phone"
        app:layout_constraintTop_toBottomOf="@+id/textView1"></QuickContactBadge>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:background="#E2F1D8"
        android:text="Email Contact"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView_phone" />

    <TextView
        android:id="@+id/textView_email"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:inputType="textEmailAddress"
        android:text="test@gmail.com"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView2" />

    <QuickContactBadge
        android:id="@+id/quickContactBadge_email"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:scaleType="centerCrop"
        android:src="@drawable/icon_contact_add"
        app:layout_constraintStart_toEndOf="@+id/textView_email"
        app:layout_constraintTop_toBottomOf="@+id/textView2"></QuickContactBadge>

    <Button
        android:id="@+id/button_pickContact"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="Pick Contact"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView_email"></Button>

    <FrameLayout
        android:id="@+id/frameLayout_holder"
        android:layout_width="0dp"
        android:layout_height="80dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="16dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button_pickContact"></FrameLayout>

</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.example.quickcontactbadgeexample;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.QuickContactBadge;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    public static final int CONTACT_PICKER_RESULT = 100;

    private TextView textViewEmail;
    private TextView textViewPhone;

    private Button buttonPickContact;
    private FrameLayout frameLayoutHolder;

    private QuickContactBadge quickContactBadgeEmail;
    private QuickContactBadge quickContactBadgePhone;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.textViewEmail = (TextView) this.findViewById(R.id.textView_email);
        this.textViewPhone = (TextView) this.findViewById(R.id.textView_phone);

        this.buttonPickContact = (Button) this.findViewById(R.id.button_pickContact);
        this.frameLayoutHolder = (FrameLayout) this.findViewById(R.id.frameLayout_holder);

        this.quickContactBadgeEmail = (QuickContactBadge) findViewById(R.id.quickContactBadge_email);
        this.quickContactBadgePhone = (QuickContactBadge) findViewById(R.id.quickContactBadge_phone);

        int textViewHeight = this.textViewEmail.getLayoutParams().height;
        quickContactBadgeEmail.setMaxHeight(textViewHeight);

        String email = this.textViewEmail.getText().toString(); // test@gmail.com
        String phoneNumber = this.textViewPhone.getText().toString(); // +1-555-521-5554

        // Set Parameters for quickContactBadgeEmail:
        this.quickContactBadgeEmail.assignContactFromEmail(email, true);
        this.quickContactBadgeEmail.setMode(ContactsContract.QuickContact.MODE_SMALL);

        // Set Parameters for quickContactBadgePhone:
        this.quickContactBadgePhone.assignContactFromPhone(phoneNumber, true);

        this.buttonPickContact.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                pickContactHandler( );
            }
        });

    }

    public void pickContactHandler( ) {
        Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
                ContactsContract.Contacts.CONTENT_URI);
        startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
                case CONTACT_PICKER_RESULT:
                    Uri contactUri = data.getData();

                    QuickContactBadge badgeLarge = new QuickContactBadge(this);
                    badgeLarge.assignContactUri(contactUri);
                    badgeLarge.setMode(ContactsContract.QuickContact.MODE_LARGE);
                    badgeLarge.setImageResource(R.drawable.icon_contact1);

                    this.frameLayoutHolder.addView(badgeLarge);
                    break;
            }
        }
    }
}

Pуководства Android

Show More