Le Tutoriel de Android CharacterPickerDialog - 1633658504156

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 8

Le Tutoriel de Android CharacterPickerDialog

View more Tutorials:

Tutoriels de programmation Android

1. Android CharacterPickerDialog
2. Example de CharacterPickerDialog

Suivez-nous sur notre fanpage pour recevoir des notifications chaque fois qu'il y a de nouveaux
articles. Facebook

1- Android CharacterPickerDialog

Android CharacterPickerDialog est une boîte de dialogue qui permet à l'utilisateur de


sélectionner des "caractères accentués" (accented characters) d'un caractère de base.
Parfois, CharacterPickerDialog est utile car tous les téléphones des utilisateurs n'ont
pas une disposition de clavier (Keyboard Layout) adaptée à une langue particulière.
Par exemple, le vietnamien a une liste de caractères accentués (accented characters),
ce qui peut vous paraître étrange:

aáàãảạăắằẵẳặâấầẫẩậ
AÁÀÃẢẠĂẮẰẴẲẶÂẤẦẪẨẬ


eéèẽẻẹêếềễểệ
EÉÈẼẺẸÊẾỀỄỂỆ
iíìĩỉị
IÍÌĨỈỊ
oóòõỏọôốồỗổộơớờỡởợ
OÓÒÕỎỌÔỐỒỖỔỘƠỚỜỠỞỢ
uúùũủụưứừữửự
UÚÙŨỦỤƯỨỪỮỬỰ
yýỳỹỷỵ
YÝỲỸỶỴ

Quelques caractères spéciaux en allemand:

äöüß
Quelques caractères spéciaux en français:

àâæçéèêëïîôœùûüÿ

2- Example de CharacterPickerDialog

Voici une application simple qui utilise CharacterPickerDialog pour aider les utilisateurs
à sélectionner des caractères spéciaux en vietnamien.

Sur Android Studio, créez un project:

File > New > New Project > Empty Activity


Name: CharacterPickerDialogExample
Package name: org.o7planning.characterpickerexample
Language: Java

L'interface de l'application:
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"
tools:context=".MainActivity">

<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:text="Enter your name:"
android:textSize="22sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<EditText
android:id="@+id/editText"
android:layout_width="0dp"
android:layout_height="51dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java

package org.o7planning.characterpickerdialogexample;

import android.os.Bundle;
import android.text.Editable;
import android.text.method.CharacterPickerDialog;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

private static final String LOG_TAG = "AndroidExample";

private EditText editText;

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

this.editText = this.findViewById(R.id.editText);
this.editText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
return handleOnKey( keyCode, event);
}
});
}

private boolean handleOnKey(int keyCode, KeyEvent event) {


if(event.getAction() == KeyEvent.ACTION_DOWN) {
return false;
}

char base = (char) event.getUnicodeChar();


Log.i(LOG_TAG, "keyCode: " + keyCode + ", Base character: " + base);

final String accentedString = AccentedStringUtils.getAccentedString(base);


if(accentedString == null) {
return false;
}
final Editable editable = this.editText.getText();

CharacterPickerDialog dialog= new CharacterPickerDialog(this, new View(this), editable, accentedString,fa


// User click on Cancel button.
@Override
public void onClick (View v) {
// Do something here
// ...
super.onClick(v);
}

// User click on Character button.


@Override
public void onItemClick(AdapterView parent, View view, int position, long id){
// Do something here
// ...
super.onItemClick(parent, view, position, id);
}
};
dialog.show();

return false;
}

AccentedStringUtils.java

package org.o7planning.characterpickerdialogexample;

public class AccentedStringUtils {

//
// Vietnamese special characters.
//
private static final String[] ACCENTED_STRINGS = {
"aáàãảạăắằẵẳặâấầẫẩậ",
"AÁÀÃẢẠĂẮẰẴẲẶÂẤẦẪẨẬ",
"dđ",
"DĐ",
"eéèẽẻẹêếềễểệ",
"EÉÈẼẺẸÊẾỀỄỂỆ",
"iíìĩỉị",
"IÍÌĨỈỊ",
"oóòõỏọôốồỗổộơớờỡởợ",
"OÓÒÕỎỌÔỐỒỖỔỘƠỚỜỠỞỢ",
"uúùũủụưứừữửự",
"UÚÙŨỦỤƯỨỪỮỬỰ",
"yýỳỹỷỵ",
"YÝỲỸỶỴ"
};

public static String getAccentedString(char base) {


for(int i = 0; i< ACCENTED_STRINGS.length; i++) {
String accentedString = ACCENTED_STRINGS[i];
if(accentedString.charAt(0) == base) {
return accentedString;
}
}
return null;
}
}

View more Tutorials:

Tutoriels de programmation Android

Peut-être que vous êtes intéressé

Voici des leçons en ligne à part du site web o7planning que nous recommandons. La liste
comprend des leçons en ligne et celles en promo.

devstory.net
Fanpages

Facebook

Websites

o7planning.org
devstory.net
codestory.de
betacode.net
openplanning.net

About Us

Le site Web a été créé en mars 2014 par un groupe de programmeurs et d'auteurs du
Vietnam. Actuellement, le projet prend en charge 5 langues, dont l'anglais, le français,
l'allemand, le russe et le vietnamien

Vous aimerez peut-être aussi