1

我正在android中制作一个应用程序,只要单击旋转按钮90,180,270和360度,就必须旋转图像。在纵向和横向模式下,旋转必须相同。我是 Android 编程的初学者,我有 Java 的基本知识。请尽快帮助我。

我使用的代码如下。我只能将它旋转 90 度一次。它如何继续下去?

btn_rotate = (ImageButton) findViewById(R.id.btn_rotate); btn_rotate.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Bitmap bmap = BitmapFactory.decodeResource(getResources(), R.drawable.about_us_ipad_p);
            Display d = getWindowManager().getDefaultDisplay();
            @SuppressWarnings("deprecation")
            int x = d.getWidth();
            @SuppressWarnings("deprecation")
            int y = d.getHeight();
            ImageView imgView = (ImageView) findViewById(R.id.imgViewEdit_Pic);
            Bitmap scaledBmap = Bitmap.createScaledBitmap(bmap, y, x, true);
            Matrix matrix = new Matrix();
            matrix.postRotate(90, 180, 270);
            Bitmap rotatedBmap = Bitmap.createBitmap(scaledBmap,0,0,scaledBmap.getWidth(),scaledBmap.getHeight(),matrix,true);
            imgView.setImageBitmap(rotatedBmap);

        }
    });
4

3 回答 3

2

这段代码可能会对您有所帮助,而且它是不言自明的......

public class TestActivity extends Activity {
    private int rotation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (savedInstanceState != null) {
            rotation = savedInstanceState.getInt("ANGLE");
        }
        final ImageView imageView = (ImageView) findViewById(R.id.imageView);
        final Button button = (Button) findViewById(R.id.iv_icon);
        DisplayMetrics metrics = getResources().getDisplayMetrics();
        final int width = metrics.widthPixels;
        final int height = metrics.heightPixels;
        final Bitmap imageBitmap = BitmapFactory.decodeResource(
                getResources(), R.drawable.image1);
        final Bitmap scaledBitmap = Bitmap.createScaledBitmap(imageBitmap, width, height, true);
        imageView.setImageBitmap(getRotatedBitmap(scaledBitmap));
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                rotation += 90;
                rotation %= 360;
                Bitmap bitmap = getRotatedBitmap(scaledBitmap);
                imageView.setImageBitmap(bitmap);
            }
        });
    }

    private Bitmap getRotatedBitmap(Bitmap bitmap) {
        if (rotation % 360 == 0) {
            return bitmap;
        }
        Matrix matrix = new Matrix();
        matrix.postRotate(rotation, bitmap.getWidth() / 2,
                bitmap.getHeight() / 2);
        return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
                bitmap.getHeight() / 2, matrix, true);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        outState.putInt("ANGLE", rotation);
        super.onSaveInstanceState(outState);
    }
}
于 2013-11-11T09:46:44.823 回答
1
yourimage.setRotation(yourimage.getRotation() + 90);
于 2015-10-03T10:57:15.957 回答
0

在清单文件中,像这样锁定屏幕方向:

android:screenOrientation="portrait"

或者

android:screenOrientation="landscape"
于 2013-11-11T09:35:06.600 回答