0

画像を含む ImageView があります。この画像はボタンをクリックすると回転しますが、時々小さくなったり、元のサイズに戻ったりします。何が原因なのかわかりません。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    //tablelayout here

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" 
        android:layout_centerVertical="true"
        android:orientation="vertical" >
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:maxWidth="200dp" 
        android:maxHeight="200dp"
         /> 
    </LinearLayout>
</RelativeLayout>

初期設定:

 iv = (ImageView)findViewById(R.id.imageView1);
        int id = getResources().getIdentifier("landolt", "drawable", getPackageName());
        iv.setImageResource(id);

        myImg = BitmapFactory.decodeResource(getResources(), R.drawable.landolt);
        matrix = new Matrix();

        size = 200;

        randomize = new Random();
        random = randomize.nextInt(8) + 1;
        rotate = getAngle(random);  //function created by me
        matrix.postRotate(rotate);
        rotatedBitmap = Bitmap.createBitmap(myImg, 0, 0, myImg.getWidth(), myImg.getHeight(), matrix, true);
        iv.setImageBitmap(rotated);

したがって、画像は回転し、コードのサイズは変更されません。

ボタンクリック時のローテーション:

                btn1.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (rotate == -90)
                        {
                          //rotate back to original direction
                            old_rotate = -rotate;
                            matrix.postRotate(old_rotate);
                          //next rotation
                            random = randomize.nextInt(8) + 1;
                            rotate = getAngle(random);
                            matrix.postRotate(rotate);
                            rotatedBitmap = Bitmap.createBitmap(myImg, 0, 0, myImg.getWidth(), myImg.getHeight(), matrix, true);
                            iv.setLayoutParams(new LinearLayout.LayoutParams(size, size));
                            iv.setImageBitmap(rotated);
                        }
                    }
                    });

アクティビティを起動すると、画像が元のサイズで表示されますが、小さい場合もあります。ボタンをクリックすると、画像が元のサイズよりも小さくなったり大きくなったりします。

何が起こっている?

4

1 に答える 1

1

画像のサイズが変化し続ける理由がわかりました。回転すると、imageViewに十分な場所がありません。このリンクで問題の解決策を見つけました。

于 2012-09-20T17:42:40.287 に答える