2016-02-15 6 views
0

Я импортировал библиотеку андроида zxing для использования через gradle, однако я хочу изменить способ рисования. По моему мнению, это можно изменить только путем изменения функции рисования в одном из классов библиотеки. Проблема в том, что я не могу изменять классы в библиотеке из-за их импорта с помощью градиента.Android изменить импортированную библиотеку через gradle

Есть ли способ редактировать этот файл или даже поставлять другой файл, чтобы переопределить его? Спасибо за ваше время.

Редактировать: Вот ссылка на zhing github и класс, который я пытаюсь изменить в функциях. Я хочу иметь возможность изменить то, что делает функция onDraw.

https://github.com/zxing/zxing/blob/master/android/src/com/google/zxing/client/android/ViewfinderView.java

+0

Добро пожаловать на переполнение стека! Не могли бы вы рассказать нам о ваших усилиях, показывая необходимую часть кода? – manetsus

+0

Я обновил сообщение. Спасибо – Silcoish

ответ

0

, если вы обратитесь к Zxing Android library для работы с штрихкодами, это Open Source! Это означает, что вы можете загрузить исходный код этой библиотеки, импортировать ее в свой проект и внести необходимые изменения.

Подробнее о том, как импортировать библиотеки в проекты Android, читайте this SO question.

Кроме того, если вы чувствуете, что другие пользователи ZXing выиграют от этого изменения, вы всегда можете внести вклад в библиотеку по адресу GitHub.

+0

Я использую Gradle dependencies 'compile 'name'' для добавления библиотеки, потому что это быстро и просто. Но часто мне нужно отредактировать пару строк внешней библиотеки для целей отладки/тестирования. Кажется, у Gradle уже есть кешированные исходные файлы (я уверен, что файл, который я вижу в Android Studio, не является декомпилированной версией, потому что он содержит комментарии внутри методов). Разве нет более простого способа сделать это, помимо загрузки исходных файлов, и вручную добавить их в мой проект и удалить зависимость? –

1

Мне не удалось найти способ переопределить файл, но я нашел обходное решение. Я закончил расширение файла zXingScannerView и сделал переопределение для функции setAutoFocus (логическое состояние). Я выбрал этот, потому что он всегда вызывался после того, как был установлен оверлей, и позволил мне легко удалить его сразу.

Внутри этого Funtion я сделал:

int chidrenCount = getChildCount(); 
for(int i = 0; i < childrenCount; i++) { 
    if(getChildAt(i) instanceof ViewFinderView) { 
     getChildAt(i).setVisibility(View.INVISIBLE); 
    } 
} 

Спасибо за помощь @FlyingPumba

Смежные вопросы