我在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);
}
});
这段代码可能会对您有所帮助,这很容易说明...
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);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句