Intereting Posts
UnsatisfiedLinkError: dlopen failed: не удается найти символ «strtof», на который ссылается «libsupportjni.so» на API <20 Как программно обновить apk и перезапустить приложение? Экран остановки событий браузера Android обновляется вкл. Холст / элементы – Как работать? Java.lang.ClassCastException: android.widget.TextView нельзя отменить Внедрение масштабирования и перетаскивания с использованием сборки Android в прослушивании жестов и прослушивании шкалы Что на самом деле выполняет репо init и repo sync? Android: Как определить ориентацию изображения (портрет или пейзаж), выбранный из галереи при настройке изображения? Glide не может загружать файл из внутреннего хранилища Как поместить RecyclerView под панелью инструментов и над TabLayout и ViewPager также обрабатывать ответы на свитки по-своему? NullPointerException (@PhoneWindow: onKeyUpPanel: 1002) {main} Предупреждение SSL от google play Path-App, как круглое меню в Android Android Two Fragments в той же деятельности Внедрение Visual Studio 2015 Xamarin без ошибок Android Studio – все имена файлов в проекте красные, но ошибок нет

Пользовательская форма во время чата в android с помощью xml-файла

Я могу нарисовать пользовательскую базу обратно в xml-файл, используя Shape

Но как добавить дугу или кривизну в указанное место.

Введите описание изображения здесь

Solutions Collecting From Web of "Пользовательская форма во время чата в android с помощью xml-файла"

В моей библиотеке Facebook Like Button я реализовал пользовательский Путь , чтобы достичь этой цели.

Существует возможность указать местоположение маркера везде, где вы хотите:

Введите описание изображения здесьВведите описание изображения здесь

Код из источника :

import android.graphics.Path; import android.graphics.RectF; public class CalloutPath extends Path { public static final int MARKER_NONE = 0x0; public static final int MARKER_LEFT = 0x1; public static final int MARKER_TOP = 0x2; public static final int MARKER_RIGHT = 0x4; public static final int MARKER_BOTTOM = 0x8; public static final int MARKER_ALL = 0xf; private final RectF oval = new RectF(); /** * @param m marker * @param w width * @param h height * @param s stroke thickness * @param r corners radius */ public void build(int m, float w, float h, float s, float r) { int fl = factor(m, MARKER_LEFT); int ft = factor(m, MARKER_TOP); int fr = factor(m, MARKER_RIGHT); int fb = factor(m, MARKER_BOTTOM); float x0 = s + 0f; float x1 = s + r * fl; float x2 = s + r + r * fl; float x3 = w / 2f - r; float x4 = w / 2f; float x5 = w / 2f + r; float x6 = w - 1f - s - r - r * fr; float x7 = w - 1f - s - r * fr; float x8 = w - 1f - s; float y0 = s + 0f; float y1 = s + r * ft; float y2 = s + r + r * ft; float y3 = h / 2f - r; float y4 = h / 2f; float y5 = h / 2f + r; float y6 = h - 1f - s - r - r * fb; float y7 = h - 1f - s - r * fb; float y8 = h - 1f - s; reset(); moveTo(x1, y2); oval.set(x2 - r, y2 - r, x2 + r, y2 + r); arcTo(oval, 180f, 90f); if (ft != 0) { lineTo(x3, y1); lineTo(x4, y0); lineTo(x5, y1); } lineTo(x6, y1); oval.set(x6 - r, y2 - r, x6 + r, y2 + r); arcTo(oval, 270f, 90f); if (fr != 0) { lineTo(x7, y3); lineTo(x8, y4); lineTo(x7, y5); } lineTo(x7, y6); oval.set(x6 - r, y6 - r, x6 + r, y6 + r); arcTo(oval, 0f, 90f); if (fb != 0) { lineTo(x5, y7); lineTo(x4, y8); lineTo(x3, y7); } lineTo(x2, y7); oval.set(x2 - r, y6 - r, x2 + r, y6 + r); arcTo(oval, 90f, 90f); if (fl != 0) { lineTo(x1, y5); lineTo(x0, y4); lineTo(x1, y3); } close(); } public static int factor(int marker, int mask) { return (marker & mask) != 0 ? 1 : 0; } } 

Поскольку у вас есть эта дуга или curv, вы должны создать собственный jpg .

Но вы можете использовать с corners и иметь ниже:

Контрольная работа

Вам не нужно делать это программно, вы должны просто использовать nine patch ресурсов изображения nine patch которые сделают идеальное изображение для вас. Если вы хотите узнать больше о nine patch и как это работает, посмотрите на это и на эти ссылки.
Как вы можете видеть, это изображение создает идеальный чат для вас. Я уже декомпилировал Whatsapp , Viber и все они использовали nine patched изображений, чтобы сделать чат-пузырь. Как вы можете видеть, приложение Telegram также использует девять исправленных изображений для достижения этого.

Мое изображение чата:
Введите описание изображения здесь

Я также должен упомянуть, что вам не нужен какой-либо пользовательский путь. Это типичное исправленное изображение без какой-либо настройки.

Введите описание изображения здесь

Сделайте 9patch-изображение таким образом, чтобы, если в разговоре много текста, то и его можно отрегулировать сам, а также не растягивать или сжимать с кривой.

Надеюсь, это поможет вам