Как избежать обновления стилей кнопок очистки / контура от смены тем

Большинство телефонных камер - это пейзаж, а это означает, что если вы сделаете фотографию на портрете, полученные снимки будут повернуты на 90 градусов. В этом случае программное обеспечение камеры должно заполнить данные Exif с ориентацией, в которой должна просматриваться фотография.

Обратите внимание, что решение ниже зависит от производителя программного обеспечения камеры / устройства заполняя данные Exif, поэтому он будет работать в большинстве случаев, но он не является 100% -ным надежным решением.

ExifInterface ei = new ExifInterface(photoPath);
int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION,
                                     ExifInterface.ORIENTATION_UNDEFINED);

Bitmap rotatedBitmap = null;
switch(orientation) {

    case ExifInterface.ORIENTATION_ROTATE_90:
        rotatedBitmap = rotateImage(bitmap, 90);
        break;

    case ExifInterface.ORIENTATION_ROTATE_180:
        rotatedBitmap = rotateImage(bitmap, 180);
        break;

    case ExifInterface.ORIENTATION_ROTATE_270:
        rotatedBitmap = rotateImage(bitmap, 270);
        break;

    case ExifInterface.ORIENTATION_NORMAL:
    default:
        rotatedBitmap = bitmap;
}

Вот метод rotateImage:

public static Bitmap rotateImage(Bitmap source, float angle) {
    Matrix matrix = new Matrix();
    matrix.postRotate(angle);
    return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(),
                               matrix, true);
}

1
задан mitsuruog 27 March 2019 в 13:13
поделиться

1 ответ

Вы можете создать тему со всеми необходимыми свойствами, а затем использовать оператор распространения, чтобы добавить тему только к нужным кнопкам.

class App extends React.Component {
  render() {
    const theme = {
        buttonStyle: {
          backgroundColor: 'green',
        },
    };
    ...
    <Button title="normal" {...theme}/>
    <Button title="clear" type="clear"/>
    <Button title="outline" type="outline"/>
  }
}
0
ответ дан Vencovsky 27 March 2019 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: