Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Lost_Angel
1 / 1 / 0
Регистрация: 06.12.2011
Сообщений: 27
#1

Реализация ввода цифрового пароля через GridView - Программирование Android

23.10.2016, 14:38. Просмотров 273. Ответов 6

Господа, такой вопрос. Пытаюсь реализовать ввод пин-кода через GridView, состоящего из ImageView. Подобное реализовано в приложениях аля "сбербанкОнлайн" для быстрого доступа к приложению.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        getSupportActionBar().hide();
 
        int []pin_data = {R.drawable.pin_one,R.drawable.pin_two,R.drawable.pin_three,R.drawable.pin_four,R.drawable.pin_five,R.drawable.pin_six,R.drawable.pin_seven,R.drawable.pin_eight,R.drawable.pin_nine,R.drawable.pin_empty,R.drawable.pin_zero,R.drawable.pin_clear};
 
        ArrayList<Map<String, Object>> pin = new ArrayList<Map<String, Object>>(
                pin_data.length);
        Map<String, Object> m;
 
        for (int i = 0; i < pin_data.length; i++)
        {
            m = new HashMap<String,Object>();
            m.put(ATTRIBUTE_NAME_IMAGE,pin_data[i]);
            pin.add(m);
 
        }
 
        String [] from = {ATTRIBUTE_NAME_IMAGE};
        int []to = {R.id.imgBtn};
        mAdapter adapter = new mAdapter(this,pin,R.layout.pin,from,to);
        imgBtn = (ImageView)findViewById(R.id.imgBtn);
        gvPin = (GridView)findViewById(R.id.gvPin);
        gvPin.setAdapter(adapter);
        adjustGridView();
 
 
 
    }
        private void adjustGridView()
        {
            gvPin.setNumColumns(3);
        }
Как реализовать событие нажатия и удержания какого-то ImageView, при этом что бы у него менялась картинка (подсвечивалась другим цветом при нажатии). С удовольствием выслушаю варианты как это еще можно реализовать. Например через TableLayout. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2016, 14:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализация ввода цифрового пароля через GridView (Программирование Android):

Реализация custom GridView - Программирование Android
Как реализовать такой GridView? Вопрос в том чтоб сделать отдельными блоками как на картинке.

