GestureImageView становится пустым при попытке программно установить растровое изображение с камеры

Я использую: https://github.com/jasonpolites/gesture-imageview

  • при загрузке приложения у него есть изображение-заполнитель в GestureImageView, которое соответствующим образом сжимается/масштабируется. У меня есть кнопка, которая при нажатии запускает намерение камеры, сохраняет файл, а затем я хочу установить это изображение в качестве исходного растрового изображения, используемого в просмотре жестов.

    GestureImageView imageView = (GestureImageView) findViewById(R.id.imageViewOne);

    ContentResolver cr = getContentResolver();
    
    getContentResolver().notifyChange(imageUriOne, null);
    
    
                    try {
    Bitmap mybitmap =  android.provider.MediaStore.Images.Media.getBitmap(cr, imageUriOne);
    
     imageView.setImageBitmap(mybitmap);
    

    }

Для обычного изображения это работает. Но для GestureImageView изображение остается исходным после возврата из намерения камеры, а при прикосновении исчезает.

Чтобы проверить, что проблема не в растровом изображении, я попробовал

int idTwo=getResources().getIdentifier("com.jazz.test1:drawable/second_photo", null, null);

imageView.setImageResource(idTwo);

т.е. установите изображение для существующего ресурса, но это имеет ту же проблему.

Если я вызову этот код setImageResource перед намерением, он сработает.

Любые идеи, как отлаживать? В логах ошибок нет.


person Dave    schedule 13.12.2012    source источник


Ответы (2)


Разрешение здесь:

https://github.com/jasonpolites/gesture-imageview/issues/21

  • не заметил этого, когда впервые посмотрел на проблемы с github.
person Dave    schedule 13.12.2012

Вы должны заменить функцию initMethod. С этим кодом все будет работать правильно (файл GestureImageView.java в пакете com.polites.android).

protected void initImage() {
        if (this.drawable != null) {
            this.drawable.setAlpha(alpha);
            this.drawable.setFilterBitmap(true);
            if (colorFilter != null) {
                this.drawable.setColorFilter(colorFilter);
            }
            // Keppel.Cao
            layout = false;
            startingScale = -1.0f;
        }

        if (!layout) {
            requestLayout();
            // Keppel.Cao
            // redraw();
            reset();
        }
}

Как сказал Дэйв. Подробнее вы можете найти здесь Выпуск 21

person Eliasz Kubala    schedule 25.07.2014