需求:
点击“turn left”,图片往左旋转;
点击“turn right”图片往右旋转;
效果:
代码:
public class MainActivity extends Activity {
private Button mButtonTurnLeft;
private Button mButtonTurnRight;
private TextView mTextView;
private ImageView mImageView;
private int scaleTimes;
private int scaleAngle;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButtonTurnLeft = (Button)findViewById(R.id.button1);
mButtonTurnRight = (Button)findViewById(R.id.button2);
mTextView = (TextView)findViewById(R.id.textView1);
mImageView = (ImageView)findViewById(R.id.imageView1);
scaleTimes = 4;
scaleAngle =0;
final Bitmap mySourceBmp =
BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
final int widthOrig = mySourceBmp.getWidth();
final int heightOrig = mySourceBmp.getHeight();
mImageView.setImageBitmap(mySourceBmp);
mButtonTurnLeft.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
scaleAngle--;
if(scaleAngle < -5)
{
scaleAngle = -5;
}
int newWidth = widthOrig *scaleTimes;
int newHeight = heightOrig * scaleTimes;
float scaleWidth = ((float)newWidth)/widthOrig;
float scaleHeight = ((float)newHeight)/heightOrig;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
matrix.setRotate(5*scaleAngle);
Bitmap resizeBitmap =
Bitmap.createBitmap(mySourceBmp,0,0, widthOrig,heightOrig,matrix,true);
BitmapDrawable myNewBitmapDrawable =
new BitmapDrawable(resizeBitmap);
mImageView.setImageDrawable(myNewBitmapDrawable);
mTextView.setText(Integer.toString(5*scaleAngle));
}
});
mButtonTurnRight.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
scaleAngle++;
if(scaleAngle > 5)
{
scaleAngle = 5;
}
int newWidth = widthOrig *scaleTimes;
int newHeight = heightOrig * scaleTimes;
float scaleWidth = ((float)newWidth)/widthOrig;
float scaleHeight = ((float)newHeight)/heightOrig;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
matrix.setRotate(5*scaleAngle);
Bitmap resizeBitmap =
Bitmap.createBitmap(mySourceBmp,0,0, widthOrig,heightOrig,matrix,true);
BitmapDrawable myNewBitmapDrawable =
new BitmapDrawable(resizeBitmap);
mImageView.setImageDrawable(myNewBitmapDrawable);
mTextView.setText(Integer.toString(5*scaleAngle));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
重点:
1.修改ImageView内的图片的方式:
setImageBitmap(Bitmap);
setImageDrawable(BitmapDrawable);
2.Bitmap的两种生成方式:
BitmapFactory.decodeResource();需要id号
Bitmap.createBitmap():需要已有bitmap和matrix;
问题:
1.imageView不能修改图片的尺寸?
2.为什么后面要用setImageDrawable来设置,不再次用setImageBitmap呢?