1

このコードを使用して、drawable を 45 度回転させています。

public static Drawable rotateImage(Context ctx) {
      // load the origial Bitmap
      Bitmap BitmapOrg = BitmapFactory.decodeResource(ctx.getResources(),
              R.drawable.car);



      int width = BitmapOrg.getWidth();
      int height = BitmapOrg.getHeight();
      int newWidth = 90;
      int newHeight = newWidth * height / width;

      // calculate the scale
      float scaleWidth = ((float) newWidth) / width;
      float scaleHeight = ((float) newHeight) / height;

      // create a matrix for the manipulation
      Matrix matrix = new Matrix();
      // resize the Bitmap
      matrix.postScale(scaleWidth, scaleHeight);
      // if you want to rotate the Bitmap
      matrix.postRotate(-45);

      // recreate the new Bitmap
      Bitmap resizedBitmap = Bitmap.createBitmap(BitmapOrg, 0, 0,
                                                 width, height, matrix, true);

      // make a Drawable from Bitmap to allow to set the Bitmap
      // to the ImageView, ImageButton or what ever
      return new BitmapDrawable(resizedBitmap);

    }

問題は、newWidth を指定しても、Drawable のサイズは同じままで、回転した画像が引き伸ばされて見えることです。回転した画像の見栄えを良くするために、ドローアブルが長方形の場合、どうすれば回転できますか?

4

1 に答える 1

0

私はあなたのために試してみました:)私はあなたがxmlであなたの画像サイズを設定したと思います.so、すべての画像は小さく設定されます.ただ次のことを試してください...

あなたのXMLで

   <?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/ic_launcher" >

  <ImageView
    android:id="@+id/imageButton1"
    android:layout_width="1000dp"
    android:layout_height="5000dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_marginBottom="49dp"
    android:src="@drawable/ic_launcher"
    android:contentDescription="Rakesh" />

</RelativeLayout>

そしてあなたのJavaファイルで

 public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
   /* this.requestWindowFeature(Window.FEATURE_NO_TITLE); */
    setContentView(R.layout.activity_main);
    ImageView im=(ImageView)findViewById(R.id.imageButton1);
  /*  this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);*/
im.setImageDrawable(rotateImage(this));
}

public static Drawable rotateImage(Context ctx) {
    // load the origial Bitmap
    Bitmap BitmapOrg = BitmapFactory.decodeResource(ctx.getResources(),
            R.drawable.vijay);



    int width = BitmapOrg.getWidth();
    int height = BitmapOrg.getHeight();
    int newWidth = 90;
    int newHeight = newWidth * height / width;

    // calculate the scale
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;

    // create a matrix for the manipulation
    Matrix matrix = new Matrix();
    // resize the Bitmap
    matrix.postScale(scaleWidth, scaleHeight);
    // if you want to rotate the Bitmap
    matrix.postRotate(-45);

    // recreate the new Bitmap
    Bitmap resizedBitmap = Bitmap.createBitmap(BitmapOrg, 0, 0,
                                               width, height, matrix, true);

    // make a Drawable from Bitmap to allow to set the Bitmap
    // to the ImageView, ImageButton or what ever
    return new BitmapDrawable(resizedBitmap);

  }
  }

これで、あなたのイメージをあなたのサイズで取得できます:)

何かバグがあれば私を元に戻します..

于 2013-02-02T17:38:36.523 に答える