Hallo,
ich sitze bereits seit 2 Tage an folgendem Problem:
Ich muss ein Bild rotieren, allerdings wird beim Rotieren die Größe immer verändert. Ich habe dann herausgefunden, dass es eigentlich nicht die Größe ist, die Verändert wird, sondern glaube ich die x und y Koordinaten von meinem Bitmap. -> Wenn ich dann das Bitmap resize, dann stimmt die Größe zwar, das Bild springt aber beim rotieren hin und her.
Hat jemand eine Lösung für dieses Problem? Ich wäre euch sehr dankbar!
Hier ist der Code:
Code
ImageView wheel;
Bitmap wheelBitmap;
...
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.planungsinfos);
wheel = (ImageView) findViewById(R.id.rad);
wheel.setOnTouchListener(this);
wheelBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.rad);
wheel.setImageBitmap(wheelBitmap);
...
}//onCreate
public boolean onTouch(View v, MotionEvent event) {
double r=Math.atan2(event.getX()-wheel.getWidth()/2, wheel.getHeight()/2-event.getY()); // currentX - centerX, centerY - currentY
int rotation=(int)Math.toDegrees(r);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
updateRotation(rotation);
break;
case MotionEvent.ACTION_UP:
break;
}//switch
return true;
}//onTouch
private void updateRotation(double rot){
float newRot=new Float(rot);
Matrix matrix=new Matrix();
Log.e("rotate: ", "" + newRot, null);
matrix.postRotate(newRot,wheelBitmap.getWidth()/2, 0);
Bitmap reDrawnBitmap=Bitmap.createBitmap(wheelBitmap,0,0,wheelBitmap.getWidth(),wheelBitmap.getHeight(),matrix,true);
int width = wheelBitmap.getWidth();
int height = wheelBitmap.getHeight();
float scaleWidth = ((float) reDrawnBitmap.getWidth()) / wheelBitmap.getWidth();
float scaleHeight = ((float) reDrawnBitmap.getHeight()) / wheelBitmap.getHeight();
matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizedBitmap = Bitmap.createBitmap(reDrawnBitmap, 0, 0,
width, height, matrix, true);
wheel.setImageBitmap(resizedBitmap);
}
Alles anzeigen
die xml-Datei:
Code
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/hg_drehrad"
android:gravity="top"
android:orientation="vertical" >
...Buttons und Images...-
<ImageView
android:id="@+id/rad"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="25dp"
android:contentDescription="@string/desc"/>
</RelativeLayout>
<!-- android:gravity="end" -->
Alles anzeigen