Попробуйте это:
В сборке: gradle:
implementation 'com.google.zxing:core:3.2.1'
implementation 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
А затем напишите свой собственный код, как показано ниже.
public class DemoActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout l = new LinearLayout(this);
l.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
l.setOrientation(LinearLayout.VERTICAL);
setContentView(l);
// barcode data
String barcode_data = "123456viralpatel";
// barcode image
Bitmap bitmap = null;
ImageView iv = new ImageView(this);
try {
bitmap = encodeAsBitmap(barcode_data, BarcodeFormat.CODE_128, 600, 300);
iv.setImageBitmap(bitmap);
} catch (WriterException e) {
e.printStackTrace();
}
l.addView(iv);
//barcode text
TextView tv = new TextView(this);
tv.setGravity(Gravity.CENTER_HORIZONTAL);
tv.setText(barcode_data);
l.addView(tv);
}
private static final int WHITE = 0xFFFFFFFF;
private static final int BLACK = 0xFF000000;
Bitmap encodeAsBitmap(String contents, BarcodeFormat format, int img_width, int img_height) throws WriterException {
String contentsToEncode = contents;
if (contentsToEncode == null) {
return null;
}
Map<EncodeHintType, Object> hints = null;
String encoding = guessAppropriateEncoding(contentsToEncode);
if (encoding != null) {
hints = new EnumMap<>(EncodeHintType.class);
hints.put(EncodeHintType.CHARACTER_SET, encoding);
}
MultiFormatWriter writer = new MultiFormatWriter();
BitMatrix result;
try {
result = writer.encode(contentsToEncode, format, img_width, img_height, hints);
} catch (IllegalArgumentException iae) {
// Unsupported format
return null;
}
int width = result.getWidth();
int height = result.getHeight();
int[] pixels = new int[width * height];
for (int y = 0; y < height; y++) {
int offset = y * width;
for (int x = 0; x < width; x++) {
pixels[offset + x] = result.get(x, y) ? BLACK : WHITE;
}
}
Bitmap bitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
return bitmap;
}
private static String guessAppropriateEncoding(CharSequence contents) {
// Very crude at the moment
for (int i = 0; i < contents.length(); i++) {
if (contents.charAt(i) > 0xFF) {
return "UTF-8";
}
}
return null;
}
}
Существует два других метода сортировки (помимо тех, которых Вы упомянули), я видел который работа вполне прилично.
Нажимают метод To Move
The, используемый для упорядочивания объектов в Галерея веб-работы фотоальбома вполне прилично для упорядочивания фотографий, и это должно работать точно также на любой набор, который может быть представлен как отсортированная группа активируемых по щелчку элементов:
Это немного легче использовать, чем drag-n-drop, поскольку требуется меньше функциональных возможностей, и Вы не должны удерживать кнопку мыши, в то время как Вы выясняете, где Вы хотите "отбросить" объект.
метод мог легко быть расширен для разрешения выбора нескольких объектов (через щелчок при нажатой клавише Shift или подобный), который мог затем быть помещен в новое положение таким же образом.
Обеспечивают Номера заказа
Используемый Netflix и некоторыми внутренними приложениями, с которыми я работал. Это работает лучше всего, если у Ваших пользователей есть конкретная идея точно, что числовой порядок должен быть (используется при работе со списками шагов инструкции в нашем внутреннем приложении).
Редактирование: Несколько дополнительных мыслей о [1 125] Перетаскивание . Вы, возможно, использовали их прежде или нет, но существует несколько вещей, которые могут сделать перетаскивание более прощающим и легче использовать:
Вы могли показать наложение при парении над элементом. Это наложение показывает Вам 4 стрелки (n/e/s/w), и можно нажать и переместить элемент соответственно.
, Если Вы пробуете к одерским объектам через сетку как фото функции группировки Facebook и picasaweb, затем это о единственном способе обработать это
, если бы у Вас было 3 столбца, то каждый со списком объектов, нажимая на любой из объектов переместил бы объект любой налево или направо, средний столбец мог показать вариант для левого или правого. Вы могли все еще допускать перетаскивание или сортировку использования типичной функциональности для этого.
Можно показать кнопкам 'Up' и 'Delete' просто способ, которым Google делает для SearchWiki. У большинства людей есть по крайней мере некоторый опыт с ним теперь. Большинство людей беспокоится только 'Повышением' их выбора. Если они не любят вещь и хотят к downvote, то это, удаляя из списка со справкой вышеупомянутой кнопки 'Delete' будет легче для них
Я думал "О перемещении, выбранном к здесь":
, который здесь - пограничные случаи, когда объекты должны быть перемещены в любой конец списка. Один способ решить это, состоит в том, чтобы переместить все выбранные пункты перед целью и зарезервировать специальную кнопку/значок в конце для перемещения выбора туда.
Мне, выполняя перетаскивание элементов списка на месте (т.е. в рамках самого списка) лучший подход.
Не только можно дать пользователям непосредственную идею того, на что их список будет похож (список реорганизовывает перед их глазами), но для них также очень легко понять движущийся механизм. И это - самый краткий способ иметь Ваших пользователей, заказывающих список в самом коротком количестве перемещений.
Между прочим, предвидя, что список мог быть длиннее, чем немного элементов, вместе с методом DnD, который Вы могли обеспечить асинхронному способу заказать список: дайте пользователю способность приписать число упорядочивания каждой записи и затем нажать на кнопку "Order". Обрабатывая умным и корректным способом вход пользователя, это могло привести к скорости для более длительного редактирования списков.
Я на самом деле думаю iPhone / iTouch делает это действительно хорошо при перемещении значков приложения.
, Если Вы не видели, что он смотрит здесь: http://www.youtube.com/watch?v=qnXoGnUU6uI
'дрожащие' значки являются очень хорошим визуальным индикатором, что что-то подвижно/перемещаемо.
, Таким образом, я предложил бы этот подход с перетаскиванием отбрасывание. При нажатии и удерживании объект мог поместить его в 'подвижный режим', и это будет обозначено им сотрясение (или некоторые легче кодировать визуальный индикатор). Затем перетаскивание работало бы нормальным способом.
Реализация этого в JavaScript является, конечно, проблемой...
Также другая вещь думать о - большинство людей делает ошибку объединения удобства использования с обучаемостью. Думайте, кто пользователи этого приложения (будут они использовать его регулярно и преподаваться, как использовать его или являются ими пользователи государственной сети, которые могут нечасто использовать его и не преподаваться, как использовать его) - оно могло бы дать Вам другой ответ на то, каково решение должно быть.
Вы могли также использовать клавиши со стрелками для перемещения вверх и вниз.
Сортировка, путем нажатия на заголовки очень популярна. Возможно, только рассмотренный как переупорядочение представление из фактического списка, все же.
1) изменение [1 110] Щелчок для Перемещения включил бы наличие отдельного целевого списка, где пользователь выбирает слот, в который их объект переместит, затем нажимает на исходный объект для перемещения его.
, Например, в следующей схеме, пользователь уже поместил 'E' во главе переупорядоченного списка и выбрал слот три для их следующего выбора. Их следующий шаг должен был бы выбрать, какой объект из старого списка входит в слот три в новом списке. (Строка звездочек является слабой попыткой показать, что слот три выделен или выбран.)
old new
----- -----
| A | | E |
| D | | |
| C | |*****|
| | | |
| B | | |
----- -----
Нажатие на объект в новый список выбирает его и выделяет его исходный слот в старый список, который является теперь целью. При нажатии на объект второй раз возвращает его тому исходному слоту.
новый список должен также отобразить какие-то индикаторы, чтобы показать, что он имеет выбираемые регионы, возможно, незаметные (низкая непрозрачность) нумерованные кнопки в ее слотах или некоторой другой информативной подразумеваемой возможности.
2) Другой подход должен был бы позволить пользователям проводить линии между исходными и желаемыми положениями.
Независимо от того, что метод выбран, процесс не должен быть болтливым: нет никакой причины, это не могло все быть сделанной стороной клиента (с опцией сохранить и передать изменения в сервере).
Иначе должен обеспечить маленький ввод текста рядом с каждым объектом, таким образом, пользователь может ввести числовое упорядочивание себя; затем они нажимают кнопку для переупорядочения всего этого сразу. (Я только видел используемый на сайтах, которые хранят порядок пунктов, такой как очередь Netflix или ссылки Живого Журнала.)
Можно экспериментировать с перетаскиванием с помощью примеров jQuery UI Sortables. Для создания этого очевидным для нетехнических или новых пользователей, Вы могли использовать визуальные индикаторы, такие как дескрипторы или стрелки и возможно подсказка на парении, чтобы предложить перетащить элемент.
Вы могли даже предоставить анимированному gif демонстрацию жеста.
, Как только пользователь изучает, как сделать это, я думаю, что это - самый легкий метод упорядочивания списка.
Некоторые мысли - Очень на идеях, а не реализации заканчиваются хотя...
1 - Обеспечивают обе стрелки вверх и вниз и перетаскивание, и монитор, который более популярен, какой тип пользовательского использования, которое и т.д., затем адаптируют оттуда, после того как у Вас есть некоторые данные
2 - Добавляет "случайную" кнопку, которая генерирует порядок случайным образом - мог быть бесполезным, могла быть забава в зависимости от Вашего приложения
3 - Добавляет "поле" порядка дисплея около каждого объекта и позволяет пользователю управлять им (но удостоверяться, что у Вас есть некоторый код к остальной части автоматического обновления чисел, когда каждый изменяется) лично я думаю, что это могло очень сбивать с толку, но для некоторых пользователей он мог бы работать
4 - Вместо перетаскивания на месте, сделать, чтобы пользователи перетащили к новому списку
5 - Для очень простой версии, имели "любимый" флажок и затем имели список, просто показывают, что у фаворитов сначала, (в алфавитном порядке или что-то)
6 - Есть группы - Вы присваиваете номер группы объекту, все группы кажутся первыми, сопровождаемыми группой 2 и т.д.
Hope, это случайное быстрое движение было полезно, если я думаю о чем-нибудь больше, что я возвращусь...
Мы нашли, что перетаскивание может быть счетчиком, интуитивным для нетехнических людей. Мы исследовали Стрелку вниз, которая работает, но может также быть громоздкой, поскольку необходимо продолжать нажимать вверх и вниз, и она приводит к большому трафику.
Другая парадигма, которую мы исследовали, является кнопкой Move, таким образом, каждый объект в списке имеет кнопку Move Item при нажатии на него, новые кнопки добавляются прежде и после каждого объекта в списке, чтобы позволить Вам переместить объект в любое местоположение.
Это работает хорошо, когда каждый объект в списке занимает много места, если каждый элемент списка является только одной строкой, это может привести к нарушенному интерфейсу. В нашем случае каждый объект был полдюжиной строк текста или больше. Мы также имеем, добавляет объект здесь кнопку прежде / после каждого объекта для разрешения вставки.
Обезьяна Обзора использует эту парадигму также и вдохновила часть из того, что мы делаем.
Реализовать скопировать/вставить функция стиля? Это означало бы, что можно вынуть объект из списка, и затем выбрать другой объект и нажать "вставку" или CTRL+V. Это довольно интуитивно и позволило бы большим спискам управляться легко.
Вы могли реализовать мультивыбор легко для перемещения большого блока смежных объектов.
Сетевой трафик был бы низким (только один или два запроса).
необходимо удостовериться, что "вставка" последовательна. Т.е. вставка всегда вставляет выше выбранного пункта.
Смотрят на Checkvist для большего вдохновения.