Задать вопрос
  • Что за проблема рендеринга в Android Studio?

    Наконец-то и до сюда добралось!
    Проблема в последнемAppCompat 23.2.0.
    В этой версии ввели поддержку VectorDrawableCompat.
    Теперь векторные ресурсы больше не будут конвертироваться в растровые на этапе сборки.
    Однако,студия об этом не знает,и она автоматически решила сделать это опять.
    Поэтому нужно прописать специальный флаг в Gradle вашего проекта,
    иначе вылетит, такой же exception, как и у вас.
    1-ый вариант(если у вас версияGradle wrapper >= 2.0):

    android {
      defaultConfig {
        vectorDrawables.useSupportLibrary = true
      }
    }


    2-ой вариант:(если версия Gradle wrapper == 1.5 ; скорее всего он вам и подойдёт)

    android {
      defaultConfig {
        // Stops the Gradle plugin’s automatic rasterization of vectors
        generatedDensities = []
      }
      // Flag to tell aapt to keep the attribute ids around
      aaptOptions {
        additionalParameters "--no-version-vectors"
      }
    }


    Ну, а чтобы использовать это дело:

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       app:srcCompat="@drawable/ic_search"/>

    Обратите внимание на последнюю строчку:
    app:srcCompat="@drawable/ic_search"

    Однако, данное решение помогает не всем.Хотя, вы просто лишаетесь видеть правильный
    вид некоторых элементов во время редактирования.При запуске всё будет выглядеть нормально.
    Ответ написан
    Комментировать
  • Иерархия в res/drawable как реализовать?

    Нет, этот механизм не поддерживает субдиректории.
    Если вы это сделаете , ресурсы больше не будут доступны,
    а компилятор выдаст ошибку, что классR.java был
    неправильно сгенерирован.
    Однако, есть возможность "смержить" ресурсы в так называемые
    "сеты".Ссылка на документацию.

    Update:
    Появился специальный плагин для этого!
    Ответ написан
    Комментировать
  • Не могу найти пример анимации?

    Этот эффект называется Collapsing Toolbar with Parallax.
    Сначала делаем обычный AppBarLayout с Collapsing Toolbar.
    (Вид можете настроить под себя)
    Потом пишем код для проверки вида toolbar, в котором делаем, что нужно:

    appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
                @Override
                public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
                    if (isCollapsed(verticalOffset)) {
                        //set status bar color your color
                    } else {
                        // set status bar color transparent
                    }
    
                }
            });
    
        private boolean isCollapsed(int offset) {
            return offset == 0 || offset <= toolbar.getHeight();
        }
    Ответ написан
    Комментировать
  • Проблеми с конфигурацией в андроид студио.Как исправить?

    В LibGDX это случается, когда системное имя пользователя
    содержит недопустимые символы.Чтобы это исправить
    напишите это в методе main перед инициализацией запускалки:

    String correctUserName = "Здесь ваше имя пользователя латиницей";
    System.setProperty("user.name",correctUserName);


    То есть получается как-то так:

    public static void main (String[] arg) {
            setupUserName();
            LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
            new LwjglApplication(new Touch(), config);
     } 
    private static void setupUserName() {
     String correctUserName = "Здесь ваше имя пользователя латиницей";
     System.setProperty("user.name",correctUserName);
    }
    Ответ написан
    Комментировать
  • Существует ли UI феймрверк, который может работать как на десктопе так и на adnroid?

    Не очень мне нравится эта идея, но ладно:
    Решение
    Ещё можно посмотреть в сторону портов популярных
    GUI- фреймворков (Swing, JavaFX и т.д)
    Ответ написан
    Комментировать
  • Кто-нибудь сталкивался с библиотекой min3d? Если да, то как она вам? И есть ли ей более современная замена?

    Как вы умудрились откопать это старьё?!)
    Сейчас есть 2 отличных инструмента для разработки
    3D игр на Java:
    1. LibGDX
    2. JMonkeyEngine

    LibGDX - это фреймворк , который становится очень популярным, у него большое community,
    куча туториалов.

    JMonkeyEngine - это уже больше похоже на движок(по-типу Unity и т.п).У него есть интегрированная среда разработки на основе NetBeans.Однако сообщество очень маленькое.
    Ответ написан
    Комментировать
  • Как выгрузить .3ds файл в массивы(буферы) с помощью java? (Вершины, цвета, нормали)?

    Вам нужно экспортировать файл .3ds в расширение.obj.
    Это делается массой путей.Лично я, по своим соображениям удобства, импортирую .3ds в Unity, а потом экспортирую при помощи данного плагина.
    Как загрузить модельку .obj - легко ищется поисковиком.
    Обычно, к моменту релиза,.obj конвертируют в более дружественный для runtime и меньший по весу формат .g3db.
    Сделать это можно с помощью данной утилиты.
    Ответ написан
    1 комментарий
  • Как из под Java программы открыть браузер, который стоит не по умолчанию, например Tor?

    Есть два пути:
    1)
    String pathToTor = "D:\\Tor\\Tor Browser\\Browser\\firefox.exe"; //путь к браузеру 
            String link = "http:\\stackoverflow.com\\"; //ссылка
            String request = String.format("%s %s", pathToTor, link);
            Runtime runtime = Runtime.getRuntime();
            runtime.exec(request);

    + Запускает только Tor
    - Требуется абсолютный путь к браузеру

    2)
    Воспользуйтесь моим классом(набросал на скорую руку):

    Класс реализации:

    public class BrowserOpener {
    
        private String os;
        private Runtime runtime;
    
        public BrowserOpener() {
    
            os = System.getProperty("os.name").toLowerCase();
            runtime = Runtime.getRuntime();
        }
    
        public void openLinkInBrowser(String url) {
    
            try {
                if (isWindows()) {
                    runtime.exec("rundll32 url.dll,FileProtocolHandler " + url);
                } else if (isMac()) {
                    runtime.exec("open " + url);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    
        private boolean isWindows() {
            return os.contains("win");
        }
    
        private boolean isMac() {
            return os.contains("mac");
        }
    
    
    }

    Класс c методом Main:

    import java.io.IOException;
    import java.net.URISyntaxException;
    
    public class Main {
    
        public static void main(String[] args) throws IOException, URISyntaxException {
    
            BrowserOpener opener = new BrowserOpener();
            opener.openLinkInBrowser("http://stackoverflow.com/");
    
    
        }
    
    
    }


    +
    • Ненужен абсолютный путь
    • Предлагает выбор пользователю
    - Запускает не именно Tor
    Ответ написан
    Комментировать
  • Почему выходит такая ошибка в Android Studio?

    1)Нажмите на
    Open Android SDK Manager

    2)d4c608e0de73467b9bc04b6457eabc2a.png
    Ответ написан
    Комментировать
  • Как программно изменить цвет текста в ячейке GridView Android?

    Нужно просто использовать метод GridView.getChildAt() в цикле :
    public void MyButtonClick(View view) {
            int count = gridView.getChildCount();
            for (int i = 0; i < count; i++) {
                View cell = gridView.getChildAt(i);
                TextView cellText = (TextView) cell.findViewById(R.id.textpart);
                cellText.setTextColor(Color.parseColor("#FF0033"));
            }
        }


    Небольшое замечание: у вас немного криво сделан Adapter, поэтому менять цвет текста будут не все ячейки.Попробуйте исправить код populating адаптера с массивом.

    Полный код Activity после небольшого причёсывания:

    public class MainActivity extends Activity {
    
    private GridView gridView;
        private ImageTextAdapter adapter;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            adapter = new ImageTextAdapter(this);
            gridView = (GridView) findViewById(R.id.gridview);
            gridView.setAdapter(adapter);
            gridView.setOnItemClickListener(gridViewOnItemClickListener);
        }
    
        private GridView.OnItemClickListener gridViewOnItemClickListener = new GridView.OnItemClickListener() {
    
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) { // пожалуйста, не комментируйте код так:
    
                // Sending image id to FullScreenActivity
                //Intent i = new Intent(getApplicationContext(),
                //        FullImageActivity.class);
                // passing array index
                //i.putExtra("id", position);
                //startActivity(i);
            }
        };
    
    
        public void MyButtonClick(View view) { // нарушение Code Convention в имени метода
    
            int count = gridView.getChildCount();
            for (int i = 0; i < count; i++) {
    
                View cell = gridView.getChildAt(i);
                TextView cellText = (TextView) cell.findViewById(R.id.textpart);
                cellText.setTextColor(Color.parseColor("#FF0033"));
            }
    
    
        }
    
    
    }

    Согласитесь, что выглядит лучше , чем :

    public class MainActivity extends Activity {
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            GridView gridview = (GridView) findViewById(R.id.gridview);
            gridview.setAdapter(new ImageTextAdapter(this));
    
            gridview.setOnItemClickListener(gridviewOnItemClickListener);
        }
    
        private GridView.OnItemClickListener gridviewOnItemClickListener = new GridView.OnItemClickListener() {
    
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int position,
                                    long id) {
                // TODO Auto-generated method stub
    
                // Sending image id to FullScreenActivity
                //Intent i = new Intent(getApplicationContext(),
                //        FullImageActivity.class);
                // passing array index
                //i.putExtra("id", position);
                //startActivity(i);
            }
        };
    
    
        public void MyButtonClick(View view)
        {
            View cell = findViewById(R.layout.cellgrid);
            TextView cellText = cell.findViewById(R.id.textpart);
                    cellText.setTextColor(Color.parseColor("#000000"));
        }
    
    }
    Ответ написан
  • Какая версия java в android?

    Соглашусь с пользователем Deadkenny, но хочу добавить:
    1)В начале Android поддерживал только 6 версию Java, но в 2013
    c выходом новой версии Android Studio также появилась возможность
    использовать Java 7.

    2)
    но можно увеличить до Java 8 с помощью сторонних библиотек

    Это не совсем так.Формально это достигается путём перекомпиляции byte - кода с Java 7 до 8.
    Выполняется это с помощью библиотекRetrolambda (лямбда-выражения + частично default - методы) + streamsupport(Stream Api)

    3)Также к релизу Android N Google планирует перейти на OpenJDK и добавить поддержку Java 8.

    Насчёт изучения:
    Неважно какую версию учить.Отличаться будет только некоторыми моментами.
    Я рекомендую прочитать вот эту замечательную книжку , потом конечно же "Thinking in Java",
    ну, а потом, если захочется изучить данный материал про возможности Java 8.У всех трёх есть оригиналы на English.
    Ответ написан
    Комментировать
  • Какие есть полезные Java фреймворки?

    Web: Grails, Play, Tapestry, Primefaces, Vaadin
    Утилиты: Guava, Joda, Quartz, H2, Camel
    Backend : Spring, Spring Security, Hibernate, MyBatis, Jooq
    Unit - тестирование: Mockito, PowerMock, Junit, TestNG, Spock

    Больше
    Ответ написан
    5 комментариев
  • Как реализовать двумерный динамический массив в Java?

    Используйте Map
    в связке с Pair :

    import javafx.util.Pair;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    
    public class Main {
    
        public static void main(String[] args) throws IOException {
    
            Pair<Integer, Integer> position = new Pair<Integer, Integer>(-1, 3);
            Map<Pair<Integer, Integer>, Integer> myMatrix = buildMatrix();
            myMatrix.put(position, 9);
            outputValue(myMatrix, position);
    
    
        }
    
        private static Map<Pair<Integer, Integer>, Integer> buildMatrix() {
    
            return new HashMap<>();
    
        }
    
        private static void outputValue(Map<Pair<Integer, Integer>, Integer> map, Pair<Integer, Integer> key) {
    
    
            System.out.println(map.get(key));
    
        }
    
    
    }
    Ответ написан
  • Как в Android определить основные цвета фото?

    Специальный класс, отвечающий за это, есть в Android Support Library v7.
    Называется Pallete.
    Вот туториал.
    Ответ написан
    1 комментарий
  • Как получить полную фотографию с камеры в android?

    Чтобы получить изображение в полном размере , вам нужно вначале
    заставить камеру сохранить картинку во временном файле:

    private URI mImageUri;
    
        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
        File photo;
        try
        {
            // место где хранятся фото
            photo = this.createTemporaryFile("picture", ".jpg");
            photo.delete();
        }
        catch(Exception e)
        {
            Log.v(TAG, "Не получилось создать фото!");
            Toast.makeText(activity, "Пожалуйста, проверьте Sd  - карту", 10000);
            return false;
        }
        mImageUri = Uri.fromFile(photo);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);
        //вызываем Intent камеры
        activity.startActivityForResult(this, intent, MenuShootImage);
    
    private File createTemporaryFile(String part, String ext) throws Exception
    {
        File tempDir= Environment.getExternalStorageDirectory();
        tempDir=new File(tempDir.getAbsolutePath()+"/.temp/");  
        if(!tempDir.exists())
        {
            tempDir.mkdir();
        }
        return File.createTempFile(part, ext, tempDir);
    }


    Затем, после записи изображения - просто вытащите изображение из imageUri:

    public void grabImage(ImageView imageView)
    {
        this.getContentResolver().notifyChange(mImageUri, null);
        ContentResolver cr = this.getContentResolver();
        Bitmap bitmap;
        try
        {
            bitmap = android.provider.MediaStore.Images.Media.getBitmap(cr, mImageUri);
            imageView.setImageBitmap(bitmap);
        }
        catch (Exception e)
        {
            Toast.makeText(this, "Ошибка загрузки", Toast.LENGTH_SHORT).show();
            Log.d(TAG, "Ошибка загрузки", e);
        }
    }
    
    
    //вызов камеры после выполнения
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent)
    {
        if(requestCode==MenuShootImage && resultCode==RESULT_OK)
        {
           ImageView imageView;
           //делаем, что нужно с картинкой
           this.grabImage(imageView);
        }
        super.onActivityResult(requestCode, resultCode, intent);
    }


    Update:

    1) Убедитесь, что permissions в правильном месте:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <application>
        ...
    
    </application>


    2)У вас случайно не Marshmallow(23 API)?
    Если это так, то permissions также должны проверяться в коде:

    / Storage Permissions
    private static final int REQUEST_EXTERNAL_STORAGE = 1;
    private static String[] PERMISSIONS_STORAGE = {
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
    };
    
    /**
     * Checks if the app has permission to write to device storage
     *
     * If the app does not has permission then the user will be prompted to grant permissions
     *
     * @param activity
     */
    public static void verifyStoragePermissions(Activity activity) {
        // Check if we have write permission
        int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
    
        if (permission != PackageManager.PERMISSION_GRANTED) {
            // We don't have permission so prompt the user
            ActivityCompat.requestPermissions(
                    activity,
                    PERMISSIONS_STORAGE,
                    REQUEST_EXTERNAL_STORAGE
            );
        }
    }


    Update 2:

    Совместимость с предыдущими версиями:

    int currentapiVersion = android.os.Build.VERSION.SDK_INT;
    if (currentapiVersion >= android.os.Build.VERSION_CODES.M){
    
    } else{
        
    }
    Ответ написан
    21 комментарий
  • Какие события в Google Calendar автоматически получают фон?

    Если не считать праздники:(Я использую календарь на English, поэтому не знаю
    какие точно присутствуют в русском варианте)

    Еда
    • Завтрак
    • обед
    • дегустация
    • ужин
    • столовая
    • обедает
    • кофе
    • барбекю
    • пикник
    • гриль
    • кухня
    • Готовка
    • выпечка
    • рецепт
    • кофе

    Камера
    • Камера
    • Фотосессия
    • Фото
    • картина
    • картинки

    Учёба
    • класс
    • Лекция
    • Семинар
    • урок
    • домашнее задание
    • изучение
    • школа
    • контрольная работа
    • экзамен
    • Тест

    На открытом воздухе
    • лагерь
    • кемпинг
    • палатка
    • пеший туризм
    • поход
    • на открытом воздухе
    • открытый
    • горный
    • пустыня
    • Охота
    • охота

    Медицина
    • Дантист
    • орто
    • ортодонт
    • зубы
    • врач
    • врачи
    • д-р

    Развлечения
    • напитки
    • бар
    • пиво
    • развлекательная программа
    • Концерт
    • кино
    • вечеринка
    • День рождения
    • спорт
    • футбол
    • НХЛ
    • баскетбол
    • бокс

    Бизнес
    • телемост
    • WebEx
    • Skype
    • видеозвонок
    • встреча
    • интервью

    Деньги
    • оплата счета
    • законопроект
    • зарплата

    Музыка
    • Музыка
    • радио
    • вода
    • парус
    • лодка
    • пляж
    • Река
    • каяк
    • каноэ
    • парусный спорт
    • гидроцикл
    • бассейн
    • Праздники:
    • Хэллоуин
    • мощи
    • костюм
    • кошелек или жизнь
    • Рождество
    • X-Mas
    • нянь
    • NIAN
    • 年节
    • 农历 年初一
    • Ян
    • ян
    • Ханука
    • Посадас
    • Festivus

    Поезд
    • поезд

    Гостиница
    • Гостиница
    • Мотель
    • люкс
    • Marriott
    Ответ написан
    1 комментарий
  • Javafx.scene.media.AudioClip; Как проиграть файл, имя которого содержит пробелы???

    Попробуй пойти через File:
    File file = new File("Путь к файлу с пробелами");
    String path = file.toURI().toASCIIString();
    Ответ написан
    1 комментарий
  • Сервис для создания рисунков и схем?

    Лучший сервис , который я знаю.
    По вашим требованиям подходит:
    Draw.IO
    Ответ написан
    Комментировать