2013-04-12 5 views
1
bmpAndroidMarker = BitmapFactory.decodeResource(context.getResources(), R.drawable.t_move2); 
         bmpAndroidMarkerResult = Bitmap.createBitmap(bmpAndroidMarker.getWidth(), bmpAndroidMarker.getHeight(), Bitmap.Config.ARGB_8888); 
         Canvas tempCanvas = new Canvas(bmpAndroidMarkerResult); 
         tempCanvas.rotate(direction+45, bmpAndroidMarker.getWidth()/2, bmpAndroidMarker.getHeight()/2); 
         tempCanvas.drawBitmap(bmpAndroidMarker, 0, 0, null); 

Это код, который я написал (заимствовал). Значок создается внутри изображения, внутри списка.Растровое изображение Android растровое изображение холст/обрезка изображения

Моя проблема в том, что при вращении этой «стрелки» кажется, что она «зажимает» часть отдаленных краев, как если бы они сохраняли размеры оригинального растрового изображения. Я не могу понять, как разрешить «переполнение» и отобразить правильное изображение размера.

Есть ли способ сделать это?

ответ

2

Вы поворачиваете изображение на 45 градусов, поэтому результирующий растровый рисунок должен быть шириной оригинала плюс ширина диагонали оригиналов (теорема Пифагора должна помочь).

AFAIK вам нужно будет сделать это самостоятельно при создании результата. Растровое изображение, так как это холст, который нарисован, вращение его содержимого не будет вращать контейнер.

0

Попробуйте обернуть свой ImageView в FrameLayout и установить ширину и высоту макета кадра как размер изображения, которое вы пытаетесь выполнить. Вы можете сделать это в файл макета отображения вида, как ...

<FrameLayout 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_width="YOUR IMAGE WIDTH" 
     android:layout_height="YOUR IMAGE HEIGHT"> 
     <ImageView 
      android:scaleType="matrix" 
      android:layout_width="YOUR IMAGE WIDTH" 
      android:layout_height="YOUR IMAGE HEIGHT" 
      android:src="@drawable/YOUR IMAGE FILE" /> 
    </FrameLayout> 

... или программный способ путем создания вашего FrameLayout с вашими указанные размеры, то добавив ваше ImageView как подвид.

Если ваше изображение больше экрана, вы можете использовать андроид: scaleType = "matrix", чтобы он не масштабировался и не сохранял пропорции.

Это был ответ Павла Вязовского here. Кредит, в котором должен быть кредит!