Ответы пользователя по тегу Android
  • Как программно изменить цвет текста в ячейке 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.
    Ответ написан
    Комментировать
  • Как в 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 комментарий
  • Почему не работает VideoView при разработке под android?

    Как у вас всё странно!А посмотреть, что у вас за ошибка, не пробовали?

    Xml - файл Layout:


    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="android.letscoder.xyz.videosolution.MainActivity">
    
        <VideoView
            android:id="@+id/video_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            />
    </RelativeLayout>


    Код класса Activity:


    package android.letscoder.xyz.videosolution;
    
    import android.net.Uri;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.MediaController;
    import android.widget.VideoView;
    
    public class MainActivity extends AppCompatActivity {
    
        VideoView mVideoView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            setupVideoView(mVideoView, "http://techslides.com/demos/sample-videos/small.mp4");
        }
    
        private void setupVideoView(VideoView videoView, String url) {
            videoView = (VideoView) findViewById(R.id.video_view);
            MediaController controls = new MediaController(this);
            controls.setAnchorView(videoView);
            videoView.setMediaController(controls);
            videoView.setVideoURI(Uri.parse(url));
            videoView.start();
        }
    
    }


    Не забудьте прописать permisson в манифесте:


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


    Всё работает:


    3d21e3b28408438c958afa60fb1a586e.png
    Ответ написан
    4 комментария
  • Как заставить TextView работать только с одним таймером?

    Я бы на вашем месте так бы не делал, но ладно:

    1)Зачем задаёте текст у TextView в таймере?Это нарушает принцип Деметры и абстракцию.Просто делаем переменную currentTime в интерфейсе класса и создаём геттер к нему:

    public class TimerClass extends CountDownTimer {
        public String getCurrentTime() {
            return currentTime;
        }
    
        private String currentTime;
    
        public TimerClass(long milliFuture, long interval) {
            super(milliFuture, interval);
        }
    
        @Override
        public void onTick(long millisUntilFinished) {
            long millis = millisUntilFinished;
            String hhmmss = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
                    TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
                    TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
            currentTime = hhmmss;
        }
    
        @Override
        public void onFinish() {
            currentTime = "Completed";
        }
    }


    2)Теперь в классе активности создаём метод runTimer() с Handler, который будет
    обновлять текст нашего TextView:

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    
        TextView mTimer;
        Button startButton, pauseButton;
        int timeToEnd = 25000;
        final TimerClass timer = new TimerClass(timeToEnd, 1000);
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mTimer = (TextView) findViewById(R.id.tv);
            startButton = (Button) findViewById(R.id.startButton);
            pauseButton = (Button) findViewById(R.id.pauseButton);
            startButton.setOnClickListener(this);
            pauseButton.setOnClickListener(this);
            runTimer();
        }
    
        @Override
        public void onClick(View v) {
    
            switch (v.getId()) {
                case R.id.startButton:
                    startButton.setOnClickListener(this);
                    timer.start();
                    break;
                case R.id.pauseButton:
                    pauseButton.setOnClickListener(this);
                    timer.cancel();
            }
        }
    
        private void runTimer() {
    
    
            final Handler handler = new Handler();
            handler.post(new Runnable() {
                @Override
                public void run() {
    
                    mTimer.setText(timer.getCurrentTime());
                    handler.post(this);
                }
            });
        }
    
    }


    P.s
    Очень костлявая реализация.Я бы сделал по-другому.
    Ответ написан
    8 комментариев
  • Какие знания нужны, что бы написать подобное приложение (см. картинку)?

    Ну, раз вы хотите
    выложить в Google Play
    ,
    логично будет использовать Android SDK.
    В данном случае графические
    движки, типа LibGDX, будут излишни.Вам вполне хватит стандартных
    андройдовских элементов ui.
    Но , если вы хотите сделать кроссплатформенную игру с хорошим дизайном
    и интерфейсом, тогда присмотритесь к LibGDX.
    Ccылки на стандартные курсы(бесплатные, синяя кнопка):
    Android от Google
    LibGDX и 2d Platformer
    Ответ написан
    1 комментарий
  • Как в Intent передать картинку и текст?

    Решение:
    Uri imageUri = Uri.parse("android.resource://" + getPackageName()
            + "/drawable/" + "image");
     Intent shareIntent = new Intent();
     shareIntent.setAction(Intent.ACTION_SEND);
     shareIntent.putExtra(Intent.EXTRA_TEXT, "Text");
     shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
     shareIntent.setType("image/jpeg");
     shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
     startActivity(Intent.createChooser(shareIntent, "send"));
    Ответ написан
    1 комментарий
  • Как реализовать кастомные упровляющие элементы (MediaController) для VideoView?

    Встречался я с такой задачей:
    Оригинальная статья
    Перевод
    Ответ написан
    Комментировать
  • Какие нужны знания java для разработки под андроид?

    java se на среднем уровне

    Так чего вы ждёте?Прямо сейчас и начинайте.
    В Android нет ничего мистического.Знания базового синтаксиса, основных конструкций,
    ООП, коллекций и начального представления о многопоточности - будет
    достаточно.
    Хорошая книга для начинающих(на ozon есть старое издание на русском)
    Курсы(English): Udacity
    (бесплатно, большая синяя кнопка внизу)
    Уроки(на русском):Startandroid
    Ответ написан
    Комментировать
  • Узнать время в нужном мне часовом поясе?

    Используем класс SimpleDateFormat:
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
    format.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date date = format.parse("2015-01-23T09:10:00");
    Ответ написан
    Комментировать
  • Что именно значит ошибка?

    Android позволяет работать с Ui только в основном потоке.Проблему можно решить классом Handler.
    Ответ написан
    Комментировать
  • Developing Android Apps от Udacity?

    Да, отличный курс.Всё восхитительно просто разжёвано + много практики.
    Если вы совсем новичок, то советую сначала пройти этот курс или обратить внимание на
    эту книжку.
    Ответ написан
    4 комментария
  • Android Auto и Apple Car Play?

    Вот хороший ресурс для начинающих
    А что за проект?
    Ответ написан
    3 комментария
  • Какой язык выбрать для андроид?

    Если Вы изучите Java , то будете знать C# на 80% и наоборот.
    Делать приложения для Android можно и на Java(нативное решение) и на C#(Xamarin).
    Насчёт игр:на Java нет таких крутых движков, которые превзошли бы Unity, где используется C#.
    Начинать изучение стоит с английского языка, потому что большинство хороших обучающих материалов
    написано именно на нём.
    Затем Вам нужно освоить основы программирования на каком-нибудь простом императивном языке.Например
    Python .Когда Вы будете знать, что такое типы данных, условный оператор, циклы и т.д , можете идти дальше.
    На этом этапе Вы изучаете Java/C# и ООП.Далее по-своему желанию можете изучить алгоритмы и структуры данных, но впрочем это не обязательно.
    Ну, а на последнем этапе изучаете ту технологию, которая Вас интересует.
    Ответ написан
    1 комментарий
  • С чего начать создание приложения для Android?

    Если есть знания English , то вот здесь:
    1) Java(Хотя тут уровень слабоват, но подойдёт)
    2)Android(В конце будет рассматриваться создание клиент-серверного приложения)
    Можно взять триал на месяц(если не успеешь, можно ещё раз зарегестрироваться):Триал на месяц

    Если нужны только русскоязычные ресурсы:
    1)Java или вот эта книга
    2)Android + Google
    Ответ написан
    1 комментарий