gpt4 book ai didi

android - 在android中使用seekBar旋转图像

转载 作者:行者123 更新时间:2023-11-29 00:08:13 26 4
gpt4 key购买 nike

我有以下代码来旋转图像,但是当我拖动 seekBar 时,它会在旧图像上创建一个新位图(它应该旋转旧图像而不是创建新图像),有人可以帮我解决这个问题吗.?我已经访问了我的旧问题,但没有人为我解决这个问题

公共(public)类 MainActivity 扩展 Activity 实现 OnSeekBarChangeListener {

ImageView iv_image;
SeekBar seekbar;
Bitmap source;
float angle = 0;
Button buttonClick;
Bitmap rotatedImage;
static Matrix matrix;
Matrix m1 ;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
buttonClick = (Button) findViewById(R.id.bt);
buttonClick.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
angle += 90;

iv_image.buildDrawingCache();
source = iv_image.getDrawingCache();
rotatedImage = rotateImage(source, angle);
iv_image.setImageBitmap(rotatedImage);
}
});
}

void init() {
iv_image = (ImageView) findViewById(R.id.iv_image);
seekbar = (SeekBar) findViewById(R.id.seekbar);
seekbar.setOnSeekBarChangeListener(this);
// seekbar.setOnSeekBarChangeListener((OnSeekBarChangeListener) this);

}

public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub

angle = progress;
iv_image.buildDrawingCache();
source = iv_image.getDrawingCache();
rotatedImage = rotateImage(source, angle);
iv_image.setImageMatrix(null);
iv_image.setImageBitmap(rotatedImage);
}

public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub

}

public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub

}

public static Bitmap rotateImage(Bitmap sourceImage, float angle) {
matrix = new Matrix();
matrix.postRotate(angle);
return Bitmap.createBitmap(sourceImage, 0, 0, sourceImage.getWidth(),
sourceImage.getHeight(), matrix, true);

}

最佳答案

试试这个:

public static void rotateImage(float angle) {
matrix = new Matrix();
matrix.postRotate(angle);
imageView.setImageMatrix(matrix);
imageView.invalidate();
}

这是您的接口(interface)实现:

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
angle = progress;
rotateImage(angle);
}

通过这种方式,您可以在 ImageView 中旋转 Bitmap,这样效率更高。

您甚至可以重用 Matrix 对象,方法是将其设为私有(private)成员并在旋转后调用 imageView.invalidate() 以优化您的代码。

关于android - 在android中使用seekBar旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32230587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com