• Как сверстать подобный макет?

    @bot8
    Android noob
    d6055785cb734be9b704740eb77a003f.png
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:background="#D4D7DC"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="center_horizontal">
        <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="30dp">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="dark"
                android:layout_marginTop="20dp"
                android:layout_marginLeft="10dp"
                android:layout_marginBottom="20dp"
                android:text="Какой-то текст..."
                android:textSize="17dp"/>
        </android.support.v7.widget.CardView>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="250dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:weightSum="100">
            <ImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                android:layout_marginBottom="-6dp"
                android:layout_marginTop="-6dp"
                android:src="@drawable/Desert" />
        </LinearLayout>
        <android.support.v7.widget.CardView
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="dark"
                android:layout_marginTop="20dp"
                android:layout_marginLeft="10dp"
                android:layout_marginBottom="20dp"
                android:text="Какой-то Другой текст..."
                android:textSize="17dp"/>
        </android.support.v7.widget.CardView>
    </LinearLayout>
    Ответ написан
    3 комментария
  • Как получить исходный код из апк?

    Rou1997
    @Rou1997
    Байт-код DEX (Java) отлично дизассемблируется с помощью apktool (backsmali), полученный ассемблер smali на 100% соответствует байт-коду, поэтому можно внести изменения, собрать обратно и будет работать, большинство приложений написаны только на Java, также apktool извлекает ресурсы, манифест, XML и т.д.
    Для упрощения анализа или если нужен именно код на Java используются разные декомпиляторы, но они далеко не идеальны, поэтому если надо собрать, то придется кучу ошибок исправить и долго отлаживать, лучше несколько разных декомпиляторов применить, для полноты картины проблемных методов.
    Если приложение имеет библиотеки NDK (lib***.so), скомпилированный в машинный код, то используйте IDA Pro и toolchain из Android NDK, дизассемблирование и декомпиляция (Hex-Rays в IDA Pro) точно возможны, отладка без исходников тоже, вот сохранять изменения мне пока не приходилось, но и в этом помогут IDA Pro и утилиты из того же toolchain, во всяком случае они облегчат задачу даже если редактировать будете HEX-редактором, например они выдадут вам смещения (адреса) функций в файле, и вообще весь этот GNU toolchain (чья Windows-реализация известна также как MinGW_, помимо того что компилирует, еще и предоставляет нехилый функционал для дизассемблированния того, что компилирует :)
    Ответ написан
    4 комментария
  • Как получить исходный код из апк?

    @aol-nnov
    apk:
    1. smali -> java opcodes -> java decompiler == некоторый профит
    2. native -> assembler == тупик
    3. ресурсы


    но если вопрос уже на этапе "как это распаковать", то всё тлен и тупик.
    Ответ написан
    5 комментариев
  • Зачем нужен Dependency Injection в Android разработке?

    artemgapchenko
    @artemgapchenko
    Начать неплохо бы с понимания того, что такое DI. Обратимся к википедии:

    Внедрение зависимости (англ. Dependency injection, DI) — процесс предоставления внешней зависимости программному компоненту.

    Если выражаться не канцеляритом, а обычным русским языком, то DI - это когда вы своему компоненту (например, классу) предоставляете нужные для него зависимости извне, а не создаете их сами в конструкторе, или через инициализацию в месте объявления поля. То есть не так:

    public class Api {
    	....
    	private final HttpClient client = new OkClient();
    }

    А, например, так:

    public class Api {
    	....
    	private final HttpClient client;
    
    	public Api(@NonNull HttpClient client) {
    		this.client = client;
    	}
    }


    И что нам это даёт?

    Ну, очевидно, нам теперь проще менять зависимости. Нужна вам другая реализация абстрактного класса HttpClient - взяли, и передали её через конструктор, или через метод-setter. В случае с первым куском кода, вам пришлось бы ещё и класс Api переписывать, что в случаях, отличных от тривиальных, может привести к ошибкам. Получается, что ваш класс теперь закрыт от изменений (смотрим Open/Closed Principle).

    Окей, а на практике-то какие бенефиты?

    Во-первых, вы теперь можете написать инициализацию вашей программы через конфигурационные файлы. Скажем, на старте будет читаться простенький текстовый файл, который определяет, какой httpclient использовать, какие настройки доступа к бд применять и так далее, и, исходя из этого, будут определяться зависимости.
    Во-вторых, вам теперь существенно проще писать тесты. Написали вы, скажем, какой-нибудь парсер, который принимает InputStream, содержащий в себе данные json-объекта, как-то хитро его парсит, и выдаёт вам объект вашей бизнес-модели. В приложении этот парсер будет принимать на вход реализацию InputStream'а, которая берёт данные из сети, а в тестах - реализацию, которая просто читает файл с диска (потому что тесты должны выполняться часто и быстро, и ваша задача в тесте - протестировать ваш парсер, а не скорость сетевого соединения).

    Вот, в общем-то, и всё. А Dagger - это просто библиотека, которая автоматизирует ручное внедрение зависимостей, равно как и другие DI-библиотеки.

    P.S. В некоторых случаях чрезмерное увлечение DI может привести к нежелательным эффектам, вроде чрезмерного усложнения кода, поэтому внедряйте аккуратно. Понимание приходит с опытом.
    Ответ написан
    Комментировать
  • Стоит ли продолжать изучать Android develop?

    artemgapchenko
    @artemgapchenko
    Здравствуйте, как многие знают, Google готовит замену Android

    Откуда вы всё это берёте? Есть проект на Гитхабе с таким вот README:

    Pink + Purple == Fuchsia (a new Operating System)

    Всё. Ни про замену Android, ни про предназначение проекта ничего не сказано. К проекту подключено 3 (три) человека, развивается он без году неделя, никаких официальных анонсов не было.
    Прекращайте читать советские газеты перед обедом и вместо первоисточников и не занимайтесь домыслами того, чего нет. Изучайте Android и выбросите Фуксию из головы на ближайшие года два, пока не станет понятно, что это такое и кому это нужно.
    Ответ написан
    Комментировать
  • Как через приложение определить есть инет или нет?

    @sergiu3dmd
    public boolean isOnline() {
            ConnectivityManager cm =
                    (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo netInfo = cm.getActiveNetworkInfo();
            return netInfo != null && netInfo.isConnectedOrConnecting();
        }
    Ответ написан
    Комментировать
  • Gradle Android module vs Android module в чем отличия?

    gadfi
    @gadfi
    https://gamega.org
    Gradle — система автоматической сборки, построенная на принципах Apache Ant и Apache Maven, но предоставляющая DSL на языке Groovy вместо традиционной XML-образной формы представления конфигурации проекта.


    когда у вас в проекте под 20 зависимостей тогда поймете зачем gradle ))
    поставьте AndroidStudio - бегает быстрее, подобных проблем не замечал и сама на базе idea, тоетсь привычные плюшки там есть
    Ответ написан
    Комментировать
  • Как поддерживать две версии приложения (платная и бесплатная)?

    @Tiberal
    Одна ветка, но разные product flavors в билде. Изменяете какие то куски кода для разных флейворов. Так можно в одном проекте поддерживать и демо и платную версию
    developer.android.com/intl/ru/tools/building/confi...
    тут расписано все
    Ответ написан
    4 комментария
  • Как подгрузить данные в ListView из SQLite при прокрутке списка?

    LeEnot
    @LeEnot
    Енот-андроид
    Используйте CursorAdapter. Он такие операции (подгрузка данных из БД окном) выполняет "под капотом".
    Ответ написан
    Комментировать
  • Как вы используете git при разработке в одиночку?

    @carbon88
    .NET developer/ORM developer
    Конечно сложно себя дисциплинировать. Но когда вырабатывается привычка, то стараешься писать осмысленные комментарии к комитам. Особенно когда нужно что-то найти в десятке тысяч комитов, тытаешься делать так чтобы было понятно по описанию комита. Иначе придется постоянно копаться в самих изменениях комитов, чтобы найти то, что нужно. По сути, в пределах отдельной ветки которая названа более-менее нормально (а мы стараемся делать именно так, ветка на каждый task или issue и по завершению закрывать и сливать с основной) можно и писать менее осмысленные комментарии.

    Нужно себя пересиливать, выдавать себе люлей раз начальника нет хотябы полгодика, типа "какого х.. тут ты понаписал этот бред!? ни..я ведь не понятно что да как в этом комите!". Потом втянитесь и скилл наработаете. Мне было лениво писать хорошие комменты комитов, когда английский был не очень (все только на нем, даже в коде описания и комментарии только на нем), сложно было попросту. А сейчас подтянул, словарный запас поднатаскал, скилл наработал и проще сформировать мысли при комите.

    В общем будьте самокритичнее и требовательнее к себе. Или вы, извиняюсь, настолько тряпка что не можете дать себе "бодрящего пенделя" когда это надо?
    Ответ написан
    2 комментария
  • Как из ListView вызывать соответствующие элементу списка описание в AlertDialog?

    @kamiLLxiii
    Android-разработчик
    Примерно это будет выглядеть так:
    ListView (который заменит TextView) отображает данные из переданной ему коллекции или списка элементов. Следовательно, вам надо будет создать класс для элементов, наподобие:
    class CocktailItem{
    		String title;
    		String description;
    		Bitmap icon;
    }

    Создаете коллекцию коктейлей с использование этого класса, создаете Adapter с этой коллекцией, передаете его (адаптер) в ListView, делаете ему (ListView) setOnItemClickListener, и в этот OnItemClickListener при нажатии будет приходить номер элемента в списке коктейлей. Этот элемент можно там же и получить, примерно так:
    AdapterView.OnItemClickListener() {
    		@Override
    		public
    		void onItemClick(final AdapterView<?> parent, final View view, final int position, final long id) {
    			CocktailItem item = (CocktailItem) parent.getAdapter().getItem(position);
    			AlertDialog.Builder builder = new AlertDialog.Builder(ShotDrinks.this);
    
    			builder.setTitle(item.title)
    					.setMessage(item.description)
    					.setCancelable(true)
    					.setIcon(R.drawable.ic_launcher)
    					...
    		}
    	};


    В общем, если вы размебетесь, как работает ListView и Adapter, все вопросы отпадут сами собой.
    Ответ написан
    1 комментарий
  • Профи Java! Поможите составить программу самостоятельного изучения этого языка?

    @Gokudera
    java developer
    У меня есть к вам другое предложение:
    1. лезете в гугл, вбиваете "Программирование под Android курсы программа курса"
    2. Смотрите программу курса
    3. осваиваете все темы самостоятельно


    Введение
    ОС Android
    android.developers.com
    Основы
    Установка Android Sdk и настройка IDE
    Hello World!
    Структура проекта
    Основные компоненты
    Activity
    Service
    BroadcastReceiver
    ContentProvider
    AndroidManifest
    Ресурсы
    Drawable
    Values
    Анимации
    Классификаторы
    Разработка пользовательского интерфейса
    Activity и ее жизненный цикл
    Основные View: TextView, Button, ImageView, CheckBox, ProgressView и др.
    Основные ViewGroup: FrameLayout, LinearLayout, GridLayout, TableLayout
    Стили и темы (практика)
    Работа с меню Activity. ActionBar
    Диалоги и toast
    Списки в UI: ListView, GridView. Адаптеры
    Сохранение и восстановление состояния
    Вызав новой Activity
    Передача данных в Intent (практика)
    Хранение данных
    SharedPreference
    Файлы
    База данных
    Фоновая работа
    AsyncTask
    Loaders
    Service
    Жизненный цикл
    Запуск
    Взаимодействие из Activity
    Рабора с сетью
    BroadcastReceiver
    Создание BroadcastReceiver
    Подписка на системные события
    -------------------
    Введение
    Разработка интерфейса под различные размеры экранов
    Разработка под различные версии ОС
    Android Support Library
    Написание кода с учетом версии ОС
    Фрагменты
    Жизненный цикл
    Создание
    Операции с фрагментами
    DialogFragment
    Notifcation API
    Виджеты домашнего экрана
    Анимация
    ViewAnimation
    Property Animation
    Transition
    Определения местоположения
    ContentProvider
    ContentObserver
    Работа со стандартными ContentProvider: Контакты, СМС
    Google Play Services
    Лучшие практики для разработки кода
    Производительность
    Память
    Батарея
    -----------------------------------
    Уаля и вы умеете разрабатывать под андроид...
    Ответ написан
    Комментировать
  • Как сделать правильно?

    NeiroNx
    @NeiroNx
    Программист
    Этот файл находится в initramfs - образ файловой системы загрузчик распаковывает в оперативную память и там она и работает. Естественно после перезагрузки она вновь распакуется из старого образа и все будет без изменений.
    Ответ написан
    Комментировать
  • Как заставить работать данный код, сравнение строк и переход на второй активити android?

    @Braidner
    Ошибка синтаксиса, без скобок можно использовать одно выражение.
    if () {
    Intent int = new Intent();
    startActivity(int);
     } else {
    //do something
    }
    Ответ написан
    1 комментарий
  • Не отображается приложение в списке всех приложений разработчика в google play?

    @IceJOKER
    Web/Android developer
    Здравствуйте, а когда добавили приложение?
    Если недавно, то нужно подождать несколько дней
    Ответ написан
    2 комментария
  • Какую литературу почитать?

    @MJee
    Разработчик мобильных приложений для Android
    Мне вот эта книга понравилась
    www.ozon.ru/context/detail/id/24301926

    И сайт с кучей уроков на русском
    startandroid.ru/ru/uroki/vse-uroki-spiskom.html
    Ответ написан
    Комментировать
  • На чем в 50 лет можно зарабатывать?

    @noprof
    Вы бы заранее не суетились бы, пока его не сократили, а спросили бы его, чего он хочет на самом деле. Что он умеет, что знает, готов ли он морально обучатся чему-то новому. Что ему для этого необходимо?

    Просто тут много сказочников, которым просто повезло в какой-то момент оказаться в нужный момент и в нужном месте. Вот они и рассказывают что все просто и легко с заработком в интернет.
    А на самом деле, все куда жестче происходит, и все пытаются сожрать друг друга, и умников разных во всех сферах полно, и все хотят кушать, и будут рвать волосы на пятой точке, что бы получить какую-то копейку. (+ учитывая текущую ситуацию)
    + Отягощающий фактор это возможное сокращение. Ведь ситуациях когда жизнь бьёт, то удар приходится со всех сторон и сразу. Если бы он давно бы имел доп. заработок в виде чего-то там в интернет, то это одно, а резко сменить занятость с одной сферы на другую, это очень тяжело.

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

    Пусть сам себе найдет занятие по душе.
    Что, у мужиков работающих на заводах руки из задницы растут?
    Или сопли протекают? В жизни не поверю.

    ===================================================

    Узнайте у него самого, что ему интересно делать? Может быть у него хобби какое-то есть? Пусть развивает своё хобби подсунутыми вами средствами (тот же фриланс по узкой специализации).
    + Сейчас популярны всякие видеоблогеры, а если руки и мозги есть, то я думаю и материал будет.
    Ответ написан
    2 комментария
  • На чем в 50 лет можно зарабатывать?

    Если Ваш отец считает, что в 50 он уже старик и ни на что не годен, ну что же, пусть ищет место сторожа.
    Если же нет - почему Вы упоминаете возраст? Создается впечатление, что Вы считаете его неполноценным.

    Поставьте вопрос иначе: на чем зарабатывать человеку, которому только-только минуло 30?
    И ответы найдутся гораздо проще... если не ставить надуманных барьеров.
    Ответ написан
    4 комментария
  • Будет ли работать камера из планшета, если ее вытащить и удлинить кабель?

    SADKO
    @SADKO
    aka -=SADKO=-
    Ну до двадцати сантиметров ИМХО будет работать, больше придётся повозиться с кабелем...
    Ответ написан
    Комментировать
  • Что нужно сделать, чтобы Navigation Drawer (боковое меню) показывалось на всех activity моего приложения?

    @belozerow
    У вас в проекте разные активити с разными меню? Звучит не как самая лучшая идея с точки зрения юзабилити.

    Или же вы хотите сделать одно меню, но при выборе пунктов открывать разные активити, а не фрагменты?
    В таком случае лучше всё же разобраться с фрагментами, потому что потом наверняка упретесь в кучу неприятностей.
    Ответ написан
    Комментировать