Nano Hash - криптовалюты, майнинг, программирование

как создать градиент, как Iphone Edittext box в android

Вот пример элемента управления iPhone EditText:

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

Как я могу создать такой же элемент управления в Android?


  • Не уверен, почему вы хотите воспроизвести iPhone UX на Android. это будет выглядеть совершенно неуместно. 25.07.2012
  • Вероятно, проще всего было бы просто попросить человека, который делает графику, включить градиент в используемый вами .PNG. 25.07.2012

Ответы:


1

Три вида фона EditText

По сути, я вижу три способа сделать то, что вы хотите.

1-й подход:

Во-первых, как говорит Акки, сделайте 9-патч, который точно дублирует поле с градиентной заливкой, которое вы хотите использовать (не указанная другая платформа). Это позволяет вашему приложению выглядеть максимально одинаково на обеих платформах.

Вот 9-патч, сделанный из вашего снимка экрана выше. (Это res/drawable-*dpi/rounded_text_field.9.png)

Фон с девятью патчами

2-й подход:

Во-вторых, получить тот же эффект, используя масштабируемые собственные возможности рисования. Это не будет выглядеть точно так же, но, возможно, даст более плавные результаты.

Вот некоторый код для создания изображения с закругленными углами и градиентной заливкой. (Это res/drawable/gradientbg.xml)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"
>
<corners android:radius="8dp"/>
<stroke android:width="2dp"
    android:color="#444"/>
<gradient 
   android:startColor="#888"
   android:centerColor="#fff"
   android:endColor="#fff"
   android:type="linear"
   android:angle="270"
   />
</shape>

На самом деле, я солгал. На моем исходном снимке экрана углы слишком большие, поэтому я уменьшил радиус угла с 16dp до 8dp. Вот как это выглядит сейчас. Намного улучшилось, тебе не кажется? И это намного проще, чем настраивать растровое изображение в 4 различных плотностях.

Градиентный фон с углами радиусом 8dp.

3-й подход:

Третий подход — позволить платформе быть такой, какой она есть, и выглядеть наилучшим образом в рамках своей парадигмы. Преимущество этого заключается в том, что в разных версиях ОС ваше приложение будет органично сочетаться с остальной частью системы, даже если системная тема изменится.

Вот EditText по умолчанию, выполняющий точно такой же код в Gingerbread. Это выглядело бы довольно неуместно на устройстве с тематикой Holo (например, на планшете с процессором Jellybean, который я использовал для создания первого снимка экрана), и наоборот.

Редактировать текст на имбирном прянике

Для справки, вот макет, который содержит все три EditText.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="32dp"
android:orientation="vertical"
 >
<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="24dp"
    android:layout_marginTop="24dp"
    android:padding="12dp"
    android:gravity="center"
    android:background="@drawable/rounded_text_field"
    android:inputType="text"
    android:textColor="@android:color/black"
    android:text="9-patch background." >
    <requestFocus />
</EditText>
<EditText
    android:id="@+id/editText2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="24dp"
    android:layout_marginTop="24dp"
    android:padding="12dp"
    android:gravity="center"
    android:background="@drawable/gradientbg"
    android:inputType="text"
    android:textColor="@android:color/black"
    android:text="Gradient background." />
<EditText
    android:id="@+id/editText2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="24dp"
    android:layout_marginTop="24dp"
    android:padding="12dp"
    android:gravity="center"
    android:inputType="text"
    android:text="Default background." />
</LinearLayout>
25.07.2012
  • Спарки прав, хотя вы можете воспроизвести внешний вид элемента управления iOS, настоятельно рекомендуется использовать элементы управления, соответствующие внешнему виду платформы Android. Это обеспечивает более единообразный опыт для ваших пользователей в других приложениях на платформе Android. 25.07.2012
  • Рекомендации по созданию пользовательского интерфейса Android см. на страницах Android Design. developer.android.com/design 25.07.2012

  • 2

    Все, что вам нужно сделать, это создать небольшое изображение из девяти патчей и установить его в качестве фона вашего EditText. вот пример изображения

    изображение

    И вот как работают девять изображений патчей

    25.07.2012

    3

    я не уверен, что вы можете это сделать, но вы можете искать фоны для iPhone. Ищите «трафареты для iPhone» PS: у меня тоже есть сумасшедший клиент, который хочет дизайн, похожий на iPhone, в своих приложениях для Android, я думаю, что делать это совершенно абсурдно.

    25.07.2012
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..