DropBox Api. Авторазация без ввода логина и пароля - Программирование Android
Задача такая: программа должна сохранять рейтинг пользователя на сервере dropbox. Должен создаваться файл с именем по id(например на...

Скрыть элемент View после ввода логина и пароля на другом активити - Программирование Android
Доброго времени суток. Подскажите как скрыть элемент View на другой активити после перехода на нее через логин и пароль. пробую...

Повтор ввода логина и пароля через switch - C++
Если 4 раза ошибиться вводом логина или пароля, то пишет &quot;Доступ заблокирован&quot; и далее снова начинается цикл For. #include &lt;iostream&gt; ...

Разделенный вход через форму ввода пароля и логина - MS Access
Здравствуйте! Имеется БД с таблицами, формами, отчетами, макросами и модулем VBA. Мне нужно сделать разделенный вход через форму ввода...

Как сделать поле ввода пароля не через новую форму? - C#
Есть форма, в которой нужно добавить разделение на пользователя и администратора. Чтобы при клике на пункт меню &quot;редактировать&quot; выскакивало...

6
Pablito
2477 / 1961 / 611
Регистрация: 12.05.2014
Сообщений: 6,866
Завершенные тесты: 1
23.10.2016, 15:07 #2
если делать для API >= 21 то там вообще все в пару строк решается, а если надо поддержка более старых версий то придется в коде педалировать

для первого варианта все просто - все делается на ImageButton на которых ставится селектор цвета (все задается в xml)
не получится делать на обычных ImageView, у них нет атрибутов pressed и т.д.
0
Lost_Angel
1 / 1 / 0
Регистрация: 06.12.2011
Сообщений: 27
23.10.2016, 15:15  [ТС] #3
Планирую работать с API>=16. А можно будет менять только цвет? Я планировал менять картинку: первый вариант без нажатия, второй вариант при нажатии и удерживании:
0
Изображения
  
Pablito
2477 / 1961 / 611
Регистрация: 12.05.2014
Сообщений: 6,866
Завершенные тесты: 1
23.10.2016, 15:27 #4
тогда наверное проще всего так
XML
1
2
3
4
        <ImageButton
            android:src="@drawable/selector"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
и сам файл selector.xml
XML
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_bike" android:state_pressed="true" />
    <item android:drawable="@drawable/ic_car" android:state_pressed="false" />
</selector>
0
Lost_Angel
1 / 1 / 0
Регистрация: 06.12.2011
Сообщений: 27
23.10.2016, 20:39  [ТС] #5
Добавлено через 5 часов 1 минуту
Ну вот начал заниматься и сразу возник вопрос: а как в селекторе указать конкретно для каждого ImageButton свой рисунок? Я же грид заполнил картинками автоматом через адаптер:
Код
int []pin_data = {R.drawable.pin_one,R.drawable.pin_two,R.drawable.pin_three,R.drawable.pin_four,R.drawable.pin_five,R.drawable.pin_six,R.drawable.pin_seven,R.drawable.pin_eight,R.drawable.pin_nine,R.drawable.pin_empty,R.drawable.pin_zero,R.drawable.pin_clear};
Если бы у меня внутри текст был - то все понятно. Или лучше сделать через tableLayout и описать каждый ImageButton отдельно. Но это геморно....
0
Pablito
2477 / 1961 / 611
Регистрация: 12.05.2014
Сообщений: 6,866
Завершенные тесты: 1
24.10.2016, 09:25 #6
чисто мое мнение - все, что можно сделать в xml - надо делать в xml
мне лично одинаково легко создавать в коде целые экраны с десятком разных лаяутов и кучей вьюшек
или наоборот все делать в xml

и я всегда делаю это в xml, кроме случаев когда элементов реально много или их количество неизвестно заранее

Цитата Сообщение от Lost_Angel Посмотреть сообщение
Но это геморно....
это только на первый, поверхностный взгляд
- часть в кода разметки уйдет в стили
- результат видно сразу на превью
- минимум кода, который через месяц надо будет читать и вспоминать что же там такое происходит
- элементарно менять внешний вид или размеры
задавать размеры или отступы в коде = куча дополнительных строк (как минимум надо вытащить все числа в dp из ресурсов) которые читабельности коду вообще не добавят
0
Lost_Angel
1 / 1 / 0
Регистрация: 06.12.2011
Сообщений: 27
25.10.2016, 20:18  [ТС] #7
кроме случаев когда элементов реально много или их количество неизвестно заранее
Да, прикинул и решил, что лучше реализую через TableLayout - как оказалось это менее геморно, чем через грид (хотя через грид как сделать тоже разобрался). Спасибо за подсказки!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2016, 20:18
Привет! Вот еще темы с ответами:

Редирект пользователя через форму ввода логина и пароля при вводе нужных данных на определенную страницу - PHP БД
Ребят, ну никак не могу разобраться в запросах к БД. Давайте я буду писать как мыслю и что делаю. А вы поругайте и поправьте :) В БД...

Реализация цифрового секундомера - OpenGL
Поможіть зробити завдання на OpenGL Розробити програму імітації на екрані роботи цифрового секундоміра із хвилинами, секундами та...

Реализация дерева цифрового поиска - PascalABC.NET
Собственное, цифровое дерево - это такое дерево, где каждая буква слова располагается на своём уровне. С помощью него можно осуществлять...

Реализация/имитация работы аналого-цифрового преобразователя - Алгоритмы
день добрый,интересует реализация/имитация работы аналого-цифрового преобразователя. Материала в поисковике нужного не нашел.может кто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
25.10.2016, 20:18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru